牛人的STM32学习笔记(寄存器版本).doc

牛人的STM32学习笔记(寄存器版本).doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

一、GPIO口的配置

STM32的DGPIO口最多可以有7组〔GPIOa~GPIOg〕,而每一组GPIO口均有16个双向IO组成。并且没个IO口均可配置成8种模式〔4种输入模式,4种输出模式〕。不管配置哪个IO口也不管将其配置成哪种模式〔但是配置成哪种模式要看具体应用,参考《中文参考手册》第105页〕都可以按以下步骤来进行配置:

使能PORTx〔x=A~G〕时钟

这里就得操作存放器RCC_APB2ENR〔32为存放器〕了

15

14

13

12

11

10

9

8

ADC3EN

USART1EN

TIM8EN

SPI1EN

TIM1EN

ADC2EN

ADC1EN

IOPGEN

7

6

5

4

3

2

1

0

IOPFEN

IOPEEN

IOPDEN

IOPCEN

IOPBEN

IOPAEN

保存

AFIOEN

RCC_APB2ENR的0~15位〔06~32位保存〕

第2~8分别是使能GPIOA~GPIOG时钟的,只要将其置“1”即可,如RCC_APB2ENR|=12;就是使能GPIOA的时钟;其余IO口的始终使能一次类推。

对相应的IO模式进行配置,低8位配置GPIOx_CRL;高8位配置GPIOx_CRH

31

30

29

28

27

26

25

24

CNF7[1:0]

MODE7[1:0]

CNF6[1:0]

MODE6[1:0]

23

22

21

20

19

18

17

16

CNF5[1:0]

MODE5[1:0]

CNF4[1:0]

MODE4[1:0]

15

14

13

12

11

10

9

8

CNF3[1:0]

MODE3[1:0]

CNF2[1:0]

MODE2[1:0]

7

6

5

4

3

2

1

0

CNF1[1:0]

MODE1[1:0]

CNF0[1:0]

MODE0[1:0]

GPIOx_CRL(x=A~G〔端口配置低存放器x=A…E)

该存放器用于配置GPIOx的低8位,具体8种模式的配置见《中文参考手册》例如:GPIOD-CRL=0XFFFFF0FF;GPIOD-CRL|=0/PD.2推挽输出;其余IO口的低8位以此类推。

31

30

29

28

27

26

25

24

CNF15[1:0]

MODE15[1:0]

CNF14[1:0]

MODE14[1:0]

23

22

21

20

19

18

17

16

CNF13[1:0]

MODE13[1:0]

CNF12[1:0]

MODE12[1:0]

15

14

13

12

11

10

9

8

CNF11[1:0]

MODE11[1:0]

CNF10[1:0]

MODE10[1:0]

7

6

5

4

3

2

1

0

CNF9[1:0]

MODE9[1:0]

CNF8[1:0]

MODE8[1:0]

GPIOx_CRH(端口配置高存放器x=A…E)

该存放器用于配置GPIOx的高8位,具体8种模式的配置见《中文参考手册》例如:

GPIOA-CRH=0XFFFFFFF0;;GPIOA-CRH|=0//PA8推挽输出;其余IO口的高8位以此类推。

端口的输入和输出电平配置

15

14

13

12

11

10

9

8

IDR15

IDR14

IDR13

IDR12

IDR11

IDR10

IDR9

IDR8

7

6

5

4

3

2

1

0

IDR7

IDR6

IDR5

IDR4

IDR3

IDR2

IDR1

IDR0

GPIOx_IDR〔端口输入数据存放器x=A…E〕

该存放器配置IO口的0~15位的输入数据,以16位读出。

15

14

13

12

11

10

9

8

ODR15

ODR14

ODR13

ODR12

ODR11

ODR10

ODR9

ODR8

7

6

5

4

3

2

1

0

ODR7

ODR6

ODR5

ODR4

ODR3

ODR2

ODR1

ODR0

GPIOx_ODR〔端口输出数据存放器x=A…E〕

该存放器配置IO口的0~15位的输入初始状态,例如:GPIOA-ODR|=113;//PA13上拉输入

一般GPIO口配置可仿以下两个程序:

voidKEY_Init(void)

{

RCC-APB2ENR|=12;//使能PORTA时钟

GPIOA-CRL=0XFFFFFFF0;//PA0设置成输入

GPIOA-CRL|=0

GPIOA-CRH=0X0F0FFFFF;//PA13,15设置成输入

GPIOA-CRH|=0

GPIOA-ODR|=113; //PA13上拉,PA0默认下拉

GPIOA-ODR|=115;

文档评论(0)

199****4744 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7002121022000045

1亿VIP精品文档

相关文档