3,H743的GPIO使用

1、GPIO模式

对于GPIO的配置种类有8种之多:
平时接触的最多的也就是推挽输出、开漏输出、上拉输入这三种

(1) 浮空输入_IN_FLOATING ——浮空输入,可以做KEY识别,RX1

(2)带上拉输入_IPU——IO内部上拉电阻输入

(3)带下拉输入_IPD—— IO内部下拉电阻输入

(4) 模拟输入_AIN ——应用ADC模拟输入,或者低功耗下省电

(5)开漏输出_OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能

(6)推挽输出_OUT_PP ——IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的
推挽输出:可以输出高,低电平,连接数字器件; 推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源低定。

推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。
(7)复用功能的推挽输出_AF_PP ——片内外设功能(I2C的SCL,SDA)

(8)复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)

2、输出电平控制

操作IO口输出时,2种控制方式:操作ODR或操作BSRR

  • 操作ODR寄存器
    在这里插入图片描述

  • 操作BSRR
    在这里插入图片描述

在这里插入图片描述

3、输入读取控制

在这里插入图片描述

4、小结

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GPIO(General Purpose Input/Output)通用输入输出引脚单片机上非常重要的一部分,它可以通过编程控制来实现对外设的控制。在使用GPIO之前,需要先对其进行初始化配置,以下是使用STM32单片机GPIO的基本流程: 1.选择要使用GPIO引脚,确定其对应的端口号和引脚号。 2.打开GPIO时钟,使其能够正常工作。 3.将GPIO对应的引脚配置为输入或输出,以及其它一些属性。 4.读取或设置GPIO的状态。 以下是C语言代码示例: ```c #include "stm32f4xx.h" #define LED_PIN GPIO_Pin_12 #define LED_PORT GPIOD int main(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); //打开GPIOD时钟 GPIO_InitStructure.GPIO_Pin = LED_PIN; //选择LED引脚 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //将LED引脚配置为输出 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //选择推挽输出模式 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //选择GPIO速度 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //选择无上下拉电阻 GPIO_Init(LED_PORT, &GPIO_InitStructure); //初始化LED引脚 GPIO_SetBits(LED_PORT, LED_PIN); //设置LED引脚输出高电平 while (1) { GPIO_ToggleBits(LED_PORT, LED_PIN); //翻转LED引脚状态 Delay(1000000); } } ``` 在上述代码中,我们首先定义了LED所对应的引脚和端口号,然后打开了对GPIOD时钟的使能,接着对LED引脚进行了输出模式、推挽输出、无上下拉电阻等属性的配置,最后通过GPIO_SetBits函数将LED引脚置为高电平。在主循环中通过GPIO_ToggleBits函数实现了LED引脚状态的翻转。 这里的Delay函数是一个自定义的延时函数,可以使用标准库提供的延时函数或者定时器等来实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值