移植freeRTOS10.0.0到stm32f103ve

原材料: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,把不用的东西删掉,整理好后的目录如下图:


    2 开始建立工程

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



编译后会发现缺少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的修改部分如下:



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

3 写测试代码

    代码如下:


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

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


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值