基于STM32的实时操作系统FreeRTOS移植教程(手动移植)_stm32移植freertos(1)

本文介绍了如何手动将FreeRTOS操作系统移植到STM32上,详细阐述了任务“同时”执行的原理,并通过六个步骤演示了从建立工程到修复编译错误的全过程,提供了一个FreeRTOS点灯项目的创建方法。
摘要由CSDN通过智能技术生成

直接意识代码:

int main()
{
    while(1)
    {
        //LED1置为高电平 
        ...... 
        //延时1000MS 
        ...... 
        //LED1置为低电平 
        ...... 
        //延时1000MS 
        ...... 
        //LED2置为高电平 
        ...... 
        //延时500MS 
        ...... 
        //LED2置为低电平 
        ...... 
        //延时500MS 
        ......
    }
}

这是我们大脑最希望的添加代码方式,很显然他是错的两个任务之间产生了相互的影响,使得两个任务都执行错误,这种思想在裸机开发中肯定是错的,但是在我们的RTOS中他就可以是对的

任务型代码:

//创建LED1任务
void LED1_Task()
{
    //LED1置为高电平 
    ...... 
    //延时1000MS 
    ...... 
    //LED1置为低电平 
    ...... 
    //延时1000MS 
    ...... 
}


//创建LED2任务
void LED2_Task()
{
    //LED2置为高电平 
    ...... 
    //延时500MS 
    ...... 
    //LED2置为低电平 
    ...... 
    //延时500MS 
    ......
}

这是独立的两个任务内容,我们只需要把他的扔到我们的任务执行器里,他就会**“同时”运行了,很多小伙伴就会疑问了,单片机明明只有一个核**,为什么可以同时执行多个任务呢?这就需要去了解RTOS操作系统中任务“同时”执行的原理

1.4 任务“同时”执行的原理

在RTOS中,RTOS利用了一种类似于**“视觉暂留”的工作原理,多个任务之间快速切换。在ROTS中,可以让我们的每个任务执行一个时间单位**,然后就切换到另外一个任务执行一个时间单位,再切换回去,两个任务都是独立运行的,互不影响,由于切换的频率很快就感觉像是同时运行的一样

上图为一个简单的示意图,读者朋友们可以结合该图好好理解一下RTOS系统的执行过程。

二、 FreeRTOS的手动移植

为了图方便,笔者这里直接使用CubeMX去生成一个基于HAL库的初始STM32工程文件。不习惯用HAL库的,可以找一个标准库的初始STM32工程文件,进行手动移植工作。

①、建立STM32空工程

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值