通过STM32CUBEMX生成RTOS系统运用(一)

通过STM32CUBEMX生成RTOS系统运用(一)

前言:
在一次项目开发中,使用的是循环式运行,但在某些需要快速响应处理数据时,没有办法及时的去到处理函数,于是开始了这次基于STM32CUBE自动生成的RTOS应用

  1. 硬件平台:STM32F405RG
  2. 软件平台:Keil5 / VS CODE
  3. STM32CUBEMX 5.0

一、利用STM32CUBEMX生成RTOS工程文件

  1. 新建一个ioc文件工程选取到对应的芯片

  2. 先从配置开始
    RCC快速选取外部时钟在这里插入图片描述
    若要使用RTOS的话,sys这里就不可以选取SysTick,要更换成其他定时器,这里我选用了TIM1
    在这里插入图片描述若选取了SysTick,在生成带RTOS的工程时,会弹出一个警告
    在这里插入图片描述
    出现这个警告的可能是因为:
    RTOS是会选取SysTick为基础时钟来应用的,为了使RTOS收受到的干扰降低到最小,所以RTOS会将SysTick的中断等级降至最低,这样也导致了整个代码的时钟也会处于最低等级的中断,HAL库本身的系统计时也会不准确(大概)
    (此图的sys选取的是SysTick)在这里插入图片描述
    当我sys选取改成TIM1时,因为基于的时基不同,中断等级也相应的不同,这样的话本身HAL库的系统计时就会相对于准确(可能这就是会出现警告的原因吧)在这里插入图片描述
    选取RTOS
    这里我没有对参数改变,使用的是默认参数在这里插入图片描述
    在这里创建自己的任务在这里插入图片描述
    点击Add后,会弹出窗口
    在这里插入图片描述
    Task Name 是指任务名字
    Priority :指向的是任务的中断等级,CUBE中将RTOS的任务中断等级简化成七个,等级优先程度从低到高分别是 :osPriorityIdle(空闲任务/任务优先级为0)、osPriorityLow、osPriorityBelowNormal、osPriorityNormal、osPriorityAboveNormal、osPriorityHigh、osPriorityRealtime
    Stack Size :任务所需要的栈空间大小 (PS:栈的空间必须足够大才行,不然代码会卡死在这里面)
    Entry Function:任务函数入口
    Code Generation Option:代码生成选项
    Parameter:参数
    Allocation:分配

    OK之后会自动添加一个任务在这里插入图片描述
    然后选择自己需要的外设口 如串口 SPI等,我这边就没有添加了,生成keil工程文件 ,最好是选择上".c"、".h"文件
    在这里插入图片描述
    打开keil工程文件 ,在freertos.c中的StartTask02函数中添加自己的任务代码
    and osDelay是指任务阻塞时间,若没有到阻塞时间的话,就算其他任务结束了,也不会运行这个任务,在这里添加完任务代码就可以开始运行了
    在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值