STM32F429(HAL库)_USART串口发送&接收(使用STM32CubeMX)

一、HAL库相关函数

       1、串口发送/接收函数

                HAL_UART_Transmit();串口轮询模式发送,使用超时管理机制

                HAL_UART_Receive();串口轮询模式接收,使用超时管理机制

                HAL_UART_Transmit_IT();串口中断模式发送

                HAL_UART_Receive_IT();串口中断模式接收

                HAL_UART_Transmit_DMA();串口DMA模式发送

                HAL_UART_Transmit_DMA();串口DMA模式接收

        2、串口中断函数

             HAL_UART_TxHalfCpltCallback();一半数据发送完成时调用

                HAL_UART_TxCpltCallback();数据完全发送完成后调用

                HAL_UART_RxHalfCpltCallback();一般数据接收完成时调用

                HAL_UART_RxCpltCallback();数据完全接受完成后调用

                HAL_UART_ErrorCallback();传输出现错误时调用


二、程序思路

          使用中断控制方式,当I/O操作完成时,输入输出设备控制器通过中断请求线向处理器发出中断信号,处理器收到中断信号之后,转到中断处理程序,对数据传送工作进行相应的处理。


三、工程模板生成

        1、打开STM32CubeMX,点击New Project

STM32F429(HAL库)_USART串口发送&接收(使用STM32CubeMX)_第1张图片

2、选择单片机对应的参数,这里使用的是STM32F429IGTx,选择后点击OK。

STM32F429(HAL库)_USART串口发送&接收(使用STM32CubeMX)_第2张图片

3、创建完成后在左边找到并打开RCC选项卡进行时钟使能,将高数外部时钟(HSE)的时钟源选择为晶体振荡器

STM32F429(HAL库)_USART串口发送&接收(使用STM32CubeMX)_第3张图片

4、在窗口上方的选项卡找到Clock Configuration ,进行时钟源的选择与倍频/分频系数的设置

STM32F429(HAL库)_USART串口发送&接收(使用STM32CubeMX)_第4张图片

5、由于之前使能了HSE,故在Clock Configuration中可用。这里将PLL时钟源选择为HSE,系统时钟源(SYSCLK)设置为PLLCLK,分频与倍频系数如图

STM32F429(HAL库)_USART串口发送&接收(使用STM32CubeMX)_第5张图片

6、返回之前设置RCC的页面(pinout),找到USART1,使能为异步通讯(Asynchronous)


7、此时在Configuration选项卡中可以找到USART1,点击进行进一步的设置

STM32F429(HAL库)_USART串口发送&接收(使用STM32CubeMX)_第6张图片

8、点击进入后,在Parameter选项卡中设置波特率(Baud Rate)为115200 Bits/s,字长(Word Length)为 8bits,无奇偶检验(Parity),停止位(Stop Bits)为1,其他选项保持默认。

STM32F429(HAL库)_USART串口发送&接收(使用STM32CubeMX)_第7张图片

9、因为该程序使用的是中断处理,所以还需要打开NVIC Settings页面,使能中断

STM32F429(HAL库)_USART串口发送&接收(使用STM32CubeMX)_第8张图片

10、设置完毕后点击Apply,再点击OK关闭页面。在窗口左上角的Project选项卡中点击Generate Code 来创建模板

STM32F429(HAL库)_USART串口发送&接收(使用STM32CubeMX)_第9张图片

11、分别填入工程名,工程输出目录,所使用的编译器(这里使用MDK5)

STM32F429(HAL库)_USART串口发送&接收(使用STM32CubeMX)_第10张图片

12、生成成功


13、点击Open Project打开生成好的模板,在Application/User文件夹下找到main.c。

STM32F429(HAL库)_USART串口发送&接收(使用STM32CubeMX)_第11张图片


对工程模板生成方法的介绍到此为止,接下来是对代码的介绍


四、程序编写

         1、首先在main函数前定义两个数组变量

uint8_t aTxStartMessages[] = "\r\n******UART commucition using IT******\r\nPlease enter 10 characters:\r\n";
uint8_t aRxBuffer[20];
         2、在main函数中添加两个语句通过串口中断发送aTxStartMessage数组的数据和接收数据10个字符,保存在数组aRxBuffer中。

	HAL_UART_Transmit_IT(&huart1 ,(uint8_t*)aTxStartMessages,sizeof(aTxStartMessages)); //sizeof()可读取目标长度
	HAL_UART_Receive_IT(&huart1,(uint8_t*)aRxBuffer,10);
               

         3、在main.c文件后面添加中断接收完成函数,将接收到的数据又通过串口发送回去。

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	UNUSED(huart);
	HAL_UART_Transmit(&huart1,(uint8_t*)aRxBuffer,10,0xFFFF);//(uint8_t*)aRxBuffer为字符串地址,10为字符串长度,0xFFFF为超时时间
}
         4、编译后下载至开发板 ,进行复位后通过串口监视器可看到串口发送的aTxStarMessages字符串,向串口发送10个字节的数据后可看到串口将所接收数据又发送回来(注意由于HAL_UART_Receive_IT()函数中的字节参数设置为了10,故只有发送10个字节的字符串才会被串口返回,且由于while循环中无语句,该程序只能执行一次)
STM32F429(HAL库)_USART串口发送&接收(使用STM32CubeMX)_第12张图片

STM32F429(HAL库)_USART串口发送&接收(使用STM32CubeMX)_第13张图片

你可能感兴趣的:(STM32CubeMX,USART串口通讯,HAL库,STM32F429)