# stm32HAL库USART配置程序 **Repository Path**: zfqcode/bsp_hal_usart ## Basic Information - **Project Name**: stm32HAL库USART配置程序 - **Description**: 写这个系列的原因是,每次写新的项目的时候,一开始都要配置好些个东西,所以花了点时间,按自己的习惯写了份stm32初始化的程序,在CubeMX简单配置下就可以直接使用,方便快捷。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-05-25 - **Last Updated**: 2024-01-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # BSP_HAL_USART ​ 写这个系列的原因是,每次写新的项目的时候,一开始都要配置好些个东西,所以花了点时间,按自己的习惯写了份stm32初始化的程序,在CubeMX简单配置下就可以直接使用,方便快捷。 #### 功能: ​ 1、DMA读取/发送usart ​ 2、printf重定向 #### 配置 ​ 使用到串口,就在CubeMX的UserConstants里定义,然后直接使用相关函数即可。 #### 函数 ``` c void Usart_Init(void); //Usart 初始化 void Usart1_Send(uint8_t* dat,uint16_t Size); //Usart1 DMA发送 Size可以用 sizeof(dat) void Usart2_Send(uint8_t* dat,uint16_t Size); void Usart3_Send(uint8_t* dat,uint16_t Size); void Uart4_Send(uint8_t* dat,uint16_t Size); void Uart5_Send(uint8_t* dat,uint16_t Size); ``` #### 例: ​ usart1用于printf重定向,usart用于DMA读取数据 ##### 1、CubeMX配置 ​ usart1正常配置,usart2开启DMA,RxTx都配置成Normal模式 ![p2](./pic/p2.png) ​ 在UserConstants定义USART2_DMA 值为读取的数据长度 ![p1](./pic/p1.png) ##### 2、Keil程序 ``` c #include "bsp_hal_usart.h" static void Init() { Usart_Init(); } uint8_t Tx[]="DMA Send \n"; void app(void) { uint16_t i=0; Init(); while(1) { printf("%d\n",i); i++; Usart2_Send(Tx,sizeof(Tx)); HAL_Delay(1000); } } ``` ##### 3、效果 ​ usart1 printf ![p3](./pic/p3.png) ​ usart2 dma读取 ​ ![p4](./pic/p4.png) ​ usart2 发送效果 ![p5](./pic/p5.png)