【RTOS】快速体验FreeRTOS所有常用API(1)工程创建

目录

    • 一、工程创建
      • [1.1 新建工程](#1.1 新建工程)
      • [1.2 配置RCC](#1.2 配置RCC)
      • [1.3 配置SYS](#1.3 配置SYS)
      • [1.4 配置外设](#1.4 配置外设)
        • [1)配置 LED PC13](#1)配置 LED PC13)
        • [2)配置 串口 UART1](#2)配置 串口 UART1)
        • [3)配置 OLED I2C1](#3)配置 OLED I2C1)
      • [1.5 配置FreeRTOS](#1.5 配置FreeRTOS)
      • [1.6 工程设置](#1.6 工程设置)
      • [1.7 生成代码](#1.7 生成代码)
      • [1.8 keil设置下载&复位](#1.8 keil设置下载&复位)
      • [1.9 添加用户代码](#1.9 添加用户代码)

快速体验FreeRTOS所有常用API(1)工程创建
快速体验FreeRTOS所有常用API(2)任务管理
快速体验FreeRTOS所有常用API(3)同步与互斥
快速体验FreeRTOS所有常用API(4)队列
快速体验FreeRTOS所有常用API(5)信号量、互斥量
快速体验FreeRTOS所有常用API(6)事件组
快速体验FreeRTOS所有常用API(7)任务通知
快速体验FreeRTOS所有常用API(8)软件定时器
快速体验FreeRTOS所有常用API(9)中断管理
快速体验FreeRTOS所有常用API(10)资源管理
快速体验FreeRTOS所有常用API(11)打印空闲栈、CPU占用比

本工程皆在快速体验FreeRTOS所有常用API,不深究概念。

硬件:STM32F103C8T6最小系统、OLED

软件:FreeRTOS、OLED驱动、UART驱动

工具:STM32CubeMX、Keil、串口助手

一、工程创建

本部分代码下载链接:

https://wwzr.lanzout.com/iyUvV1l75bja 密码:dqbd

建议直接使用该工程进行后续学习。

该代码尽量做到最简,不添加多余的、不规范的代码。

1.1 新建工程

1.2 配置RCC

选择外部时钟源。

设置外部晶振输入值,我这块板子是8M。

然后手动输入最大时钟频率,然后回车让他自动配置时钟树。我这块板子是72M。

1.3 配置SYS

另外,本实验使用了FreeRTOS,FreeRTOS的时基使用的是Systick,而STM32CubeMX中默认的HAL库时基也是Systick,为了避免可能的冲突,最好将HAL库的时基换做其它的硬件定时器:

1.4 配置外设

这次用的外设有:LED、串口调试、OLED显示。

1)配置 LED PC13

配置板子LED引脚,推挽输出模式。我这块板子是 PC13。

2)配置 串口 UART1

使用串口1,波特率默认,异步通信。

3)配置 OLED I2C1

OLED屏幕使用I2C1通道,I2C1使用PB6、PB7作为SCL、SDA引脚,配置如下:

1.5 配置FreeRTOS

STM32CubeMX已经将FreeRTOS集成到工具中,并且将RTOS的接口进行了封装CMSIS-RTOS V1/V2,相较之于V1版本的CMSIS-RTOS API,V2版本的API的兼容性更高,为了将来的开发和移 植,建议开发者使用V2版本的API:

选择CMSIS V2接口后,还要进一步配置FreeRTOS的参数和功能。

FreeRTOS的参数包括时基频率、任务堆栈大小、是否使能互斥锁等等,需要开发者根据自己对FreeRTOS的了解以及项目开发的需求,来定制参数。

使用默认参数不需要修改

使用STM32CubeMX,可以手工添加任务、队列、信号量、互斥锁、定时器等等。但是本课程不想严重依赖STM32CubeMX,所以不会使用STM32CubeMX来添加这些对象,而是手写代码来使用这些对象。

使用STM32CubeMX时,有一个默认任务,此任务无法删除,只能修改其名称和函数类型,如下图所示:

使用默认参数不需要修改

1.6 工程设置

1.7 生成代码

点击生成代码

打开keil工程

1.8 keil设置下载&复位

选择下载器类型,我用的是DAP。点击后面的Setting。

进入后勾选自动复位,表现为每次下载程序后单片机自动复位运行程序。

设置完点击OK。

因为要使用printf,勾选:

1.9 添加用户代码

STM32CubeMX只是帮我们初始化了所配置的硬件模块,你要实现什么功能,需要自己添加代码。

添加MCU-F103等用户自己的代码,包含LED、UART、OLED驱动等。

修改 默认任务 的代码为下图,用于测试LED、UART、OLED程序。

相关推荐
书山有路勤为径~9 分钟前
5 基于STM32单片机的绝缘检测系统设计(STM32代码编写+手机APP设计+PCB设计+Proteus仿真)
stm32·单片机·智能手机
@陽光總在風雨後1 小时前
嵌入式数据结构之顺序表总结
c语言·arm开发·stm32·单片机·嵌入式硬件
扣篮发型不乱2 小时前
STM32 | DHT11 传感器
stm32·单片机·嵌入式硬件
会编程的小孩12 小时前
stm32继电器使用方法
stm32·单片机·嵌入式硬件
DIY机器人工房16 小时前
在开发板tmp目录下传输文件很快的原因和注意事项:重启开发板会清空tmp文件夹,记得复制文件到其他地方命令如下(cp 文件所在路径 文件要复制到的路径—)
嵌入式硬件·嵌入式·tftp·diy机器人工房
学不动CV了18 小时前
基于按键开源MultiButton框架深入理解代码框架(三)(指针的深入理解与应用)
c语言·arm开发·stm32·单片机·算法·51单片机
网易独家音乐人Mike Zhou20 小时前
【Linux应用】在PC的Linux环境下通过chroot运行ARM虚拟机镜像img文件(需要依赖qemu-aarch64、不需要重新安装iso)
linux·c语言·stm32·mcu·物联网·嵌入式·iot
GC_June0720 小时前
STM32 + 移远EC800 4G通信模块数传
arm开发·stm32·嵌入式硬件
小嵌同学21 小时前
Linux 内存管理(2):了解内存回收机制
linux·运维·arm开发·驱动开发·嵌入式
如愿小李1 天前
STM32之L298N电机驱动模块
stm32·单片机·嵌入式硬件