×
单片机 > 单片机程序设计 > 详情

基于HAL库处理UART中断并接收串口传入的数据

发布时间:2020-05-26 发布时间:
|

研究了下HAL库,在百度上面找发现很多UART串口接收,串口中断处理是从USART那边直接抄过来的,使用的是标准库一类的,在用HAL库配置的工程中完全没法使用,另辟蹊径,通过在文档中翻找HAL打头的函数发现已经有十分简单的封装了。


正确的获取接收数据的方法是:


1.在进入中断后使用HAL库函数中的HAL_UART_GetState函数确定UART的接收是否结束,这个函数也可以判断发送数据是否忙碌等(HAL_UART_BUSY_xx)


2.处理缓存中的数据,提取保存到自定义的变量数组中,用HAL_UART_Receive函数实现


3.重置中断标志位


这一个函数演示了UART4如何正确的接收数据,再发送回去,平台是STM32F107


void UART4_IRQHandler(void)

{

uint8_t res[50];

unsigned int i;//定义一个变量,在后面以为用

 HAL_GPIO_TogglePin(GPIOD,GPIO_PIN_3);

while(HAL_UART_GetState(&huart4) == HAL_UART_STATE_BUSY_RX)

{}

  HAL_UART_Receive(&huart4,res,strlen(res),0xFFFF);

  HAL_UART_Transmit(&huart4,res,strlen(res),0xFFFF);

                                            

 HAL_UART_IRQHandler(&huart4);

    __HAL_UART_ENABLE_IT(&huart4, UART_IT_ERR);

    __HAL_UART_ENABLE_IT(&huart4, UART_IT_RXNE);

 

}



关键字:HAL库  UART中断  串口  数据 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
基于arm的指纹识别门禁系统是如何设计的