【笔记】ucosii使用技巧
时间:10-27 10:14 阅读:2519次
*温馨提示:点击图片可以放大观看高清大图
简介:ucosii使用技巧,总结一下遇到的问题与解决方法,希望对大家有用。
一、问题:在执行完一个任务一次后,就会进入硬中断,硬件平台stm32f103vct6,IDEkeil, ucoii版本V2.86。
经过追踪发现在进入硬件中断前,是在任务调度函数中。
根据《Cotex-M3权威指南》查看Fault寄存器


查看仿真结果

发现是导致硬Falut的原因是存储器falut或总线fault或用法fault。再依次查询各个falt寄存器(注意这几个寄存器的大小),发现在存储器fault中出现错误。如下图

居然是“取指访问违例”,平常多见的是访问指针数组使用不当造成的错误,这次不一样。经过一番查找,比较大跌眼镜,任务忘了加死循环!!
二、OSFlagPost(FlagsAlarmLed, FLAGS_LED_ALL, OS_FLAG_CLR, 0);最后一个参数传递0也会导致硬Fault,这样就相当于传递给函数一个0地址参数。