蓝桥杯省赛模板构建——uart

打开CubeMX

串口的发送是跟调试器放一起的,通过PA9和PA10来接收发送

蓝桥杯省赛模板构建——uart_第1张图片

选择异步通讯

蓝桥杯省赛模板构建——uart_第2张图片

波特率配置为9600

蓝桥杯省赛模板构建——uart_第3张图片

打开串口中断,因为单片机接收数据需要用到中断

蓝桥杯省赛模板构建——uart_第4张图片

生成代码

添加底层驱动代码

蓝桥杯省赛模板构建——uart_第5张图片

打开在main.h打开uart定义

蓝桥杯省赛模板构建——uart_第6张图片

uart时钟配置,由于uart是用PCLK时钟,所以在bsp_rcc.c中需要添加PCLK时钟初始化

蓝桥杯省赛模板构建——uart_第7张图片

蓝桥杯省赛模板构建——uart_第8张图片

复制串口初始化代码并在main.c和bsp_uart.h里声明

蓝桥杯省赛模板构建——uart_第9张图片

测试:单片机发送数据给电脑,电脑用串口小助手接收数据

句柄结构体定义

蓝桥杯省赛模板构建——uart_第10张图片

编写串口处理函数Uart_Proc();并在主函数中声明

定义变量str来保存发送的数值,counter用来计数,每过一秒发送hello:counter值

蓝桥杯省赛模板构建——uart_第11张图片

蓝桥杯省赛模板构建——uart_第12张图片

搜索关键词Transmit在uart底层驱动库里查找

HAL_UART_Transmit(串口几, 发送的内容, 内容字长, 多久发送完)

打开串口小助手,配置好串口几(在设备管理器里查看)和波特率9600

测试:电脑发送数据给单片机,单片机接收数据

当电脑给单片机发送数据时,就会产生串口中断,所以要进入it.c并且调用中断回调函数

找到源码里的串口中断函数

蓝桥杯省赛模板构建——uart_第13张图片

在it.c里声明uart.h文件,这样就能使用huart1拓展变量

蓝桥杯省赛模板构建——uart_第14张图片

编写中断回调函数,回调函数一般在底层.h库里最下端

当电脑通过串口助手发送数据给单片机时,LED全亮->延时500毫秒->LED全灭

蓝桥杯省赛模板构建——uart_第15张图片

当我们发送完一次数据时发现LED灯没亮,因为滴答定时器的中断优先级低于串口的中断优先级

修改滴答定时器中断优先级为0(最高级)

main.c->HAL_Init();->TICK_INT_PRIORITY

蓝桥杯省赛模板构建——uart_第16张图片

在uart.c里修改串口中断优先级为1(低于滴答定时器)

蓝桥杯省赛模板构建——uart_第17张图片

完成串口中断接收测试

整合串口的中断与接收

当我们用电脑点击发送数据时,单片机接收数据并执行以下代码,灯由亮到灭并在串口助手输出数据

蓝桥杯省赛模板构建——uart_第18张图片

你可能感兴趣的:(单片机,嵌入式硬件)