GD32固件库学习(三)-GPIO口使用

1 背景

关于GPIO口的使用是各类教程的入门经典例子——流水灯QAQ,连夜买了一个简单的开发板学习(好贵我焯,时间够的画建议不如自己画一个),参考官方的例子和网上的教程编写程序;

2 关于GPIO

手册解释如下:
各片上设备用其来实现逻辑输入/输出功能。每个 GPIO 端口有相关的控制和配置寄存器以满足特定应用的需求。GPIO 引脚上的外部中断在中断/事件控制器(EXTI)中有相关的控制和配置寄存器。
GPIO 端口和其他的备用功能(AFs)共用引脚,在特定的封装下获得最大的灵活性。GPIO 引脚通过配置相关的寄存器可以用作备用功能引脚,备用功能输入/输出都可以。
这个备用功能以前没怎么注意,用HAL库习惯了,stm32标准库开发中也有相关知识,这里强烈建议结合野火或者正点原子的标准库例子进行学习,可以理解很多代码;

3 编程要点

要点如下:
(1)使能GPIO端口时钟;
(2)初始化GPIO,包括引脚设置和输出模式
(3)使用固件库提供的函数控制GPIO口输出高低电平

4 代码部分

int main(void)
{
    /* configure systick */
    systick_config();

    /* enable the LEDs GPIO clock */
    rcu_periph_clock_enable(RCU_GPIOC);

    /* configure LED1 GPIO port */
    gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_6);
    gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_6);
    /* reset LED1 GPIO pin */
    gpio_bit_reset(GPIOC, GPIO_PIN_6);

    while(1) {
        /* turn on LED1 */
        gpio_bit_set(GPIOC, GPIO_PIN_6);
        delay_1ms(1000);

        /* turn off LED1 */
        gpio_bit_reset(GPIOC, GPIO_PIN_6);
        delay_1ms(1000);
    }
}

*一些建议
所有的官方示例代码都是直接在main函数里写,个人开发的时候可以采取gpio.c等形式。

posted @ 2022-10-14 21:51  Phoenix-Tree  阅读(529)  评论(0编辑  收藏  举报