HAL库的串口中断函数,敢不敢再庞大一点?

2019-08-13 23:06发布

每次中断,收到一个字节,记住是每次,执行一遍HAL_UART_IRQHandler(&huart1),
这个里面循环嵌套的 if 结构要把你遍历得怀疑人生。
要兼容性不要效率?我就想收数据而已,不是说中断函数要越短越快越好吗?

有没有大神知道运行一次这个HAL_UART_IRQHandler(&huart1),要花多久的时间?我115200的波特率有丢失数据啊
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
八度空间
1楼-- · 2019-08-14 03:55
不想用就操作寄存器吧
openedvadmin
2楼-- · 2019-08-14 07:51
 精彩回答 2  元偷偷看……
八度空间
3楼-- · 2019-08-14 12:09
openedvadmin 发表于 2017-9-21 22:38
是的。HAL库的串口处理比较复杂。。。而且局限性比较大。。。。
所以不建议调用HAL_UART_IRQHandler。
直 ...

还是标准库用的爽,没辣么多坑,即使也很快可以排除,不用跳来跳去的
newbuff
4楼-- · 2019-08-14 16:15
openedvadmin 发表于 2017-9-21 22:38
是的。HAL库的串口处理比较复杂。。。而且局限性比较大。。。。
所以不建议调用HAL_UART_IRQHandler。
直 ...

直接写逻辑?到处是陷阱,防不胜坑啊。
用HAL_UART_Transmitt _DMA发送,结果这厮在发送完了之后竟然打开UART_IT_TC中断,通过这个TC中断调用“发送完成回调函数”,结束发送。
不用HAL_UART_IRQHandle,谁TM知道要去关掉这个IT_TC的位的?
我开始还以为是CubeMX的问题,浪费时间啊
newbuff
5楼-- · 2019-08-14 20:51
八度空间 发表于 2017-9-21 22:54
还是标准库用的爽,没辣么多坑,即使也很快可以排除,不用跳来跳去的

之前用标准库从来没有用过DMA,之前看了下没大明白,也没深究。
用了CubeMX后,发现DMA封装很到位,直接拿来用就可以,不用写一大堆代码。

所以也是有好处的。
操作系统
6楼-- · 2019-08-15 01:56
直接DMA就好了.不用CPU来操心了.

一周热门 更多>