付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
概述STM32处理器总线结构和通用I/O端口(GPIO)器复位和系统时钟外部中断和中断控制器USART串口看门狗通用输入/输出接口GPIO也称为并行I/O,是最基本的I/O形式STM32F系列微控制器根据型号不同有不同个数的
I/O口(26、37、51、80、112个)每位可以由
分别配置成以下多种工作模式:输入浮空(输入)输入上拉(输入)输入下拉(输入)模拟输入(输入)开漏输出(通用输出)推挽式输出(通用输出)推挽式复用(复用输出)开漏复用(复用输出)输入数据寄存器输出数据寄存器置位/复位寄存器输出控制开/关开/关开/关TTL触发输入驱动输出驱动VDDVSSVDDVSS模拟输入复用功能输入到片上外设读写读/写从片上外设复用功能输入推挽、开漏或VDDVSSP-MOSN-MOS保护二极管保护二极管I/O引脚每个GPIO端口都有如下特殊功能寄存器:两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH)两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR)一个32位置位/复位寄存器(GPIOx_BSRR)一个16位复位寄存器(GPIOx_BRR)一个32位锁定寄存器(GPIOx_LCKR)注意:上面的x代表:A,B,C,D,E,F,G中的任意一个。每个口(如A)的宽度为16位I/O口,0~15表示。这些特殊功能寄存器的相关定义在stm32f10x.h文件中。起始地址 外设 总线0x40012000-0x400123FFGPIO端口GAPB20x40011C00-0x40011FFFGPIO端口FAPB2寄存器名称 偏移地址0x40011800-0x40011BFFGPIO端口EAPB2GPIOA_LCKR18HGPIOA_BRR14H0x40011400-0x400117FFGPIO端口DAPB2GPIOA_BSRR10H0x40011100-0x400113FFGPIO端口CAPB2GPIOA_ODR0CHGPIOA_IDR08H0x40010C00-0x40010FFFGPIO端口BAPB2GPIOA_CRH04H0x40010800-0x40010BFFGPIO端口AAPB2GPIOA_CRL00H[]00:输入模式(复位后的状态)10:输出模式,最大速度2MHz01:输出模式,最大速度10MHz11:输出模式,最大速度50MHzCNFx[1:0]:配置输入或输出的具体模式MODEx[1:0]=00:00:模拟输入模式
10:上拉/下拉输入模式01:浮空输入模式(复位)11:保留MODEx[1:0]>00:00:通用推挽输出01:通用开漏输出10:复用功能推挽输出11:复用功能开漏输出3130292827262524232221
20191817
16CNF7[1:0]MODE7[1:0]CNF6[1:0]MODE6CNF5[1:0]MODE5CNF4[1:0]MODE4CNF3[1:0]MODE3CNF2[1:0]MODE2CNF1[1:0]MODE1CNF0[1:0]MODE0与低位类似,配置的是8~15位的工作模式。与低位端口配置寄存器一样,该寄存器都是可读/写的,复位时的值都是44444444H,即各个位都是输入模式且为浮空的输入模式。端口配置为输入端口,从该寄存器的相应位读数据。复位值为00000000H该寄存器只能以字(4字节)的形式
。4.端口数据输出寄存器(GPIOA_ODR)端口配置为输出端口,可以向寄存器的相应位读或写数据。低16位对应每个引脚,高16位保留.31302928272625242322212019181716保留IDR15IDR14IDR13IDR12IDR11IDR10IDR9IDR8IDR7IDR6IDR5IDR4IDR3IDR2IDR1IDR0该寄存器只能写。复位值为00000000H该寄存器只能以字(4字节)的形式写入。BRx:清除位x,1有效BSx:设置位x,1有效如果同时设置了BSx和BRx的对应位,BSx位起作用。6.端口复位寄存器(GPIOA_BRR)对端口的每一位进行复位操作。与GPIOA_BSRR相比,低16位为BRx位,高16位保留.31302928272625242322212019181716BR15BR14BR13BR12BR11BR10BR9BR8BR7BR6BR5BR4BR3BR2BR1BR0BS15BS14BS13BS12BS11BS10BS9BS8BS7BS6BS5BS4BS3BS2BS1BS0其中的每一位用来锁定控制寄存器(CRL,CRH)相应的4位。LCKx:锁位x,这些位可读写,只能实在LCKK位为
0时写入。0:不锁定;1:锁定端口配置LCKK:可通过锁键写入序列修改0:端口配置锁键位激活1:端口配置锁键位被激活,下次系统复位前寄存器被锁锁键写入序列:写1->写0->写1->读0->读2625242322212019181716保留LCKKLCK15LCK14LCK13LCK12LCK11LCK10LCK9LCK8LCK7LCK6LCK5LCK4LCK3LCK2LCK1LCK0#define
PERIPH_BASEPeripheral
base
*/#define
APB1PERIPH_BASE#define
APB2PERIPH_BASE#define
GPIOA_BASE#define
GPIOB_BASE#define
GPIOC_BASE#define
GPIOD_BASE#define
GPIOE_BASE#define
GPIOF_BASE#define
GPIOG_BASE((uint32_t)0x40000000)
/*!<PERIPH_BASE(PERIPH_BASE
+
0x10000)(APB2PERIPH_BASE+0x0800)(APB2PERIPH_BASE
+
0x0C00)(APB2PERIPH_BASE
+
0x1000)(APB2PERIPH_BASE
+
0x1400)(APB2PERIPH_BASE
+
0x1800)(APB2PERIPH_BASE
+
0x1C00)(APB2PERIPH_BASE
+
0x2000)起始地址外设总线0x40000000~0x400003FFTIM2定时器APB10x40000400~0x400007FFTIM3定时器0x40002C00~0x40002FFF窗口看门狗(WWDG)0x40003000~0x400033FF独立看门狗(IWDG)0x40004400~0x400047FFUSART20x40005400~0x400057FFI2C10x40010000~0x400103FFAFIOAPB20x40010400~0x400107FFEXTI0x40010800~0x40010BFFGPIO端口A0x40012400~0x400127FFADC10x40012C00~0x40012FFFTIM1时钟0x40021000~0x400213FF复位和时钟控制AHB0x40022000~0x400223FFFlash
器接口起始地址 外设 总线0x40012000-0x400123FFGPIO端口GAPB20x40011C00-0x40011FFFGPIO端口FAPB2寄存器名称 偏移地址0x40011800-0x40011BFFGPIO端口EAPB2GPIOA_LCKR18H0x40011400-0x400117FFGPIO端口DAPB2GPIOA_BRR14HGPIOA_BSRR10H0x40011100-0x400113FFGPIO端口CAPB2GPIOA_ODR0CH0x40010C00-0x40010FFFGPIO端口BAPB2GPIOA_IDR08HGPIOA_CRH04H0x40010800-0x40010BFFGPIO端口AAPB2GPIOA_CRL00Htypedef
struct{
IO
uint32_t
CRL;
IO
uint32_t
CRH;
IO
uint32_t
IDR;
IO
uint32_t
ODR;
IO
uint32_t
BSRR;
IO
uint32_t
BRR;
IO
uint32_t
LCKR;}
GPIO_TypeDef;#define
GPIOA#define
GPIOB#define
GPIOC#define
GPIOD#define
GPIOE#define
GPIOF#define
GPIOG((GPIO_TypeDef
*)
GPIOA_BASE)((GPIO_TypeDef
*)
GPIOB_BASE)((GPIO_TypeDef
*)
GPIOC_BASE)((GPIO_TypeDef
*)
GPIOD_BASE)((GPIO_TypeDef
*)
GPIOE_BASE)((GPIO_TypeDef
*)
GPIOF_BASE)((GPIO_TypeDef
*)
GPIOG_BASE)寄存器中关于各个位的定义,如:#define
GPIO_IDR_IDR0((uint16_t)0x0001)/*!<
Port
input
data,
bit
0*/#define
GPIO_ODR_ODR7
((uint16_t)0x0080)/*!<
Port
output
data,
bit
7
*/不同版本的“固件函数库”略有不同只要清楚“固件函数库是要做什么”,版本不同不是问题需要清楚的问题:固件函数库是怎么得到的?固件函数库在哪里存放?固件函数库的内容都有哪些?固件函数库怎么用?实际使用时,
不关心特殊功能寄存器,只关心如何正确调用固件函数库。写程序,实际是在已经有的程序实例上进行修改。固件函数库是生产商提供的,目的是为了用户更好的使用其制造的产品()。和安装EWARM
kickstart版本,进行相应的安(1)装。h/Download/sw/?item=EWARM-KS32安装工作完成后,就可以得到大部分的固件函数库。找到相应公司的相应例子,能看到固件函数库。(2)ST公司的官网固件函数库
网页中进行
:
/web/catalog/tools/FM147/CL1
794/SC961/SS1743/PF257890,完成,解压后即可得到固件函数库。有很多地方存放固件函数库在已经安装的EWARM
下:C:\Program
Files
(x86)\IAR
Systems\EmbeddedWorkbench6.5\arm\examples\ST\STM32F10x\IAR-STM32F103ZE-SK该文件夹下的所有文件。从ST官网
完成的固件库,可以放在任何计算机的硬盘的任何位置,解压缩后的固件函数库,不仅库函数还有大量的例子可以参考。函数库是一个固件函数包:由程序、数据结构和宏组成。包括微控制器所有外设的性能特征,还包括每一个外设的驱动描述和应用实例。给出的固件函数库内容很多,有2个主要文件夹:Libraries文件夹CMSIS子文件夹STM32F10x_StdPeriph_Driver
子文件夹inc子文件夹:固件函数库所需的头文件src子文件夹:固件函数库所需的源文件Project文件夹里面给出了一个标准的程序项目模版相关Example的子文件夹也包含在内CMSIS文件夹下的文件:一般不必改动
Inc和src文件夹下的文件:不必改动stm32f10x_conf.h:需要进行改动,打开用户自己用到的外设stm32ff10x_it.c:外设中断函数文件,用户需自己添加中断服务程序代码。,可根据自stm32ff10x_it.h:中断处理程序的己需要进行改动。Application.C:用户自行编写的程序。1.
stm32f10x_gpio.h //
version
V3.5.0GPIO_InitTypeDef
结构体的
;typedef
struct{uint16_t
GPIO_Pin;GPIOSpeed_TypeDef
GPIO_Speed;GPIOMode_TypeDef
GPIO_Mode;}GPIO_InitTypeDef;一些枚举数据GPIO_Speed,GPIO_Mode的定义;管脚名称的定义;复用I/O的相关地址定义;在stm32f10x_gpio.c所有18个函数的
。2.
stm32f10x_gpio.c //
version
V3.5.0其中有18个函数有几个与通用I/O相关,还有跟复用I/O相关的函数,在此不做介绍。仅介绍以下几个函数。void
GPIO_Init(GPIO_TypeDef*
GPIOx,GPIO_InitTypeDef*
GPIO_InitStruct);uint8_t
GPIO_ReadInputDataBit(GPIO_TypeDef*
GPIOx,
uint16_t
GPIO_Pin);uint16_t
GPIO_ReadInputData(GPIO_TypeDef*
GPIOx);uint8_t
GPIO_ReadOutputDataBit(GPIO_TypeDef*GPIOx,
uint16_t
GPIO_Pin);uint16_t
GPIO_ReadOutputData(GPIO_TypeDef*
GPIOx);void
GPIO_SetBits(GPIO_TypeDef*
GPIOx,
uint16_tGPIO_Pin);void
GPIO_ResetBits(GPIO_TypeDef*
GPIOx,
uint16_t
GPIO_Pin);void
GPIO_WriteBit(GPIO_TypeDef*
GPIOx,
uint16_t
GPIO_Pin,
BitAction
BitVal);void
GPIO_Write(GPIO_TypeDef*
GPIOx,
uint16_t
PortVal);详细的说明参看:ST公司提供的UM0427 User
manual32-bit
MCU
STM32F101xx
and
STM32F103xx
firmware
library配置信该函数功能是设定GPIOx口的息。void
GPIO_Init(GPIO_TypeDef*
GPIOx,GPIO_InitTypeDef*
GPIO_InitStruct)GPIOx:制定某个GPIO外设,x可以是A~GGPIO_InitStruct:指向结构GPIO_InitTypeDef的指针,包含了外设GPIO的配置信息。使用方法:设置A口的配置情况GPIO_Init(GPIOB,
&GPIO_InitStructure);该函数功能是设置GPIOx口的某一位置1void
GPIO_SetBits(GPIO_TypeDef*
GPIOx,
uint16_t
GPIO_Pin){/*
Check
the
parameters
*/assert_param(IS_GPIO_ALL_PERIPH(GPIOx));assert_param(IS_GPIO_
PIO_Pin));GPIOx->BSRR
=
GPIO_Pin;}使用方法://设定GPIOA口的13脚为1(高电平)GPIO_SetBits(GPIOA,GPIO_Pin_13);该函数功能给GPIOx写入输出数据PortValvoid
GPIO_Write(GPIO_TypeDef*
GPIOx,
uint16_tPortVal){/*
Check
the
parameters
*/assert_param(IS_GPIO_ALL_PERIPH(GPIOx));GPIOx->ODR
=
PortVal;}使用方法://设定GPIOA口的13脚为1(高电平)其余脚为0(低电平)GPIO_Write
(GPIOA,0x2000);该函数功能是读输入端口数据的值uint16_t
GPIO_ReadInputData(GPIO_TypeDef*GPIOx){/*
Check
the
parameters
*/assert_param(IS_GPIO_ALL_PERIPH(GPIOx));return
((uint16_t)GPIOx->IDR);}使用方法:
C口(设置为输入端口)的数据u16 temp;
temp=GPIO_ReadInputData(GPIOC);例1.D口的8脚接一个发光二极管,令发光二极管闪烁。int
main(void){GPIO_InitTypeDef
GPIO_InitStructure;RCC_Configuration();
//配置系统时钟,设置系统时钟为72MHzRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD
,
ENABLE);/*打开外设D的时钟*///配置LED所在外设的8引脚为输出GPIO_InitStructure.GPIO_Pin
=
GPIO_Pin_8;GPIO_InitStructure.GPIO_Speed
=
GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode
=
GPIO_Mode_Out_PP;GPIO_Init(GPIOD,
&GPIO_InitStructure);while
(1){GPIO_SetBits(GPIOD,GPIO_Pin_8);Delay(0x5FFFF);GPIO_ResetBits(GPIOD,GPIO_Pin_8);Delay(0x5FFFF);//PD8脚置1,灯熄灭//延时//PD8脚清0,点亮灯//延时}#include”stm32f10x_conf.h”const
unsigned
charledchange1[10]={0x00,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 金融+创新与风险管理手册
- 程序员缓存策略设计与使用规范手册
- 高中地理课堂生成式AI辅助教学案例分析与反思教学研究课题报告
- 初中化学溶液配制中溶剂纯度误差控制方法课题报告教学研究课题报告
- 2026年住建系统装配式建筑发展与评价标准题库
- 2026年细节关注能力考评题库
- 2026年机关干部重实践建新功考核题
- 2026年定西市中医院医护人员招聘笔试模拟试题及答案解析
- 2026年药物合成研究员绩效考核标准
- 2026年医疗器械注册与市场监管流程解析
- 乙型流感儿童的护理
- 重症医学科临床技术操作规范
- DL∕T 1773-2017 电力系统电压和无功电力技术导则
- GB/T 15115-2024压铸铝合金
- (正式版)JBT 14449-2024 起重机械焊接工艺评定
- 北京玉渊潭中学英语新初一分班试卷含答案
- 员工入职通知书
- 浙江2023年三支一扶考试真题
- 《小数的初步认识》单元作业设计
- 正确的药物服用方法培训专家讲座
- 项目部驻地建设方案74730
评论
0/150
提交评论