STM43F407开发板移植FreeRTOS

  1. 建立stm32空项目

这里使用STM32CubeMX快速创建项目,要注意的是我们完成最基本的配置以后,需要将我 们的Timebase Source修改一下,修改成除了滴答滴答定时器的其他定时器,就像这样:

在FreeRTOS中我们的SysTick定时器被用于了我们的时钟基准,它用来实现我们的任务切换,我们的SysTick定时器每次触发我们的中断(默认是一毫秒,可以自行修改为其他值)。

正常裸机开发中我们的SysTick定时器是用来主要是用来进行我们的HAL_Delay() 延时的,使用其作为基准,前面我们说了SysTick定时器被用于系统任务切换了,所以它就是一直在工作,或者说一直在触发中断,这样的话我们的HAL_Delay()就需用使用我们的其他定时器进行替代其作用了。

  1. FreeRTOS内核下载

浏览器进入FreeRTOS官网,点击右上角下载FreeRTOS。

上面的是FreeRTOS的最新版本,下面的就是长期维护的版本。点击上方github的链接,在github下载压缩包。下载下来并不完整,他的子模块还没有。继续向下滑动网页:

点击连接同样下载压缩包,解压后:

  1. 开始移植

Keil打开stm32项目,左侧添加两个新分组:

在工程中,新建文件夹:

打开FreeRTOS-Kernel-main文件夹,复制所有.c文件到刚刚建立的FreeRTOS文件中。

复制include文件夹以及portable文件夹到FreeRTOS文件夹下

保留FreeRTOS/portable文件夹中的Keil、MemMang、RVDS文件夹,其余全部删除。

保留FreeRTOS/portable/RVDS文件夹中的ARM_CM4F文件夹。

\FreeRTOS\FreeRTOS-main\FreeRTOS\Demo\CORTEX_M4F_STM32F407ZG-SK\FreeRTOSCionfig.h文件复制到FreeRTOS\include中。

将.c文件添加到之前建立的分组中:

添加头文件路径:

编译提示错误:SystemCoreClock未定义。对应修改FreeRTOSCionfig.h

编译报错:重复定义

在stm32f4xx_it.c中删除这几个函数。再次编译无错。

  1. 点灯任务测试

引入相关头文件:”FreeRTOS.h” ”task.h”.

任务函数创建:

主函数创建任务,以及开启任务调度器:

编译下载即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值