Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
00001 /* mbed library for using USART DMA in STM32F401RE. 00002 * Copyright (c) 2015 Match 00003 * 00004 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 00005 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 00006 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 00007 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 00008 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 00009 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 00010 * THE SOFTWARE. 00011 */ 00012 00013 #include "mbed.h" 00014 00015 uint8_t data[] = "Hello.\n" 00016 "How are you?\n" 00017 "abcdefghijklmnopqrstuvwxyz\n" 00018 "ABCDEFGHIJKLMNOPQRSTUVWXYZ\n" 00019 "See you.\n\n"; 00020 00021 DMA_HandleTypeDef usartTxDma; 00022 USART_HandleTypeDef usart; 00023 00024 void Init(); 00025 00026 int main() { 00027 Init(); 00028 00029 HAL_USART_Transmit_DMA(&usart, data, sizeof(data)); 00030 00031 while(1) { 00032 00033 } 00034 } 00035 00036 void Init() { 00037 // DMA 00038 // USART2 TX is DMA1 channel 4 stream 6. Look at table 28 in STM32F401 reference manual. 00039 __DMA1_CLK_ENABLE(); 00040 usartTxDma.Instance = DMA1_Stream6; 00041 usartTxDma.Init.Channel = DMA_CHANNEL_4; 00042 usartTxDma.Init.Direction = DMA_MEMORY_TO_PERIPH; 00043 usartTxDma.Init.PeriphInc = DMA_PINC_DISABLE; 00044 usartTxDma.Init.MemInc = DMA_MINC_ENABLE; 00045 usartTxDma.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; // 8 bit 00046 usartTxDma.Init.MemDataAlignment = DMA_PDATAALIGN_BYTE; // 8 bit 00047 usartTxDma.Init.Mode = DMA_NORMAL; 00048 usartTxDma.Init.Priority = DMA_PRIORITY_VERY_HIGH; 00049 usartTxDma.Init.FIFOMode = DMA_FIFOMODE_DISABLE; 00050 HAL_DMA_Init(&usartTxDma); 00051 00052 // USART pin 00053 __GPIOA_CLK_ENABLE(); 00054 GPIO_InitTypeDef usartTxd; 00055 usartTxd.Pin = GPIO_PIN_2; 00056 usartTxd.Mode = GPIO_MODE_AF_PP; 00057 usartTxd.Pull = GPIO_NOPULL; 00058 usartTxd.Speed = GPIO_SPEED_HIGH; 00059 usartTxd.Alternate = GPIO_AF7_USART2; 00060 HAL_GPIO_Init(GPIOA, &usartTxd); 00061 00062 // USART 00063 __USART2_CLK_ENABLE(); 00064 usart.Init.BaudRate = 921600; 00065 usart.Init.WordLength = USART_WORDLENGTH_8B; 00066 usart.Init.StopBits = USART_STOPBITS_1; 00067 usart.Init.Parity = USART_PARITY_NONE; 00068 usart.Init.Mode = USART_MODE_TX; // transmit only mode 00069 usart.Instance = USART2; 00070 usart.hdmatx = &usartTxDma; 00071 HAL_USART_Init(&usart); 00072 }
Generated on Thu Aug 4 2022 09:10:00 by
1.7.2