完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
查看HAL库UART文件,发现UART中断里面的处理都是根据UART传的一个全局结构变量来处理的。void HAL_UART_IRQHandler(UART_HandleTypeDef *huart);
我要处理UART的发送和接收。发送部分我可以理解,接收部分就让人郁闷了。 static HAL_StatusTypeDef UART_Receive_IT(UART_HandleTypeDef *huart) if(--huart->RxXferCount == 0) //这个也是全局结果传过来的。 { __HAL_UART_DISABLE_IT(huart, UART_IT_RXNE); /* Check if a transmit process is ongoing or not */ if(huart->State == HAL_UART_STATE_BUSY_TX_RX) { huart->State = HAL_UART_STATE_BUSY_TX; } else { /* Disable the UART Parity Error Interrupt */ __HAL_UART_DISABLE_IT(huart, UART_IT_PE); /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */ __HAL_UART_DISABLE_IT(huart, UART_IT_ERR); huart->State = HAL_UART_STATE_READY; } HAL_UART_RxCpltCallback(huart); return HAL_OK; } 这个一定要接收固定数目的字符后才会关闭接收中断,如果发送10个字符,接收10个字符,这样处理很OK。但是发送是可以确定的, 接收的个数是不确定的。官方的库这么死板吗?还是我理解错了。请大侠帮忙分析下,谢谢! |
|
相关推荐
8个回答
|
|
|
是的,你理解的没错,HAL库就是这么强势。串口接收数据个数不固定时可以试试空闲中断的方式。
|
|
|
|
|
|
对HAL库表示无爱,不够灵活
|
|
|
|
|
|
意思是我要自己在中断里面像以前库那样处理吗? |
|
|
|
|
|
您可以没接收一个中断啊,然后放到缓存里,然后看你怎么处理喽
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
谢谢大家的回复!
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2810 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2420 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2288 浏览 0 评论
2404 浏览 1 评论
1643 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 15:48 , Processed in 1.072831 second(s), Total 86, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2794