- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
深⼊浅出谈STM32F4系列单⽚机GPIO相关配置——寄存器版
STM32通⽤I/O(GPIO)
从嵌⼊式开发实践中总结出来的教程,深⼊浅出地教⼤家怎样掌握STM32IO ⼝的使⽤。所谓寄存器配
置,其实就是通过直接操作寄存器相应的位,来实现某些特定功能,这种⽅法⽐较灵活,且操作简便,
由于STM32寄存器太多,实际编程中,不建议牢记住这些寄存器,⽤到时再回来翻翻⼿册或者找度娘,
看多了不然⽽然就记住了。此外本教程所讲到的IO配置⽅法也适⽤于库函数版本。
GPIO功能描述
GPIO (英语:General-purpose input/output),通⽤型之输⼊输出的简称,功能类似STM32 GPIOx Px1-
Px15(例:GPIOA
PA1,PA2) ,其接脚可以供开发者由程控⾃由使⽤,PIN脚依现实考量可作为通⽤输⼊与输出
(INT/OUT),复⽤功能(AF) ,模拟配置(AIN)。
GPIO相关寄存器
1.GPIO端⼝模式寄存器GPIOx_MODER:
00输⼊(复位状态)01输出模式 10复⽤模式 11模拟模式
每两位配置⼀个IO端⼝模式(位31:0)
2.GPIO输出类型寄存器GPIOX_OTYPER:
0输出推挽 1输出开漏
每⼀位配置⼀个IO端⼝输出类型(位31 :16保留
位15:0)
3.GPIO输出速度寄存器GPIOX_OSPEEDR:
00 2MHz 01 25MHz 10 50MHz 11 100MHz
每两位配置⼀个IO端⼝输出速率(位31:0)
4.GPIO上下拉寄存器GPIOX_PUPDR :
00⽆上下拉 01上拉 10下拉 11保留
每两位配置⼀个IO端⼝上下拉功能(位31:0)
5.GPIO输⼊寄存器GPIOX_IDR :
0保留复位值 1开启io ⼝输⼊功能
每⼀位配置⼀个IO端⼝输⼊开关(位31 :16保留
每⼀位配置⼀个IO端⼝输⼊开关(位31 :16保留
位15:0)
6.GPIOX_ODR输出寄存器:
0保留复位值 1开启io ⼝输出功能
每⼀位配置⼀个IO端⼝输出开关(位31 :16保留
位15:0)
7.GPIOX_BSRR置位复位寄存器:
位31 :16 (0不对ODRX寄存器复位 1对ODRX寄存器复位)
位15:0 (0不对ODRX寄存器置位 1对ODRX寄存器置位)
每⼀位配置⼀个IO端⼝置复位(位31 :16复位
位15:0置位)
8.GPIOX_LCKR配置锁定寄存器:
位31 :17保留复位值 ;位16:锁定键 0端⼝配置锁定键未激活 1端⼝配置已激活 ;
位15:0端⼝x锁定位(0端⼝配置未锁定 1端⼝配置
已锁定)
每⼀位配置⼀个IO端⼝是否锁定(位15:0)
9.GPIOX_AFR复⽤功能低位寄存器:
AF0:MCO/SWD/SWCLK/RTC AF1:TIM1/TIM2
AF2:TIM3-TIM5 AF3:TIM8-TIM11
AF4:I2C1~I2C3 AF5:SPI1/SPI2
AF6:SPI3 AF7:USART1~3
AF8:USART4~6 AF9;CAN1/CAN2/TIM12-TIM14
AF10:USB_OTG/USB_HS AF11:ETH
AF12:FSMC/SDIO/OTG/HS AF13:DCIM
AF14: AF15:EVENTOUT
IO ⼝位7 :0操作GPIOx_AFR[0]寄存器
IO ⼝位15:8操作GPIOx_AFR[1]寄存器
每四位配置⼀个复⽤功能I/O
AF0~AF7:分别对应⼀个16位数0000-0111
AF8~AF15:分别对应⼀个16位数1000-1111
10.操作以上这些寄存器只是配置了IO的功能,要想IO端⼝能
正常⼯作,还要开启对应GPIO时钟。
时钟外设寄存器:AHB1ENR(0~8位表⽰IO ⼝GPIOA-
GPIOI时钟使能)0 :禁⽌ 1使能**
操作寄存器初始化代码
**直接操作相关寄存器,相对应的位写⼊值,达到改变IO ⼝功能的⽬的。例如:设置IO ⼝PA0功能为推
挽输出,上拉,速率100M,⾼电平**
// An highlighted block
**⽅法1**
void GPIOA_PA0_Init(void)//初始化
{
RCC-AHB1ENR|=10;//使能PORTA时钟
GPIOA-MODER=~(0;//对应位清零
GPIOA-MODER|=0//配置为输出模式
//GPIOA-MODER|=10;
GPIOA-OTYPER=~(0X0001);//对应位清零
文档评论(0)