用于记录自己学习FreeRTOS内核的例程。
第一章首先是准备工作。主要使用CUBE来生成一个空项目,用于后续移植RTOS内核使用
开发板介绍
准备工作:
(1) 一块正点原子的STM32精英开发板,主控是STM32F103ZET6。具体参数见图:

开发板的实际图如下:

- 在进行正式的RTOS书写之前,我需要验证这个开发板是否能够正常下载和运行程序。为此,我需要首先就是下载这个开发板的部分资料,网址如下
正点原子精英版资料;给的百度网盘,这点绝对差评!
启动第一个程序
为了验证开发板的基础工能是否正常,我决定第一个程序是点亮开发板上的一个LED来验证.为了方便配置和快速生成代码,我决定学习STM32cube的相关内容,这可以帮助我快速上手,只需要修改相应的管脚信息我就能点亮LED.STM32cube的安装教程附上安装教程。
接下来开始正式配指STM32CUBE来启动开发板。参考视频教程正点原子CUBE 参考的文字教程是正点原子的STM32精英版资料和SRM32Cube工程.
我的具体操作如下:
- 安装STM32CUBE 需要在官网注册账号并下载 其次 需要下载JAVA便于顺利安装STM32CUBE
- 接下来,打开STM32CUB。界面如图所示:

-
进入下面的界面

-
再进入下一个界面

-
我们需要依次配置上方的
pinoutClockProject三个主菜单和它们的子项目 -
首先来配指管脚的相关的工能,因为我们需要是LED点亮,因此,我们需要查看硬件原理图,查阅到我这块开发板是LED0是连接的
PB5管脚,且是需要下来输出才行。因此按照配指如图所示

-
接下来使能RCC始终了时钟来启动GPIO,配置如下

这里面值得注意的是时钟源的选择,一般会HSE会外挂一个8Mhz的晶振作为时钟源,LSE会外挂一个32Khz
的晶振做时钟源。因此,按图中配指即可,没有时钟源择选disable -
再设置
sys项目,该项用于配指DEBUG模式

我们日后若用到再来配指,这里选择图中的选项,则只会用到最少的管脚资源 -
接下来配指STM32的时钟树,如图所示

-
接下里,配指具体的STM32工程的生成文件

-
对上一个点的(4)做一个说明,最后下载STM32F1的依赖包,我们可以回到主页面(一开始打开那个界面),点击如图所示的选项

进入之后,选择对应的最新依赖包即可

- 最后下载需要参考正点原子的官方教程,我们使用串口下载,标准的下载步骤是:
1, 把 B0 接 V3.3
2, 保持 B1 接 GND
3, 按一下复位按键
4, 使用上位机软件下载代码
5,配指下载工具中的下载时序

- 下载验证,完美!

- 中断设置
我们的任务是利用STM32CubeMX快速准备一个STM32空项目为RTOS做准备。
项目中提到需要将NVIC选择4为抢占优先级,并设置SysTick 和 PendSV 中断设置为最低优先级,至于为什么这么设置,需要到后面详细介绍,所以如下图所示

其余在设置以下外部时钟晶振即可和配置系统时钟即可
创建好内容后,我们需要做的就是先搭好框架。在工程的根目录下,我们创建一个RTOS内核文件夹,里面子文件加为Inc Src 分别为头文件和源文件的存放文件夹
RTOS的目录如下\
1 Inc
1.1FreeRTOS.h,用来包含 RTOS 所有的头文件
1.2FreeRTOSConfig.h,用来配置裁剪 RTOS 的功能
1.3list.h,双向链表数据结构头文件
1.4portMacro.h,用来统一 RTOS 中用到的类型和定义一些功能宏
1.5task.h,任务管理头文件
2 Src
2.1list.c,双向链表数据结构源文件
2.2prot.c,用来定义与底层芯片架构有关的函数和中断服务函数
2.3task.c,任务管理源文件\
相应的,MDK中需要添加进去\

至此,我们便创建了一
个最基础的STM32空项目,后续的RTOS内核会基于此工程创建。

被折叠的 条评论
为什么被折叠?



