原材料:FreeRTOSv10.0.0    STM32F10x_StdPeriph_Lib_V3.5.0

    由于工作需要,要用FreeRTOS进行开发,为方便以后移植,做下移植记录:

    1 首先创建2个目录MDK,SOURCE.MDK用于存储keil相关的项目,SOURCE用于存放用户的源代码,然后添加下载的FreeRTOSv10.0.0,STM32F10x_StdPeriph_Lib_V3.5.0,把不用的东西删掉,整理好后的目录如下图:移植freeRTOS10.0.0到stm32f103ve

移植freeRTOS10.0.0到stm32f103ve

移植freeRTOS10.0.0到stm32f103ve

    2 开始建立工程

        我是先用STM32F10x_StdPeriph_Lib_V3.5.0固件库建立的空工程,然后再添加FreeRTOSv10.0.0。用固件库建立新工程的步骤由于已经很熟了,就不再写了。添加完FreeRTOSv10.0.0相关文件后如图,第一幅图是C文件,第二幅是H文件目录

移植freeRTOS10.0.0到stm32f103ve

移植freeRTOS10.0.0到stm32f103ve

编译后会发现缺少FreeRTOSConfig.h这个文件,FreeRTOSConfig.h在官方例程中都在Demo目录下,由于我们用的是keil,f103ve所以选择FreeRTOSv10.0.0\FreeRTOS\Demo\CORTEX_STM32F103_Keil目录下的FreeRTOSConfig.h。再次编译出现错误E:\FreeRTOSv10.0.0\FreeRTOS\Source\stream_buffer.c(733) : pxStreamBuffer->xTaskWaitingToReceive = xTaskGetCurrentTaskHandle();这里stream_buffer.c这个文件不是很重要,先暂时去掉。再次编译通过。

但是到这里,还没有移植完成,FreeRTOS在port.c中重新定义了几个中断,以供内核调用,分别是

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

void vPortSVCHandler( void );

上面三个函数在port.c的117行。这里要修改下startup_stm32f10x_hd.s,主要是重新定义下中断的入口函数,以防止调用stm32f10x_it.c中的中断,同时屏蔽stm32f10x_it.c中的相关中断,startup_stm32f10x_hd.s的修改部分如下:

移植freeRTOS10.0.0到stm32f103ve

移植freeRTOS10.0.0到stm32f103ve

分号中间的为修改部分。然后再次编译通过。至此移植完成。

3 写测试代码

    代码如下:

移植freeRTOS10.0.0到stm32f103ve

进入调试模式,可在whtch1中查看count_first,count_second的值,不断的增加,则移植成功。

另外此代码已上传,链接https://download.csdn.net/download/xiaowudidao/10353880


相关文章:

  • 2021-04-29
  • 2021-07-02
  • 2021-10-26
  • 2021-09-04
  • 2021-04-29
  • 2021-12-26
  • 2021-12-21
  • 2021-05-25
猜你喜欢
  • 2021-10-25
  • 2021-10-18
  • 2021-09-07
  • 2021-06-14
  • 2022-12-23
  • 2021-04-27
  • 2021-10-28
相关资源
相似解决方案