STM32 GPIO的配置
#define IS_GPIO_SPEED(SPEED) ((SPEED == GPIO_Speed_10MHz) ||
(SPEED == GPIO_Speed_2MHz) || (SPEED == GPIO_Speed_50MHz))
做一個(gè)GPIO輸出的試驗(yàn)
當(dāng)I/O 端口被配置為推挽模式輸出時(shí):輸出寄存器上的0 激活N-MOS,而輸
出寄存器上的1 將激活P-MOS。
用這段程序?qū)崿F(xiàn):GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
int main(void)
{
#ifdef DEBUG
debug();
#endif
RCC_Configuration();
NVIC_Configuration();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 |
GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
while (1)
{
LED1
LED1
}
}
做一個(gè)GPIO輸入的試驗(yàn):以EK-STM32F中LCDdemo做例子
這個(gè)試驗(yàn)中把GPIO的PD.04做為按鍵輸入,當(dāng)下降沿來(lái)臨時(shí)觸發(fā)。
LCDdemo中的例程如下:首先配置按鍵PD.03, PD.04為按鍵輸入接口。
void Button_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);
}
下面為按鍵作用是啟動(dòng)外部中斷
GPIO_EXTILineConfig(GPIO_PortSourceGPIOD, GPIO_PinSource3);
EXTI_InitStructure.EXTI_Line = EXTI_Line3;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //設(shè)定中斷模式
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //設(shè)定下降沿觸
發(fā)模式
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
評(píng)論