stm32串口中断处理函数为什么不能写进延时函数?

2019-07-21 05:20发布

今天刚学串口通信,跟着正点原子视频写了一个最简单的串口中断服务函数,接受数据后再发送。我在串口中断函数里面加了一个LED闪灭的语句想作为提示,用了延时函数,结果发送出去后电脑没接收到发回来的。就很奇怪了,我弄了很久才发现得把延时函数去掉才可以成功。所以这是为什么呀?(我看了外部中断的源代码里面可以用延时函数呀)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
csmjmcc
1楼-- · 2019-07-21 12:30
假设,你是一个切菜的机器,有菜料送来就做切菜动作。你在切菜动作过程中,加延时,即送来的菜料到达,你刀切下后延时5S,那么,你可能会错过第二个送来的菜料(假设3秒送一个菜料)。如此延续,你不会完成切菜任务。
啦啦啦德玛西亚
2楼-- · 2019-07-22 04:47
你是使用了嘀嗒定时器了吗?systick好像属于内核的操作,高于USART;有时间你可以试试用定时器做个延时试试,优先级分别高于USART,看看什么效果,记的结果发出来啊
edmund1234
3楼-- · 2019-07-21 09:04
不知道你用的delay_ms是什么东东, 但根据你说情况, 就是在delay_ms执行时, cpu就不管其它任何事情(中断除外), 这时候PC发回几个字节给你, 会漏掉那是必然的, 能收到只才是奇迹呢
这类型的delay_ms真的要戒掉, 它不适合在现实的项目中存在。
美丽的时光机器
4楼-- · 2019-07-21 15:19
 精彩回答 2  元偷偷看……
美丽的时光机器
5楼-- · 2019-07-21 21:15
数据还没来得及取出来,然后新的数据又过来了,这样串口就过载了然后溢出中断
DongInker
6楼-- · 2019-07-22 01:40
延时是不是使用定时中断计时的?
如果串口中断优先级高于延时中断计时,那么延时中断计时永远不会计时了,导致无限等待

一周热门 更多>