STM32学习笔记(4)——GPIO输出寄存器操作

  • STM32外设基本知识

GPIO:GPIO(英语:General-purpose input/output),通用型之输入输出的简称

  • STM32F407ZET6引脚分组

STM32F407ZET6(144引脚)

    -  一共有7组IO口 (PA、PB、PC、PD、PE、PF、PG)

    -  每组IO口有16个IO引脚

    -  一共16X7=112个IO引脚

外加2个PH0和PH1(用于连接晶振)

一共114个IO口引脚

 

  • 引脚寄存器

 每组通用 I/O 端口包括(共十个,下面x代表:A B C D E F G 组):

4 个 32 位配置寄存器(GPIOx_MODER、GPIOx_OTYPER、GPIOx_OSPEEDR 和 GPIOx_PUPDR)。

2 个 32 位数据寄存器(GPIOx_IDR 和 GPIOx_ODR)。

1 个 32 位置位/复位寄存器 (GPIOx_BSRR)、

1 个 32 位锁定寄存器(GPIOx_LCKR)

2 个 32 位复用功能选择寄存器(GPIOx_AFRH 和 GPIOx_AFRL)。

 

 

寄存器实际物理地址 = 基地址 + 偏移地址

 

  • GPIO工作方式

GPIO工作方式

4种输入模式(数据从引脚到芯片内部)

浮空输入(无上下拉电阻)

上拉输入

下拉输入

模拟输入(模拟信号)

4种输出模式

开漏输出(带上拉或者下拉)

开漏复用功能(带上拉或者下拉)

推挽式输出(带上拉或者下拉)

推挽是复用功能(带上拉或者下拉)

4种最大输出速度

2MHZ

25MHZ

50MHZ

100MHZ

 

开漏:引脚只能输出0,如果想输出1,那外部要接上拉电阻。

推挽:引脚可输出0 或者 输出1(常用)

 

上拉电阻:将一个不确定的信号,通过一个电阻与电源VCC相连,固定在高电平。

作用:上拉是对器件注入电流;灌电流;当一个接有上拉电阻的IO端口设置为输入状态时,它的常态为高电平。

下拉电阻:将一个不确定的信号,通过一个电阻与地GND相连,固定在低电平。

作用:下拉是从器件输出电流;拉电流。当一个接有下拉电阻的IO端口设置为输入状态时,它的常态为低电平。

上拉电阻和下拉电阻二者共同的作用是:避免电压的“悬浮”,造成电路的不稳定。

 

  • LED开发

1.理解LED电路原理

 

LE0连接在PF9。

PF9输出0(低电平),灯亮

PF9输出1(高电平),灯灭

 

2.打开GPIOF组时钟,(STM32所有外设时钟都是关闭的)

//使能GPIO F组时钟

RCC_AHB1ENR |= (0x01<<5);

 

3、设置GPIO F9引脚模式、上/下拉、输出类型、速度。

  • GPIOx_MODER

//PF9设置为通用输出

GPIOF_MODER &= ~(0x01<<19);  //19位置0

GPIOF_MODER |= (0x01<<18);   //18位置1

  • GPIOx_PUPDR

//PF9设置为上拉

GPIOF_PUPDR &= ~(0x01<<19);  //19位置0

GPIOF_PUPDR |= (0x01<<18);   //18位置1

  • GPIOx_OTYPER

//PF9设置为输出推挽

GPIOF_OTYPER &= ~(0x01<<9);  //9位置0

  • GPIOx_OSPEEDR

//PF9设置速度为50MHZ

GPIOF_OSPEEDR |= (0x01<<19);   //19位置1

GPIOF_OSPEEDR &= ~(0x01<<18);  //18位置0

4、通过BSRR寄存器设置ODR输出0或者输出1

//BSRR 第9位置1 ODR输出1,LED0灯灭

GPIOF_BSRR |= (0x01<<9);  //9位置1

 

//BSRR 第25位置1 ODR输出0,LED0灯亮

GPIOF_BSRR |= (0x01<<25);  //25位置1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值