freertos任务与中断同步问题

[复制链接]
1253|1
 楼主| taizifei 发表于 2020-8-31 10:28 | 显示全部楼层 |阅读模式
问题描述:有两个任务调用读取AD7606的接口,还有一个任务里开始定时器(30hz,一个周期33.3ms)中断采集AD,也是调用同一个接口,导致读取到的AD值偏大很多?

导致AD值偏大的原因:可能是产生定时器中断读取AD值,使用中断前的保存的栈(某个任务也在读取AD值)发生了变化?

我的解决方法是:在读取AD值得接口前后加临界代码保护,taskENTER_CRITICAL();和taskEXIT_CRITICAL() 。
试过freertos信号量与互斥锁,好像还是存在问题,请问各位大佬有什么好的解决方法吗?
ayb_ice 发表于 2020-8-31 10:54 | 显示全部楼层
多任务调用ADC,首先要满足互斥,才可能读到正确结果

1

主题

1

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部