stm32启动文件

这是学习FreeRTOS的第一个自己移植的demo

之前任务切换不成功,在别的例子上看到stm32f107的启动文件应该是 startup_stm32f10x_md.s而不是 startup_stm32f10x_cl.s,换成正确的启动文件,就可以切换任务了

但是stm32f107文件对应的启动文件就是startup_stm32f10x_cl.s!!!通过对比知道还要将系统时钟的中断 SysTick_Handler入口改为FreeRTOS的与硬件相关的文件port.c中去,

在port.c中对应就是xPortSysTickHandler了,所以将SysTick_Handler换成立马就可以实现任务切换了!


FreeRTOS的移植不仅仅只是将FreeRTOS的文件拷贝过来就算完事了,主要是涉及软件正常跑起来所需要的硬件相关的地方要对应起来,这里就是FreeRTOS所涉及到的硬件是

void xPortPendSVHandler( void );
void xPortSysTickHandler( void );
void vPortSVCHandler( void );

三个中断才能运行,因为利用vTaskDelay延时实现阻塞切换任务,是利用系统时钟来计时,计时就需要硬件的系统时钟中断计数来支持了,之前就是没配置正确系统时钟的中断,所以我说当系统时钟中断发生了,但是不能正确的跳转到FreeRTOS中的中断处理,任务就没法切换了!


移植的关键是正确配置软件跑起来所需要的硬件资源!比如这次FreeRTOS任务切换所需要的硬件系统时钟的中断。


在移植过程中,将FreeRTOSV8.0换成V7.3,在换的过程中,觉得不要像网上的移植文档那样,将文件都集中在include和source两个文件夹中,打乱了FreeRTOS原本的文件结构,这样做不利于后期FreeRTOS的版本升级,后期升级肯定要对比文件的,文件结构不同就不利于对比!其他比如驱动库、文件系统、lwip等其他软件包也是同样的道理。

你可能感兴趣的:(单片机架构知识)