STM32F103C8T6及其系列的FreeRTOS移植

本文所提到的所有软件、驱动、代码百度网盘链接:https://pan.baidu.com/s/1VtjtWfXGHKFb0zr-6ECufA 提取密码:n7or

参考自正点原子手册。

1.前言

​嵌入式系统是实时性强、宏观上多线程运行、且在单片机上运行的操作系统。具体代码实现和代码风格较之原先单线程式执行有较大不同,因此使用者需要对嵌入式系统的运行原理有清晰的认识,且需要熟悉代码块跳转的方式。

​ 本文介绍FreeRTOS系统在STM32系列单片机上最简单的移植

2.FreeRTOS的介绍

2.1FreeRTOS的特性

FreeRTOS全称:Free Real Time OS ,免费的实时操作系统。

主要特性如下:

1) 免费可商用

2) 多线程

3) 可设置任务优先级

4) 实时性强

5) 可裁剪

6) 低功耗

7) 高可移植性

8) 任务与任务、 任务与中断之间可以使用任务通知、消息队列、二值信号量、数值型信号量、 递归互斥信号量和互斥信号量进行通信和同步。

3. 移植步骤

1)准备基础工程和FreeRTOS源码

2)基础工程的文件夹新建“FreeRTOS”文件夹

3)复制“FreeRTOS”中的“source”的源码

4)在“portable”文件夹里留下“Keil”、“MenMang”、“RVDS”文件夹

5)打开工程代码,右键工程名→‘Add Group’并命名“FreeRTOS_CORE”和“FreeRTOS_PORTABLE”,并添加代码如图1所示
STM32F103C8T6及其系列的FreeRTOS移植

图1 添加代码

6) 添加头文件路径如图2所示
STM32F103C8T6及其系列的FreeRTOS移植

图2 头文件路径

7)编译后,处理“FreeRTOSConfig.h”的error,复制例程里的文件添加至“include”

8)有重复定义的错误则进入“stm32f10x_it.c”中注释或删除掉重复定义函数。

9)修改“SYSTEM”文件中的sys.h的#define SYSTEM_SUPPORT_OS 为1

修改“usart.c”中的‘include.h’→‘FreeRTOS.h’

修改USART1的中断函数,删除OSIntEnter()和OSIntExit()

修改delay.c文件中的‘delay_init()’的分频倍数为1

删除OSIntEnter()和OSIntExit()

修改delay.c文件中的‘delay_init()’的分频倍数为1

注意:‘FreeRTOSConfig.h’中的‘configTOTAL_HEAP_SIZE (size_t)(20*1024)’.其中20代表STM32F10X系列的堆栈大小,需要按照型号修改匹配。20为ZET6,10为C8T6.

相关文章:

  • 2021-09-14
  • 2021-08-27
  • 2022-01-11
  • 2022-01-11
  • 2022-01-19
  • 2021-09-29
  • 2022-02-05
猜你喜欢
  • 2022-01-01
  • 2021-07-23
  • 2021-12-24
  • 2022-12-23
  • 2021-10-20
  • 2021-10-21
  • 2021-09-03
相关资源
相似解决方案