RT_Thread创建线程采用动态内存时Keil编译后报错提示rt_thread_create函数没有定义

Keil编译后报错如下:

..\..\Output\流水灯.axf: Error: L6218E: Undefined symbol rt_thread_create (referred from main.o).

原因:

RT_Thread有两种创建线程的方法,一种是静态创建,创建进程的函数是rt_thread_init()
另一种是动态创建,创建进程的函数是rt_thread_create()
其中,在采用动态创建时,需要在rtconfig.h中手动开启宏RT_USING_HEAP,该宏默认未开启。

方法

打开User\rtconfig.h文件,找到//#define RT_USING_HEAP,取消改行注释即可。

注:rtconfig.h是从RTT源码包bsp文件夹下复制到User目录下的,用户可以修改该文件来裁剪rtt的功能。