这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » GPIO 引脚模式 打开时钟位置

共1条 1/1 1 跳转至

GPIO 引脚模式 打开时钟位置

工程师
2014-09-15 20:17:53     打赏
1、GPIO的输出 1GPIO_Mode_AIN 模拟输入 
2GPIO_Mode_IN_FLOATING 浮空输入

3GPIO_Mode_IPD 下拉输入 
4GPIO_Mode_IPU 上拉输入
 
5GPIO_Mode_Out_OD 开漏输出

6GPIO_Mode_Out_PP 推挽输出
7GPIO_Mode_AF_OD 复用开漏输出 
8GPIO_Mode_AF_PP 复用推挽输出


在STM32中选用IO模式
(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,读输入值是未知的
(7)复用功能的推挽输出_AF_PP ——片内外设功能(I2C的SCL,SDA)
(8)复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)

调试中遇到的实际问题:设置一个GPIO口为普通的IO,驱动一个LED,设置模式为GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;程序不能正常运行,LED不变化。
设置模式为GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;程序正常运行。 

2、GPIO 在初始化之前必须打开时钟         GPIO_InitTypeDef GPIO_InitStructure;       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;         GPIO_Init(GPIOA, &GPIO_InitStructure);
以上程序是正确的,下面的程序是不正确的
        GPIO_InitTypeDef GPIO_InitStructure;       
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;         GPIO_Init(GPIOA, &GPIO_InitStructure);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]