背景和现象描述
在根据官方文档移植RT-Thread Nano内核和FinSH到自己的开发板上,在创建线程的时候,发现错误:hard fault on thread: tshell,如下图所示。
原因和解决方法
rtconfif.h配置文件下有一个宏定义:
#define RT_THREAD_PRIORITY_MAX 8
这个宏定义的意思应该是线程的最大优先级是8,而我创建线程的时候,使用的是官方的例程,使用的优先级是25,因此线程不能正常创建。
#define THREAD_PRIORITY 25 /* 该值超出了配置文件的最大支持的优先级范围,会出错 */
将线程优先级改到宏定义以下的范围,或者将宏定义改大,错误即可解决。
#define THREAD_PRIORITY 4