答案在风中飘
答案在风中飘 - 认证专家

注册于 1 year ago

回答
6
文章
0
关注者
0

直接在这个hardfault的汇编代码处打断点,看callstack,可以看到是执行到哪死的

因为你FINSH本身是运行在FINSH线程上的,你的这个程序运行时是执行在FINSH线程上的,而你写了个WHILE(1),相当于FINSH线程完全被你这个程序占了(rt_thread_delay只是调度去执行别的线程),所以FINSH线程堵死了,当然就无法执行其他操作了

会不会你系统还没跑起来就操作mutex了

看起来像是传入的队列控制块地址为空

答案在风中飘 发表于 2020-5-25 13:40
推荐使用方案1,因为第二种方法还是会进入中断,而DIO的中断服务程序会操作timer,这里关中断主要就是为了 ...


rtt的PM功能可以实现空闲时进行休眠,RTC也是为了在无事件时进入休眠,和RTC能实现的应该是一样的

推荐使用方案1,因为第二种方法还是会进入中断,而DIO的中断服务程序会操作timer,这里关中断主要就是为了保护timer操作的时候不被重入,所以斯尔螽方法可能无效

另外,其实可以直接调用rtt的timer的,就不需要些这么麻烦了

发布
问题