具体为:刚新建了一个stm32F407ZGT6和一个STM32F103RCT6的工程,之后啥代码也没有改,直接打开main.c文件然后编译,直接报错。 报错定位在“drivers/board.c”,再具体定位在代码“RT_WEAK void rt_hw_board_init()”。 以下是代码原码: board.c #include<rtthread.h>#include<board.h>#include<drv_common.h>...
1. board.c是rtt studio按固定模板自动吐出来,报错的RT_WEAK宏定义在新版系统上已更名为rt_weak,...
可以创建只读文件。 1RT_WEAKconststructromfs_dirent_root_dirent[] = 2{3{ROMFS_DIRENT_DIR,"dummy", (rt_uint8_t*)_dummy,sizeof(_dummy) /sizeof(_dummy[0])},4{ROMFS_DIRENT_FILE,"dummy.txt", _dummy_txt,sizeof(_dummy_txt)},5}; 或者,只有目录 1RT_WEAKconststructromfs_dirent_root_dir...
报错中会含有main函数的报错,在cubemx生成的main.c里,在main函数前加上__weak(注意此处是两个短下划线)如图二所示 而真正的main.在application里。如图三所示 这个时候build的话就不会有什么报错了。 然后我们可以修改系统时钟为HSE,在drv_clk.c里,clk_init中注释掉原本的system_clock_config,并如图二所示修改。
因为找不到RT_WEAK的定义,需要修改头文件rtdef.h#defineRT_WEAK __attribute__((constructor))4.5.5屏蔽rt_hw_us_delay定义4.5.6修改entry函数intentry(void){rt_hw_interrupt_disable();rtthread_startup();return0; }4.5.7修改main_thread_entry函数voidmain_thread_entry(void*parameter){externintmain(voi...
RT_WEAK 的错误是上面两处。3.4.2 mpy_main.c 文件的 rt_thread_self()->name 需要改为 rt_...
rt_heap_begin_get() 和rt_heap_end_get()这两个函数表示堆的起始地址和结束地址。这两个函数前面的宏RT_WEAK的原型是关键字 __weak,表示若定义,即其它地方定义了rt_heap_begin_get()和rt_heap_end_get()这两个函数实体, 被__weak修饰的函数就会被覆盖。
准备工作都已经做好了,接下来可以开始RT-Thread的移植了。 将rt-thread整个文件夹拷贝到我们的工程目录下,为了工程的精简,我们可以删掉一些我们不需要的文件。 将RT-Thread添加到我们的工程中。 添加头文件路径 移植RT-Thread,我们主要需要修改的是board.c和rtconfig.h这两个文件,board.c主要是配置系统时钟和OS_TI...
RT_WEAK void *rt_heap_begin_get(void) { return (void*)HEAP_BEGIN; } RT_WEAK void *rt_heap_end_get(void) { return (void *)HEAP_END; } #endif void rt_os_tick_callback(void) { rt_interrupt_enter(); rt_tick_increase(); rt_interrupt_leave(); } void Sys...