互斥量操作,关中断时间长

发布于 2020-08-18 09:53:57

感觉rtthread中的互斥量关中断时间长,使用SMT32F429的MCU,应用要求200us读一次外部SPI接口的AD值,并做一些滤波,记录,比对处理。程序里还有其他一些应用,发现互斥量用得多了,就保证不了200us一次的执行,任务优先级已经很高了。调试后感觉是互斥量获取的时候关中断时间比较久,有遇到这个问题的吗,不知道是我使用不当还是真的就是关中断时间会长。

查看更多

关注者
1
被浏览
296
aozima
aozima 2020-08-18
拒绝白嫖,拒绝键盘侠!

SPI总线有mutex,你SPI上面并联了几个器件?
如果有多个,会受到其它器件的影响,建议独立占用1个。

读取AD值的线程,线程流程是怎样的?
“保证不了”时,时间是多少us?测试方法是怎样的?

我来设计这个应用的话,看200us的精度要求,如果允许200-205us间隔抖动,只要没有累积误差的话。
线程中开一个硬件定时器,200us一次中断,释放信号量或事件,让线程来读取。
SPI可以使用RT-Thread的SPI驱动,但不与SPI FLASH这些复用。

如果要求200us抖动在1us内,就直接在硬件timer的ISR中,直接操作SPI来读取,不走标准驱动和线程。

1 个回答

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览