一,配置
首先基于cubemax进行i/o口,串口初始化,中断初始化的相关配置。
从赛点资料包中的产品手册里面的原理图可以找到,PA9和PA10两个引脚分别连接串口的TX和RX
所以要对这两个引脚的模式进行配置
1)将其配置成串口模式,并将其配置为开漏输出,其余参量不变。
2)对串口模式参数进行相关配置,模式选择成奇偶校验,再进行波特率的配置,其余参数默认即可。
3)对串口中断和滴答定时器中断的优先级进行配置
4)将生成的代码移植到自己所建立的工程文件中
二,发送数据
1,串口配置函数
2,硬件层的i/o配置函数
3,发送数据函数
基于滴答定时器每500ms发送一次数据,注意HAL_UART_Transmit函数的入口参数,第一个参数代表使用的是串口一,第二个是发送的内容,第三个是发送的字节大小,最后一个是速率。
int counter = 0;
char str[40];
三,数据接收
1,将配置好的中断函数cv到it.c文件中
2在while前调用底层的接收函数
HAL_UART_Receive_IT(&huart1, &rx_buffer, 1);
别忘了定义存储数据的变量,unsigned char rx_buffer;
3,定义接收函数
这里要特别注意串口中断和滴答定时器的抢占中断优先级问题,要不会进不去延时。要特别注意这个回调函数才是真正写中断执行程序的地方。
要是程序一直报错大概率是配置的问题,可以去hal_config.h文件中UART是否被注释了。
#define TICK_INT_PRIORITY (0) 这个文件中这个语句可以对滴答定时器的抢占优先级进行配置