STM32F103C8T6————GPIO工作模式及其部分函数

本文详细介绍了STM32的GPIO工作模式,包括浮空输入、模拟输入、上拉/下拉输入、推挽输出和开漏输出。此外,还解析了GPIO的写入和读取操作,涉及端口设置寄存器BSRR、端口清除寄存器BRR以及输入和输出数据寄存器IDR和ODR。
摘要由CSDN通过智能技术生成

CPU的引脚以GPIO的方式工作时,有多种模式可以配置。(系统复位后,每根GPIO引脚自动设置为浮空输入模式

(1) 浮空输入:IO口的电平状态未定,即当有外部接入时,IO的电平状态完全由外部输入决定

2)模拟输入:将外部模拟信号,如信号发生器产生的正强波信号,接到GPIO引脚,当系统需要有 AD或D/A转换功能时,需要使用GPIO引脚的这种工作模式。

3)上拉/下拉输入:在芯片每根引脚内部电路中,分别接有上(下)拉电阻。当将某引脚配置为上(下)拉时,内部电路将与上(下)拉电阻相连。上(下)拉电阻的主要作用是将不确定的信号通过电阻钳位在高(低)电平,电阻顺便也起限流的作用。
4)推挽输出:通俗地讲,当输出低电平时外部电流经GPIO引脚流入芯片内部,俗称灌电流(吸收负载的电流);当输出高电平时,电流从芯片内部经GPIO引脚向外流出,俗称拉电流(对负载提供电流)。因此,此电路工作形式如同芯片内部器件与外部负载之间的“拉锯”,故称推挽推挽输出方式的电路驱动能力较强
5)开漏输出:从电路结构上讲,开漏输出指的是CMOS电路的输出级(漏极)直接与外部负载相连,这样造成的结果是电路没有拉电流能力,只有高阻态和低电平输出(灌电流)两种状态。为了克服这个缺陷,需要接外部 上拉电阻,以实现高电平输出的能力。

  • GPIO引脚的部分函数
  • 一,向GPIO写入值
//GPIO_SetBits(GPIOA,GPIO_Pin_5)//将GOIOA口写入高电平

/*面向寄存器操作*/

Uint16_t GPIO_SetBits(GPIO_TypeDef*GPIOX,uint16_t GPIO_pin)

{

  GPIOX->BSRR=GPIO_pin;

}

注:端口设置寄存器:BSRR。在STM32手册中,BSRR (端口设置/清除寄存器)完成了两种功能:置1或清0端口。由于GPIO端口中有专门的清0寄存器,所以对于BSRR寄存器,我们侧重它低16位的置1功能(高16位负责清0)

//GPIO_ResetBits(GPIOA,GPIO_Pin_5)//将GOIOA口写入低电平
/*面向寄存器操作*/
Uint16_t GPIO_ResetBits(GPIO_TypeDef*GPIOX,uint16_t GPIO_pin)
{
  GPIOX->BRR=GPIO_pin;
}

端口清除寄存器:BRR。BRR与BSRR寄存器的功能相反,它清0端口。BRR的每一位与外部的GPIO引脚一对应.

二,读取GPIO引脚状态

1,读出刚写入GPIO引脚的值

uintl6_t GPIO_ ReadInputDataBit(GPIO TypeDef* GPIOx, uintl6_t GPIO_Pin)
{

uint8_t bitstatus =0x00;

if ((GPIOx->IDR & GPIO_ Pin) != (uint32 t)Bit_RESET)
    bitstatus = (uint8_t)Bit_SET;

else

bitstatus = (uint8_t)Bit_RESET;
reset bitstatus;
}

(1)端口输入寄存器:  IDR。IDR输入数据寄存器保存端口从外部接收过来的数据(属性为只读)。由于每个端口只有16根引脚,所以寄存器只使用了低16位(每次接收2字节),高16位保留不用。
2,读出GPIO引脚本身输出的值

uint16_t GPIO ReadOnputDataBit(GPIO TypeDef* GPIOx, uint16 tGPIO Pin)
{
uint8_t bitstatus =0x00;
if ((GPIOx->ODR & GPIO_ Pin) != (uint32 t)Bit RESET)
bitstatus= (uint8 t)Bit_SET;
else
bitstatus = (uint8_ t)Bit_RESET;
reset bitstatus;
}
//GPIO_ ReadOutputDataBit (GPIOF, GPIO Pin 8);//使用实例

(2)端口输出寄存器: ODR 。ODR输出数据寄存器暂存将要从端口发送出去的数据(属性为可读可写)。与IDR同样的原因,该寄存器也只使用了低16位(每次发送2字节),高16位保留不用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

唐诗宋詞

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

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

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

打赏作者

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

抵扣说明:

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

余额充值