问题描述:有两个任务调用读取AD7606的接口,还有一个任务里开始定时器(30hz,一个周期33.3ms)中断采集AD,也是调用同一个接口,导致读取到的AD值偏大很多?
导致AD值偏大的原因:可能是产生定时器中断读取AD值,使用中断前的保存的栈(某个任务也在读取AD值)发生了变化?
我的解决方法是:在读取AD值得接口前后加临界代码保护,taskENTER_CRITICAL();和taskEXIT_CRITICAL() 。
试过freertos信号量与互斥锁,好像还是存在问题,请问各位大佬有什么好的解决方法吗? |