灵动微MM32F003硬件最小系统 --- GPIO INPUT例程解析【3】

同GPIO输出一样,只需要两个步骤就可以实现GPIO输入的功能。

1 将GPIO配置为输出模式

void GPIO_ConfigInit(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);    
    //PA0 INPUT
    GPIO_InitStructure.GPIO_Pin  =  GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    
    //PB6 INPUT
    GPIO_InitStructure.GPIO_Pin  =  GPIO_Pin_6;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

    //PB0/PB1 OUTPUT
    GPIO_InitStructure.GPIO_Pin  =  GPIO_Pin_0|GPIO_Pin_1;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
}

2 调用接口函数实现功能。

int main(void)
{
    
    RCC_ConfigInit();
    GPIO_ConfigInit();
    Uart_ConfigInit(9600);

    while(1) {
        //get PA0 input data;
        gpioTempBuf[ 0 ] = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0);     
        //get GPIOB input data;
        gpioTempBuf[ 1 ] = GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_6);          


        if(gpioTempBuf[ 0 ] != Bit_RESET) {  
        //if level of IO changed,printf current status;
            GPIO_ResetBits(GPIOB, GPIO_Pin_0);
            UartSendGroup((u8*)printBuf, sprintf(printBuf, "PA0 PRESS\r\n"));
        }
                else
                        GPIO_SetBits(GPIOB, GPIO_Pin_0);
        if(gpioTempBuf[ 1 ] != Bit_RESET) {
            GPIO_ResetBits(GPIOB, GPIO_Pin_1);
            UartSendGroup((u8*)printBuf, sprintf(printBuf, "PB6 PRESS\r\n"));
        }
                else
                        GPIO_SetBits(GPIOB, GPIO_Pin_1);
     }
}

这个例程实现以下功能:
1 当PA0输入为低电平时,PB0控制LED亮;
2 当PB6输入为低电平时,PB1控制LED亮。

官方例程的修正已基本完成,需要程序的同学可以到百度网盘下载。
提取码:0o5i

你可能感兴趣的:(灵动微MM32F003硬件最小系统 --- GPIO INPUT例程解析【3】)