文章目录
-
-
-
- STM32简介
- STM的选型
- 编写程序
-
- **Keil安装**
- 烧写程序
-
- 1. USB转串口烧写
- 2. ST-Link烧写
- ST-Link仿真
- 点亮LED灯
-
- GPIO简介
- GPIO配置
- GPIO电平输出
- 程序编写
- 闪烁LED灯
-
- 程序编写
- 实验结果
-
-
STM32简介
简介参考自:小马哥STM32四轴学习平台–DragonFly四轴STM32单片机软件入门级飞控算法课程
单片微型计算机简称单片机(MCU(MicrbControl Unit)),我们自己的个人计算机中,CPU、RAM、ROM、I/O这些都是单独的芯片,然后这些芯片被安装在一个主板上,这样就构成了我们的PC主板,进而组装成电脑,而单片机只是将这所有的集中在了一个芯片上而已。单片机又有8位的如51单片机、16位的如MSP430、32位的如STM32,通常我们说的多少位通常指的是内核(CPU)一次处理的数据宽度。也就是说内核一次处理的位数越多单片机的计算速度就越快,性能也就越强悍。
STM32是意法半导体(ST)推出一款32位的单片机。STM32具有超低的价格、超多的外设、丰富的型 、优异的实时性、极低的开发成本等优势。STM32凭借其产品线的多样化、极高的性价比、简单易用的库开发方式,迅速在众多32位单片机中脱颖而出。
STM32芯片内部可以粗略划分两部分:内核+片上外设。如果与电脑类比,内核与片上外设就如同电脑的CPU与主板、内存、显卡、硬盘的关系。
ARM公司只设计内核不生产芯片,他会将有关内核的技术授权给各半导体厂商例如ST、TI、Atme1、NXP等厂商。这些厂商都是基于这个内核自己设计片上外设如SRAM、ROM、FLASH、USART、GPIO等,然后集成到一个硅片上,这就是我们现在用的芯片。
芯片内部架构见图:
我们知道,在嵌入式开发中,比如51和Arduino,我们写程序烧入芯片就可以实现控制。那么我们写的程序怎么就能控制我们的单片机工作呢或者程序在控制什么东西呢br> 那个东西就是寄存器,其实不管我们用库开发还是寄存器开发我们本质上就是在控制寄存器上的每个位的通断,并且这些寄存器都有其特定的功能。换句话说每个外设(如GPI0、USART、I2C、SPI.…)都对应有寄存器来对他控制。
所以STM32可以用寄存器开发也可以用库开发。
STM的选型
STM32是ST的所有产品的统称,ST有两大家族STM8和STM32。STM8主要针对于低成本,对主频要求比较低、运算速度要求不是很高的低端市场。STM32主要应用于项目对主频要求较高、运算速度比较快、实时性好的中高端市场。STM32有很多产品大致划分可分为主流MCU、高性能MCU、低功耗MCU。其中主流MCU如STM32F1系列、高性能MCU如STM32F4、STM32F7系列、低功耗MCU如STM32L0系列。并且每个系列产品下面还会根据闪存容量、外设数量、封装大小分为很多种类并且价格也是差别很大。
用的是STM32F103ZET6,芯片说明书如下:
编写程序
先下载keil软件(官 下载MDK5的安装包):
所以要开发C51就得下载C51的Keil,要开发STM32就得下载MDK-Arm。
如果要设置C51和STM32的开发环境,一般需要准备如下文件:
由于我们使用的STM32型 为 STM32F103ZET6,还需要安装开发所需要的器件支持包(Device Family Pack, i.e. DFP),所以展开STM系列产品的菜单栏,找到芯片设备,点击左边Packs中的三个组件,Pack Installer 会自动从 上下载最新版本的组件,下载进度在 Pack Installer 底部状态栏显示。(由于我已经通过双击安装好了,所以是Up to date)
确定之后又跳到运行环境的界面:
可以看到已经包含了我们选择的库文件。如果还需要什么可以再点击图上的按钮再次打开运行环境配置页面。
然后添加main.c文件:
写完可以编译一下,如果输出正确就表示环境配置没问题。
进入设置界面
烧写程序
1. USB转串口烧写
参考这个:如何使用串口来给STM32下载程序
不过具体还得看官方的开发板说明书。
2. ST-Link烧写
用stlink下载比USB转TTL稍快一些,而且ST-Link可以进行仿真,对于大型程序的调试非常有用。
安装使用可以参考这个:STM32 ST-LINK Utility介绍、下载、安装、使用方法
STLink 上 LED 指示灯用于提示当前的工作状态,具体情况如下:
- LED 闪烁红色:STLink 已经连接至计算机。
- LED 保持红色:计算机已经成功与 STLink 建立通信连接。
- LED 交替闪烁红色和绿色:数据正在传输。
- LED 保持绿色:最后一次通信是成功的。
- LED 为橘黄色:最后一次通信失败。
下载程序说白了就是3步:
1.连接芯片:
Tarage -> connect或直接点击连接快捷按钮:
3.下载程序
点击“下载”(可以Taraget -> Program,也可以直接点击下载快捷按钮,如下图):
出现“Verification…OK”,说明下载成功。
ST-Link仿真
ST-LINK是专门针对STM8和STM32系列芯片的仿真器。使用ST-Link调试器,可以直接在Keil环境下进行下载,而且还可以进行在线调试
参考自:STM32 Keil中关于stlink的调试 下载设置
首先进入设置界面。找到Debug ,选择stlink调试器,点击setting:
点击Utilities选项卡,先取消use debug driver ,然后再选择选择ST-Link Debugger,点击Settings:
仿真的过程如下:
首先是重新编译整个项目:
进入仿真页面(以后面讲解的闪烁LED的程序为例):
GPIO配置
由于STM32的GPIO工作模式有8种,所以在GPIO输出之前要先对要操作的GPIO进行配置:
-
定义GPIO的初始化结构体类型
-
使能GPIO的时钟
-
配置GPIO的引脚
-
配置GPIO口的输出类型为推挽
-
配置GPIO口的输出速度
-
初始化GPIO(初始化相应的寄存器)
解释:
1.定义GPIO的初始化类型结构体:
此结构体的定义是在文件中,其中包括3个成员。
(1)来指定GPIO的哪个或哪些引脚,取值参见头文件的宏定义。
(2)GPIO的速度配置,此项的取值参见头文件枚举的定义,其中对应3个速度:10MHz、2MHz、50MHz;
(3)为GPIO的工作模式配置,其取值参见头文件枚举的定义,即GPIO的8种工作模式。
2.使能GPIO时钟
ARM与C51单片机不同的是,不用外设的时候,如IO口、ADC、定时器等等,都是禁止时钟的,以达到节能的目的,只有要用到的外设,才开启它的时钟。
此函数是在文件中定义的。其中第一个参数指要打开哪一组GPIO的时钟,取值参见文件中的宏定义,第二个参数为打开或关闭使能,取值参见文件中的定义,其中ENABLE代表开启使能,DISABLE代表关闭使能。
3.设置GPIO_InitTypeDef结构体三个成员的值
这里包括引脚、速度和工作模式,取值可参考第一部分。
4.初始化GPIO
函数配置GPIO,此函数是在文件中定义的,其中第一个参数代表要配置哪组GPIO,取值参见文件中的定义,第二个参数是第1步定义的GPIO的初始化类型结构体。
GPIO电平输出
官方让GPIO输出高低电平的函数:
函数就是置位GPIO,即让相应的GPIO输出高电平;
函数是让GPIO复位的,即让相应的GPIO输出低电平。
程序编写
闪烁LED灯
这个实验室做的两个led流水灯。
程序编写
首先新建一个文件夹:
在该文件夹下新建一个头文件:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!