STM32F103 HAL库版FreeRTOS

目录

一、相关介绍

二、STM32CubeMX时钟相关配置

 三、STM32CubeMX FreeRTOS相关配置

 四、验证STM32CubeMX直接生成的工程是否可用


一、相关介绍

        本实验采用STM32CubeMX工具直接生成HAL库版本FreeRTOS,所以自己本机要装有STM32CubeMX。

二、STM32CubeMX时钟相关配置

1.选择自己的开发板型号

613315b87f8840a2b8be5c656843f464.png

 2.配置系统模式

3c2cc5195b5d403ab377b40206b45b50.png

 tips:FreeRTOS自动接管系统滴答定时器,所以要把HAL_delay需要的时钟指向其它定时器,这里我使用TIM2来为系统提供时钟源,当然其他定时器也是可以的。

3.时钟源配置

c28606603f7a480d9787bbedab2365b7.png

4.配置时钟

24bd9afd2ea5495aa965af7f04b733af.png

 三、STM32CubeMX FreeRTOS相关配置

1.选择FREERTOS选择CMSIS_V1版本

db67e651df46493295888e7bb329f9b6.png

 tips:CMSIS_V1与CMSIS_V2区别在于:V1满足Cortex-M0/M3/M4/M7系列使用;而V2版本满足所有Cortex-M系列的芯片的同时还兼容其它系列架构的CPU支持

2.创建三个任务:LED,BEEP,KEY任务

ddbd2065a2c349deaa68726486d5bfbe.png

(1)创建LED任务:

3688799415a246a78391075cc71d16db.png

(2)创建BEEP任务

dc5ada7646ac49ec9aa9c3a9d36a97bf.png

tips:关于优先级,可以参照一下freertos源码

typedef enum  {
  osPriorityIdle          = -3,          ///< priority: idle (lowest)
  osPriorityLow           = -2,          ///< priority: low
  osPriorityBelowNormal   = -1,          ///< priority: below normal
  osPriorityNormal        =  0,          ///< priority: normal (default)
  osPriorityAboveNormal   = +1,          ///< priority: above normal
  osPriorityHigh          = +2,          ///< priority: high
  osPriorityRealtime      = +3,          ///< priority: realtime (highest)
  osPriorityError         =  0x84        ///< system cannot determine priority or thread has illegal priority
} osPriority;

(3)创建好的任务如下所示:

f2ce458bbca0481ab40bf2a7be8207d8.png

3.配置LED和BEEP引脚

tips:选择自己开发板上LED或者蜂鸣器的引脚即可,配置相应引脚对应的器件上电时默认为关闭的状态。配置好后的引脚如下所示:

46957c5f69d149c0ba8bf33654bb56d6.png

4.工程生成配置

(1)工程相应配置

c01a7b8b49fb46488540ab4c51c787aa.png

(2)库与.c.h文件的勾选

5f5bc9288d96492db7a257e8bb10f15e.png

 tips:一般这样会使得工程较大,也可以选择只生成需要的文件即可,但我这为了以后不麻烦便直接包含所有.c.h文件。 

(3)生成工程

ada211ba65544337bb3da63c9b914771.png

 四、验证STM32CubeMX直接生成的工程是否可用

1.打开工程

2.在freertos.c的任务函数中加入电灯相应代码

7c07dd02b08d4a969e6d1894d4b1122f.png

tips:查看现象后发现LED灯与蜂鸣器呈现出预期的状态。下面自己动手去试试吧,电灯点到吐了兄弟们......

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在将STM32F103C6HAL库移植FreeRTOS时,需要进行以下步骤: 1. 添加FreeRTOS源码:将FreeRTOS源码添加至基础工程,包括头文件路径等。这可以通过将FreeRTOS源码文件复制到项目目录中,并在编译器设置中添加相应的头文件路径来完成。 2. 修改FreeRTOSConfig.h文件:FreeRTOSConfig.h是FreeRTOS的工程配置文件,可以通过修改该文件来裁剪FreeRTOS的功能,以适应不同的处理器平台。根据需要,可以配置任务数量、堆栈大小、调度算法等参数。 3. 修改中断相关文件:根据STM32F103C6HAL库的中断配置,修改Systick中断、SVC中断、PendSV中断等相关文件,以确保FreeRTOSHAL库的中断处理能够协同工作。 4. 添加应用程序:在移植完成后,可以添加应用程序来验证移植是否成功。可以创建一个简单的任务,并在任务中添加一些操作,以确保FreeRTOS正常运行。 需要注意的是,移植FreeRTOS需要对STM32F103C6HAL库FreeRTOS的源码有一定的了解。可以参考FreeRTOS的官方文档和STM32F103C6HAL库的相关文档来进行移植。 #### 引用[.reference_title] - *1* *2* [基于STM32F103HAL库移植FreeRTOS移植实操 (一)](https://blog.csdn.net/cairongshou/article/details/131109822)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [基于STM32F103HAL库手动配置FreeRTOS](https://blog.csdn.net/weixin_44098974/article/details/130912775)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值