1、之前用的是实验室里面的神舟网M4开发板,该款板子板载时钟为25MHz,而探索者貌似是装的8MHz的晶振。于是,问题出现了:我用用以前神舟网的代码在探索者上跑,发现延时不准确,像什么delay_ms,OSTimeDly以及OSTimeDlyHMSM,延时都比预定的时间要长很多。解决方案:将system_stm32f4xx.c中:
#define PLL_M 25
改为:
#define PLL_M 8
这样就延时准确了。
2、这个问题跟板子没有关系。昨晚将uCOS移植完成之后,建立了一个RTC时间获取并显示在LCD上的任务,编译没有问题,下载到板子之后发现运行不正常,时间只显示头一秒,然后就不变化了。然后开始了苦逼的调试过程,发现程序卡在了HardFault_Handler里面了,一时竟不知是什么原因,于是收工回家喝酒。可能是喝大了的原因,睡梦中想起了昨晚的代码,仔细回想,发现了某处似乎有点不对劲。——这个任务变量很多,代码量很大。(因为要显示农历,还有24节气等等)而我的任务堆栈大小是64,够吗?
今早顾不上还未散去的酒劲,打开工程,将堆栈设置成512(故意大点设),然后一运行,发现十分正常。 |