这两天移植一个FreeRTOS操作系统到CM32M芯片里面,按照正常网上的步骤执行,编译没有问题,但是烧录进去移植没有亮灯,最后解决这个问题。总结一下我的经验分享给大家。
如果正常烧录进去之后无法正常工作,可以先点击调试的按钮
进入调试模式之后如果发现自己的程序一直卡在这个程序
void HardFault_Handler(void)
{
/* Go to infinite loop when Hard Fault exception occurs */
while (1)
{
}
}
可以进行分布调试,一步一步往下走
我到最后发现我的程序在进入HardFault_Handler之前进入了这个程序
if( xPortStartScheduler() != pdFALSE )
{
/* Should not reach here as if the scheduler is running the
function will not return. */
}
根据百度发现是表示调度器启动失败才会进入这个函数,在FreeRTOSConfig.h的文件里找到configMAX_SYSCALL_INTERRUPT_PRIORITY,如果configMAX_SYSCALL_INTERRUPT_PRIORITY 不是=9,把这个值改成9,一般调度器启动失败的原因如下,可以根据自己的实际情况找问题