原理图
测试代码
和32不同的地方在GPIO的配置,相关的库函数不一样。
#include "gd32f10x.h" // Device header
#include "systick.h"
void Key_Init(void)
{
rcu_apb2_clock_config(RCU_APB2_CKAHB_DIV1); // APB2时钟分频设置 PC14属于APB2的外设
rcu_periph_clock_enable(RCU_GPIOC); //使能RCU_GPIOC
gpio_init(GPIOC, GPIO_MODE_IPU, GPIO_OSPEED_50MHZ, GPIO_PIN_14);
}
uint8_t Key_GetNum(void)
{
uint8_t KeyNum = 0;
if (gpio_input_bit_get(GPIOC, GPIO_PIN_14) == 0)
{
Delay_ms(20);
while (gpio_input_bit_get(GPIOC, GPIO_PIN_14) == 0);
Delay_ms(20);
KeyNum = 1;
}
if (gpio_input_bit_get(GPIOC, GPIO_PIN_14) == 0)
{
Delay_ms(20);
while (gpio_input_bit_get(GPIOC, GPIO_PIN_14) == 0);
Delay_ms(20);
KeyNum = 2;
}
return KeyNum;
}
比如上面按键的初始化中,时钟先选择分频系数rcu_apb2_clock_config之后,再使能rcu_periph_clock_enable。
GPIO的配置,也有了一个初始化函数gpio_init,不用一个一个的写结构体的参数。