STM32hal库学习(F1)-GPIO

GPIO

电气特性

STM32工作电压范围:2V<=VDD<=3.6V

GPIO识别电压范围:COMS端口:-0.3V VIL ≤ 1.164V, 1.833V ≤ VIH 3.6V

GPIO输出电流:单个IO最大25mA

引脚分布

电源引脚:V开头

晶振引脚 :HSE(外部高速晶振),HSI(内部高速晶振)

                LSE(外部低速晶振),LSI(内部低速晶振)

复位引脚:NRST

下载引脚:

BOOT引脚:BOOT0...

GPIO引脚:

IO结构图

TTL肖基特触发器

特点:  当输入电压高于正向阈值电压,输出为高;

             当输入电压低于负向阈值电压,输出为低;

             当输入在正负向阈值电压之间,输出不改变。

作用:  整形,如正弦波转方波

八种工作模式

GPIO寄存器相关

(工作模式)CRL,CRH

这里其实可以注意,输入上拉和输入下拉,我可以通过ODR寄存器写0或者写1来操作

(端口输入数据寄存器)IDR

(端口输出数据寄存器)ODR

(端口位设置/清除寄存器)BSRR

ODR和BSRR的区别

使用ODR,在读和修改访问之间产生中断时,可能会发生风险;BSRR则无风险

GPIOB->ODR |= 1 << 3;          /* PB3 = 1 */
GPIOB->BSRR = 0x00000008;      /* PB3 = 1 */

//ODR修改,读.改.写
//BSRR修改,写 

所以一般建议操作BSRR寄存器

GPIO配置步骤

//结构体介绍
typedef struct 
{ 
  uint32_t Pin;        /* 引脚号 */ 
  uint32_t Mode;   /* 模式设置 */ 
  uint32_t Pull;       /* 上拉下拉设置 */ 
  uint32_t Speed;  /* 速度设置 */ 
} GPIO_InitTypeDef;
GPIO_InitTypeDef GPIO_InitStructure;

_HAL_RCC_GPIOA_CLK_ENABLE();                                 //使能GPIOA的时钟

 GPIO_InitStructure.Mode = GPIO_MODE_OUT_PP;                 //推挽输出模式
 GPIO_InitStructure.Pin = GPIO_PIN_0;                        //配置PA0端口
 GPIO_InitStructure.Pull = GPIO_PULLDOWN;                    //默认下拉
 GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_HIGH;            //高速
 
 HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);                  //初始化

//输出状态设置
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);     //设置低电平
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_0);                    //翻转电平

//读取输入状态
HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0);                      //读取PA0端口电平

该文章参考正点原子资料,请勿商用

有错误地方请大家指点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

油门子z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值