当前位置: 首页> 教育> 锐评 > 长期供应网站设计制作_建设局工作总结_百度下载安装app_最新seo网站优化教程

长期供应网站设计制作_建设局工作总结_百度下载安装app_最新seo网站优化教程

时间:2025/7/11 0:57:10来源:https://blog.csdn.net/qq_53206057/article/details/146427397 浏览次数:0次
长期供应网站设计制作_建设局工作总结_百度下载安装app_最新seo网站优化教程

下面给出一个清晰的示例,帮助你理解这两个函数的实际应用:


方式一:直接使用底层中断宏(__HAL_UART_ENABLE_IT

这种方式更为基础灵活,需要你手动编写中断处理函数:

步骤一:初始化UART后启用RXNE中断

// UART初始化之后开启RXNE中断
__HAL_UART_ENABLE_IT(&huart1, UART_IT_RXNE);// 开启NVIC中断(USART1)
HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(USART1_IRQn);

步骤二:实现USART中断处理函数,手动接收数据

uint8_t received_byte;void USART1_IRQHandler(void)
{if (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_RXNE)) {received_byte = (uint8_t)(huart1.Instance->DR & 0xFF);  // 读取数据// 你可以在这里处理 received_byte,例如存入缓冲区或标记标志位}
}

说明
这种方法适合于单字节灵活接收的场景,每当收到一个字节,就会进入中断。


方式二:使用HAL库函数HAL_UART_Receive_IT

这种方式更高级一些,适合于接收一组数据:

步骤一:启动中断接收指定长度的数据(如接收5字节)

uint8_t dataRcvd[5];HAL_UART_Receive_IT(&huart1, dataRcvd, 5); // 一次接收5个字节

步骤二:实现HAL库的回调函数(自动触发)

// HAL_UART_Receive_IT接收完成自动调用该函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{if(huart->Instance == USART1){// 已经成功接收5个字节// 此时dataRcvd缓冲区中已经存放了收到的5个字节数据// 可以在这里处理数据// 若想继续接收下一次数据,需重新调用:HAL_UART_Receive_IT(&huart1, dataRcvd, 5);}
}

步骤三:实现USART中断函数(必须,调用HAL库IRQHandler)

void USART1_IRQHandler(void)
{HAL_UART_IRQHandler(&huart1); // 必须调用,触发回调函数
}

说明
这种方法适合固定长度数据的接收,例如特定协议的数据包传输。


两种方式适用场景对比:

方法使用场景适用情况
__HAL_UART_ENABLE_IT (手动底层方式)单字节实时处理,字节流灵活接收实时性高,灵活度高,适合自定义协议
HAL_UART_Receive_IT (HAL封装方式)接收固定长度数据(如数据帧、报文)编程方便,处理批量数据更简单

你可以根据你的实际需求选择更合适的一种方式来应用中断接收功能。

关键字:长期供应网站设计制作_建设局工作总结_百度下载安装app_最新seo网站优化教程

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: