前言
串口作为一个考试中考察频率较高的考点,其套路比较固定,因此值得我们仔细把握。本节课主要着眼于快速配置实现 串口收发与串口的中断。
CubeMX配置
选择串口2
配置异步收发模式
基本参数设置(波特率、校验位等等)
开启串口收发中断
Keil编程
串口的配置不难,因此重点集中在编程上,需要细心把握。
一、串口接收
由于我们不知道什么时候数据会被发送到我们的单片机上,因此,串口数据的接收主要是在中断中进行的。
首先我们要在串口初始化后,开启串口接收中断:
HAL_UART_Receive_IT(&huart2,Rx_Data,5);
第一个参数是串口的句柄
第二个参数*pData为接收的数据的存放地址,常用数组名称
第三个参数,Size:接收的数据的大小
每当串口接收到Size个数据就会完成接收,进入接收中断。
其次是中断回调函数:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{语句;HAL_UART_Receive_IT(&huart2,Rx_Data,5); //最后一定不要忘记添加这句话,要不然只能接收一次数据
}
特别注意:回调函数的结尾一定要再开启中断!要不然串口只会接收一次数据!
二、串口发送
串口发送不需要使用中断,因此比较简单,就是一句代码:
* @param huart UART handle. //函数句柄,例如&huart1 * @param pData Pointer to data buffer (u8 or u16 data elements). //要发送的数据地址,常为数组名* @param Size Amount of data elements (u8 or u16) to be sent. //发送的数据大小* @param Timeout Timeout duration. //发送有效时间HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
例句:
HAL_UART_Transmit(&huart2,str,strlen(str),500); //发送str数组内的内容
小结
目前串口的最基本使用总结来说就是:
CubeMX配置串口
打开串口中断
程序开头开启串口接收中断:HAL_UART_Receive_IT();
编写回调函数 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
编写发送函数 HAL_UART_Transmit();
后记
http://t.csdn.cn/SPA8y (关于串口收发异常)
https://blog.csdn.net/weixin_54358182/article/details/129645086?spm=1001.2014.3001.5501(关于字符串比较的技巧)