Freertos tick 不响应中断的解决方法

代码环境

babyos+freertos 

操作方法

通过 shell 操作eeprom 的写操作

问题现象

整个系统会卡在延时函数这里,卡的原因是rtos 的tick中断不响应了。

shell不响应外部命令 系统是正常运行的。

解决方法

成功的方法

        ms延时由依赖tick改为us的堵塞延时;

        这里改为堵塞延时的副作用是 系统会堵塞在这里,现在这个应用场景这样做是没问题的,因为我们再人为调参数。

失败的方法

        ms 延时改为rtos延时;

        这时候如果写入的是4个字节,正常运行;

        如果写入50个字节,系统就会卡死在

void vPortEnterCritical( void )

        分析:eeprom 的写操作 需要ms级别的延时,如果涉及到eeprom 的写操作中,会涉及到很对5ms 的延时;

        rtos的延时就会发生一次任务切换,改为us堵塞延时正常了,原因之一就是任务切换太频繁了。

对于任务切换太频繁导致进入void vPortEnterCritical( void )的方法,我是使用堵塞延时;其他方法应该也有,这里我就不去研究了。

总结

        记录一些这次经历,也是有收获的。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值