STM32新建工程
1. 新建空白文件夹
新建空白文件夹📁存放工程
2. 打开Keil
- 点击Project👷
- 点击New Project
- 选择我们刚刚新建的文件夹📂,并给工程起个名字,例如:Project
- 点击保存,选择器件型号,例如 STM32F103C8,单击🆗
- 关闭新建工程小助手
3. 拷贝工程必要文件
-
Start📁
-
将拷贝到Start📁 中的文件添加到工程之中
-
在Keil工程之中 双击Target1 之下的 source group 1的字符的左侧,修改名称为Start(虽然Keil支持文件在不同文件夹 但是)
-
右键🖱️文件夹,添加拷贝的文件到组中,添加顺序".s"文件 (根据芯片型号)➡️添加".c"文件➡️添加".h"文件。
-
添加Start group到文件编译路径
-
4. 新建main.c文件测试编译(以寄存器开发的配置)
-
在工程文件夹下面新建一个文件夹起名User,用来存放main函数
-
在Keil工程中右键Target1点击Add group,按照前文方法,改名为User
-
右键User 新建".c"文件main 到User目录下
-
在main.c中编辑一小段代码,试编译 没出错说明前面执行正确 如果编译错误❌需要检查,并搜索🔍解决办法
-
试编译
#include "stm32f10x.h" // Device header
int main(void )
{
while(1)
{
}
}
-
寄存器点灯
#include "stm32f10x.h" // Device header int main(void ) { RCC->APB2ENR = 0x00000010; GPIOC->CRH = 0x00300000; GPIOC->ODR = 0x00002000; //PC13 引脚 状态两者选其一 // GPIOC->ODR = 0x00000000; while(1) { } }
5. 以库函数开发的工程配置(在寄存器开发的基础上)
-
在工程文件夹下面新建一个文件夹起名Library📖,用来存放库函数
-
在Keil工程中右键Target1点击Add group,并改名为Library,再添加group到编译路径
-
复制代码文件到Library文件夹,并在Keil工程中添加全部的文件到组中(注意选择All files)
-
新添加三个文件到User文件夹中,注意加入到工程组中去
-
添加宏定义
USE_STDPERIPH_DRIVER
(在stm32f10x.h的第8296行)否则编译会报错 -
点灯
#include "stm32f10x.h" // Device header int main(void) { /*开启时钟*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //开启GPIOC的时钟 //使用各个外设前必须开启时钟,否则对外设的操作无效 /*GPIO初始化*/ GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //GPIO模式,赋值为推挽输出模式 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; //GPIO引脚,赋值为第13号引脚 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //GPIO速度,赋值为50MHz GPIO_Init(GPIOC, &GPIO_InitStructure); //将赋值后的构体变量传递给GPIO_Init函数 //函数内部会自动根据结构体的参数配置相应寄存器 //实现GPIOC的初始化 /*设置GPIO引脚的高低电平*/ /*若不设置GPIO引脚的电平,则在GPIO初始化为推挽输出后,指定引脚默认输出低电平*/ // GPIO_SetBits(GPIOC, GPIO_Pin_13); //将PC13引脚设置为高电平 GPIO_ResetBits(GPIOC, GPIO_Pin_13); //将PC13引脚设置为低电平 while (1) { } }
6. Keil界面优化
- 小扳手🔧
- Colors & Fonts 修改C/C++ 和Asm Editor,点击Font,选择Size为14
- Editor ➡️ Encoding ,选择UTF-8可以避免中文乱码问题,不行就多试几个,比如还有GB2312,打开别人的工程出现乱码的情况也是这样
- Editor ➡️ Tap size选择4
- 根据实际情况,修改调试方法,例如stlink
7. 备注&总结
-
".s"文件的选择
缩写 释义 Flash容量 型号 LD_VL 小容量产品超值系列 16~32K STM32F100 MD_VL 中容量产品超值系列 64~128K STM32F100 HD_VL 大容量产品超值系列 256~512K STM32F100 LD 小容量产品 16~32K STM32F101/102/103 MD 中容量产品 64~128K STM32F101/102/103 HD 大容量产品 256~512K STM32F101/102/103 XL 加大容量产品 大于512K STM32F101/102/103 CL 互联型产品 - STM32F105/107 -
为方便项目管理,需要使Group 和 文件夹同名,同时记得添加对应文件夹到路径中去,点击品字符号可以调整各个不同group之间的上下位置,优化界面方便管理
-
注意添加添加宏定义
USE_STDPERIPH_DRIVER
代码下载链接
链接:https://cloud.189.cn/web/share?code=2MzqeyIBfEnm(访问码:rdh4)