STM32入门
-
在学习STM32之前建议学习51单片机打基础,不学也没关系
-
建议先下载软件Keil5 MDK,如果是在百度网盘下载的话很慢
学习工具
STM32
初学者建议选用stm32f10103c8t6
传感器
-
光敏电阻
-
热敏电阻
-
对射式红外模块
-
反射式红外模块
-
W25Q64 Flash存储模块
-
MPU6050陀螺仪和加速度计
-
旋转编码器
面包板
面包板用来固定单片机
OLED
0.96寸的OLED显示屏幕
STLINK
LED按键
蜂鸣器
杜邦线
万用表
示波器
-
有条件可以买实验室使用的示波器
-
条件稍微差点可以买虚拟示波器
SG90舵机
镊子、剪刀
直流电机和TB6612电机驱动模块
软件
Keil5 MDK:ARM系列的单片机编程
Keil5 C51:51系列单片机编程
安装Keil5 MDK
安装器件支持包
软件注册
安装STLINK驱动
安装USB转串口驱动
Keil5软件设置
设置字体大小
修改编码格式和缩进大小
- 修改为UTF-8格式防止中文乱码
- 修改缩进大小
建立工程
- STM32的开发方式主要有:
- 基于寄存器的方式:使用程序直接配置寄存器
- 基于标准库的方式:使用ST官方提供封装好的函数,通过调用函数间接配置寄存器(本次STM32学习的主要内容)
- 基于HAL库的方式:使用图形化界面快速配置STM32
固件库
- 在该目录下有一个STM32的固件库
- 解压后,点击文件夹
-
该文件夹下的
Libraries
的文件夹,里面就是库函数文件,之后建立工程的时候会用到 -
Project
是官方提供的工程示例和模板,以后使用库函数的时候可以参考一下 -
Utilities
是STM32官方评估板的相关流程,评估板是官方用STM32做的一个小电路板,用来测评STM32 -
最后俩个文件,一个是库函数的发布文档,另一个是使用手册
- 发布文档有一些版本说明
- 使用手册用教怎么使用库函数
基于标准库的工程
- 建立存放工程的文件夹
- 接着打开Keil 5软件,点击创建一个新项目
- 然后将项目起一个名字保存在前面创建好的文件夹下,项目名称统一用
project
- 然后选择器件型号,注意
STM32F103C8
的下面有一个STM32F103CB
这两者要区分开来,然后点击OK即可
- 接下来会弹出新建工程小助手,但是暂时用不到,所以就把这个页面关了
- 然后就会看到如下图所示,但是目前还不能使用,还要配置一些必要的文件
- 打开文件夹,这个文件夹下就是STM32的启动文件,STM32就是从启动文件开始执行的
- 将这些文件复制下来,回到项目文件中,然后新建一个名为
start
的文件夹,将启动文件复制到该文件夹里面
- 然后回到该文件夹下,然后会看到
stm32f10x.h
:stm32的外设寄存器描述文件与51单片机的头文件一样,用来描述STM32有哪些寄存器和它对应的地址的system_stm32f10x.c
:主要用来配置时钟system_stm32f10x.h
:主要用来配置时钟- STM32主频72MHz,是system文件里面函数配置的
- 将这三个文件复制到
Start
文件夹下
- 接下来添加内核寄存器的描述文件,打开该文件夹,该文件夹下的这俩个文件就是内核的寄存器描述,还带了一些内核配置函数,这俩个文件也粘贴到
Start
文件下。工程的必要文件就复制完成了
-
回到Keil 5,将先前复制的文件添加到工程里面去
-
修改文件名为Start
-
点击右键,然后点击红框所示
- 然后添加
md.s
启动文件,启动文件只能添加1个,这里添加的启动文件是之后要使用的 - 然后将剩下的
.c
和.h
文件都添加进来
- 最后在工程选项里面添加头文件路径
- 检查配置文件是否可行
- 在项目文件中新建一个
User
的文件夹,main函数就放到该文件夹下
- 然后如下操作
- 修改名字为
User
- 点击添加新文件
- 注意下面第二个图片中的文件路径,main函数不会默认在User文件夹下,会在该文件夹的外面
- 然后插入头文件
- 然后编写如下代码,注意最后一行必须是空行
- 编写完之后点击下图红色框按钮,编译并建立工程
- 零错误,零警告,说明我们建立的工程是没有问题的
- 配置到这里就可以进行直接对寄存器的操作了
STM32操作
- 准备ST-Link、STM32的最小系统板和四根双母头的杜邦线
- 按照插针边上的标识,把3.3V、SWDIO、SWCLK、GND对应连接好
配置调试器
- 点击下图按钮
- 选择debug
- 调试器默认的是ULINK2,现在要选择ST-Link
- 设置ST-Link设置好后,点击右边的Settings
- 在设置中,点击Flash Download,然后将Reset and Run勾选上
- 这样下载程序之后会立马复位并执行
- 配置好后点击确定,OK然后重新编译程序
- 然后点击将程序下载到STM32里面
- 因为城程序里面什么都没有,所以这个灯就不会闪了
点亮STM32第一灯
- 需要配置3个寄存器,即可点灯
- RCC里面的ABP2ENR
- GPIOC里面的CRH
- GOIOC里面的ODR
1 |
|
添加库函数
- 在项目文件中添加一个
Library
的文件夹
- 打开固件库的文件夹
- 其中misc是内核的库函数
- 其他是内核外的外设库函数
- 全选复制,在前面刚创建的Library文件夹下复制
- 再打开固件库里面的inc文件夹
- 里面是库函数的头文件
- 继续全选复制到Library文件夹下
- 然后回到keil软件
- 在Target1里面Add Group
- 修改名字为
Library
然后再按右键添加已经存在的文件
- 将
Library
文件夹下所以文件都添加进去
- 但是现在还不能使用这些库函数,还需要配置一个文件打开文件,会看到下图
- stm32f10x_conf.h配置库函数头文件的包含关系,参数检查和函数定义,所有库函数都需要
- stm32f10x_it.c 这两个it文件是用来存放中断函数
- stm32f10x_it.h
- 将三个文件复制下来,粘贴到工程的User目录下
- 在Keil里面添加这三个文件
设置宏定义
- 打开头文件
- 下滑到文件结尾,看到如图语句
- 复制
USE_STDPERIPH_DRIVER
- 打开工程选项
- 在C/C++这边将复制的东西粘贴到Define里面
- 添加头文件路径,将创建在工程项目中的User和Library文件夹的路径添加到里面
移动文件
- 点击该红框按钮
- 将Library文件夹上移,使得Library和Start这两个不需要修改的内容的文件夹放在上面,User放在最下面
编译
- 点击下图红框按钮进行编译
- 第一次编译可能会比较慢
- 编译完后如果出现0错误,0警告说明工程建立成功
使用库函数点灯
- 使用RCC_APB2PeriphClockCmd控制时钟
注意
- 在启动文件里面有很多类型,具体选什么要根据芯片型号来选择
- 根据STM32中Flash和STM32的型号选择
- 如果是STM32F100,选择带VL的启动文件,根据Flash大小选择LD、MD、HD文件
- 如果使用STM32F101/102/103的型号,选择不带VL的,然后根据Flash大小选择LD、MD、HD还是XL
- 如果使用STM32F105/107,直接选择CL的启动文件
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 iyheart的博客!
评论