打印
[STM32F4]

stm32f4,中断服务函数中调用i2c程序的问题

[复制链接]
1161|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qq8605578|  楼主 | 2016-3-24 23:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用的定时器3的中断,在中断服务函数中调用i2c采集程序,然后printf发送给上位机。但是总是卡在i2c里面出不去。单独拿到主函数里面去采集的话是没有问题的,请教大神是啥原因!
单独在中断服务函数中printf也是没问题的。i2c的延时是用的滴答定时器。
沙发
airwill| | 2016-3-25 08:54 | 只看该作者
i2c的延时是用的滴答定时器。估计这就是关键所在. 由于滴答定时器的中断优先级并不高于定时器中断, 在定时中断里不退出来, 就没有滴答定时器中断服务的执行。

使用特权

评论回复
板凳
杨爱林林| | 2016-3-25 09:56 | 只看该作者
i2c延时最好还是用nop指令来实现

使用特权

评论回复
地板
xmshao| | 2016-3-25 10:44 | 只看该作者
估计跟中断优先级安排有关,如果TIMER中断高,TICK中断级低,而i2C又要等TICK的计数变化,难免发生死等了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

74

帖子

0

粉丝