0. 前言
硬件平台:
- STM32F103ZET6
移植流程:
- 构建STM32运行环境
- 下载FreeRTOS源码
- 根据芯片型号选择对应的内核文件
- Keil配置项目
- 创建任务
- 运行
1. 构建STM32运行环境
搭建运行环境基本流程:
- 创建Keil项目
- 创建对应目录
- 复制stm32f103启动文件
- 创建main.c文件
- 创建串口驱动文件
- Keil配置项目结构
- 编写main.c与驱动代码
1.1 使用Keil创建项目
1.1.1 打开Keil创建新项目
创建一个项目文件夹用于存放项目(base_project):最上方Project->New … Project -> 输入项目名 -> 保存项目 -> 选择芯片 -> 保存
创建项目:
选择芯片:
1.2 创建目录
使用Keil创建好项目文件后,在目录中创建start、user、driver、freertos文件夹
- start:用于存放stm32的启动文件
- user:存放用户代码
- driver:存放驱动文件
- freertos:存放FreeRTOS的移植文件
1.3 复制stm32f103启动文件到start中
通过ST官网下载stm32f103的标准库文件,将以下6个文件拷贝到start文件夹中,这里主要讲FreeRTOS移植,就不一一讲解,可以私信作者获取项目结构源码。
1.4 创建main.c文件
在user文件夹中创建main.c文件,作为程序入口文件。
1.5 创建串口的驱动文件Driver_Usart
在driver文件夹中创建usart文件夹,在usart文件夹中创建Driver_Usart.c与Driver_Usart.h文件。用于调试代码时串口的输出打印。
1.6 打开Keil配置文件
流程步骤:
- 选择配置项目目录
- 添加文件夹
- 对应文件夹添加文件
- 配置头文件路径
1.6.1 选择配置项目目录
1.6.2 创建对应文件
1.6.3 添加对应文件
将对应的文件添加进对应的文件夹。
这里以usart的驱动文件为例,将Driver_Usart.c文件添加到对应的Driver/Usart中即可。
对应的main.c添加进文件夹。
添加启动文件,将所有的启动文件添加到Start文件夹中:
配置目录效果:
1.6.4 配置头文件路径
选择对应的头文件路径:
保存路径:
选择调试工具:
1.7 编写main.c与驱动代码
使用VSCode打开base_project文件夹,进行代码编写。
现在VSCode进行插件安装:
- C/C++
- Keil Assistant
main.c
#include "Driver_Usart.h"
int main()
{
/* 初始化窗口 */
USART_Init();
printf("Hello World!\n");
while (1)
{
}
return 0;
}
Driver_Usart.h
#ifndef __DRIVER_USART_H
#define __DRIVER_USART_H
#include "stm32f10x.h"
#include "stdio.h"
// 初始化
void USART_Init(void);
#endif
Driver_Usart.c
#include "Driver_Usart.h"
void USART_Init(void)
{
// 1. 配置时钟
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;
RCC->APB2ENR |= RCC_APB2ENR_USART1EN;
// 2. GPIO引脚配置
// 2.1 PA9 设为复用推挽输出 MODE: 11, CNF: 10
GPIOA->CRH |= GPI