开发板是GD32E103R-START,2020-6 V1.0
以下是非中断处理,代码比较简陋
#include "gd32e10x.h
int main(void)
{
volatile static uint8_t a = 0, b = 0, c = 0, d = 0;
systick_config();
rcu_periph_clock_enable(RCU_GPIOC);
gpio_init(GPIOC, GPIO_MODE_OUT_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_6);
rcu_periph_clock_enable(RCU_GPIOA);
gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_MAX, GPIO_PIN_0);
while(1){
if (gpio_input_bit_get(GPIOA, GPIO_PIN_0)){
delay_1ms(20);
if (gpio_input_bit_get(GPIOA, GPIO_PIN_0)){
while (gpio_input_bit_get(GPIOA, GPIO_PIN_0) && c < 100){
c++;
delay_1ms(10);
}
}
}
if (c >= 100){
a = 0;
b = 0;
c = 0;
d = 0;
gpio_bit_write(GPIOC, GPIO_PIN_6, 1);
}
else{
c = 0;
if (a == 1){
gpio_bit_write(GPIOC, GPIO_PIN_6, 1);
delay_1ms(500);
gpio_bit_write(GPIOC, GPIO_PIN_6, 0);
delay_1ms(500);
}
if ((a == 1) && (b == 0) && (!(gpio_input_bit_get(GPIOA, GPIO_PIN_0))) && (d == 0)){
delay_1ms(20);
if (!gpio_input_bit_get(GPIOA, GPIO_PIN_0)){
d = 1;
}
}

本文介绍了一款基于GD32E103R-START开发板的按键处理程序,包括非中断及中断处理两种方式。通过定时器和外部中断实现了对按键的长按、短按及双击识别。
最低0.47元/天 解锁文章
246





