打开CubeMX
串口的发送是跟调试器放一起的,通过PA9和PA10来接收发送
选择异步通讯
波特率配置为9600
打开串口中断,因为单片机接收数据需要用到中断
生成代码
添加底层驱动代码
打开在main.h打开uart定义
uart时钟配置,由于uart是用PCLK时钟,所以在bsp_rcc.c中需要添加PCLK时钟初始化
复制串口初始化代码并在main.c和bsp_uart.h里声明
测试:单片机发送数据给电脑,电脑用串口小助手接收数据
句柄结构体定义
编写串口处理函数Uart_Proc();并在主函数中声明
定义变量str来保存发送的数值,counter用来计数,每过一秒发送hello:counter值
搜索关键词Transmit在uart底层驱动库里查找
HAL_UART_Transmit(串口几, 发送的内容, 内容字长, 多久发送完)
打开串口小助手,配置好串口几(在设备管理器里查看)和波特率9600
测试:电脑发送数据给单片机,单片机接收数据
当电脑给单片机发送数据时,就会产生串口中断,所以要进入it.c并且调用中断回调函数
找到源码里的串口中断函数
在it.c里声明uart.h文件,这样就能使用huart1拓展变量
编写中断回调函数,回调函数一般在底层.h库里最下端
当电脑通过串口助手发送数据给单片机时,LED全亮->延时500毫秒->LED全灭
当我们发送完一次数据时发现LED灯没亮,因为滴答定时器的中断优先级低于串口的中断优先级
修改滴答定时器中断优先级为0(最高级)
main.c->HAL_Init();->TICK_INT_PRIORITY
在uart.c里修改串口中断优先级为1(低于滴答定时器)
完成串口中断接收测试
整合串口的中断与接收
当我们用电脑点击发送数据时,单片机接收数据并执行以下代码,灯由亮到灭并在串口助手输出数据