四叶草vs守护者 发表于 2017-3-8 17:41:19

UCOS 导致程序卡死

没系统的时候,轮流采集三路iic器件没问题,加了UCOS后,还是采三路,但是硬件上只接一路iic,能采集到正确的值,但是在硬件上将三路IIC器件同时接上,程序就只运行了一次,就卡死了,哪位坛友遇到过这种问题吗

tkggsai2008 发表于 2017-3-8 18:11:52

iic的时候把中断关掉

四叶草vs守护者 发表于 2017-3-8 18:13:06

tkggsai2008 发表于 2017-3-8 18:11
iic的时候把中断关掉

没用中断的

tkggsai2008 发表于 2017-3-8 18:32:26

四叶草vs守护者 发表于 2017-3-8 18:13
没用中断的

你用UCOS 怎么可能没中断呢

hushaoxin 发表于 2017-3-8 18:56:59

多半是被STM32的I2C坑了,二楼一语中的

四叶草vs守护者 发表于 2017-3-8 20:07:56

tkggsai2008 发表于 2017-3-8 18:32
你用UCOS 怎么可能没中断呢

有个时钟中断的

tkggsai2008 发表于 2017-3-9 08:47:59

硬件IIC读写的时候有一个while等待,等待应答。
而这个时候系统在等待之前切换的其他的任务了, 等再切回来的时候,应答已经过去了,而程序可能会一直等待,卡死。

四叶草vs守护者 发表于 2017-3-9 08:56:46

tkggsai2008 发表于 2017-3-9 08:47
硬件IIC读写的时候有一个while等待,等待应答。
而这个时候系统在等待之前切换的其他的任务了, 等再切回来 ...

我在采集之前是禁用了任务调度的,采集完成后才打开的任务调度的

技术宅 发表于 2017-6-15 14:16:01

根据我多年的经验,是用的STM32,并且还是用的STM32的官方IIC库, 并且在执行IIC操作的时候还没关中断。

ywlzh 发表于 2017-6-15 15:49:22

这可别怪ucos呀 任务调度就是那个样 要么适应它要么改造它

showcan 发表于 2017-6-26 15:19:07

基于操作系统时驱动总线型硬件要考虑任务调度的影响,情况复杂。
页: [1]
查看完整版本: UCOS 导致程序卡死