2333|0

565

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

【GD32L233C-START评测】12、按键——外部中断 [复制链接]

本帖最后由 freeelectron 于 2022-2-7 13:02 编辑

相关文章:

【GD32L233C-START评测】1、优点与缺点都很明显的GD32L233C-START(开箱)

【GD32L233C-START评测】2、非阻塞方式点灯,blink,blink,blink……

【GD32L233C-START评测】3、pwm实现呼吸灯

【GD32L233C-START评测】4、串口不定长数据接收

【GD32L233C-START评测】5、Flash读写——使用内部Flash存储数据

【GD32L233C-START评测】6、硬件I2C驱动0.96吋OLED

 

【GD32L233C-START评测】7、硬件SPI1驱动RC522

【GD32L233C-START评测】8、获取MCU96位唯一ID、SRAM、FLASH大小

【GD32L233C-START评测】9、IAP程序升级——基于YMODEM协议

【GD32L233C-START评测】10、使用内部参考电压校准adc,adc采样更准确

 

【GD32L233C-START评测】11、GD32 ISP软件还不支持GD32L233

 

 

1、硬件连接

可以看出,PA0通过R29下拉到GND,按键按下时, PA0的电压为3.3V,没有按下时,PA0的电压为0V,因此可以通过判断上升沿,判断按键是否按下。

 

2、中断优先级

可以看出只有2位,4个优先等级,而且不分先占、次占优先级,这与cortex m3还是区别比较大的。

 

3、中断线

 可以看出PA0 / PB0 / PC0 / PD0 / PF0对应一个中断线,即就是这几个如果要用到外部中断,同一时刻只能有一个。

 

4、中断函数

查看startup_gd32l23x.s文件,发现外部IO中断只有7个中断函数,分别是:

EXTI0_IRQHandler

EXTI1_IRQHandler

EXTI2_IRQHandler

EXTI3_IRQHandler

EXTI4_IRQHandler

EXTI5_9_IRQHandler

EXTI10_15_IRQHandler

从这里也可以看出,PX5-PX9,对应一个中断函数,PX10-PX15,对应一个中断函数,需要在中断函数中判断,具体是哪个中断源。

 

5、代码实现

static uint8_t KeyState=0;

void KeyInit(void)
{
	rcu_periph_clock_enable(RCU_GPIOA);
	gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_0);

    /* enable the SYSCFG clock */
    rcu_periph_clock_enable(RCU_SYSCFG);
    /* enable and set key EXTI interrupt to the specified priority */
    nvic_irq_enable(EXTI0_IRQn, 2U);

    /* connect key EXTI line to key GPIO pin */
    syscfg_exti_line_config(EXTI_SOURCE_GPIOA, EXTI_SOURCE_PIN0);

    /* configure key EXTI line */
    exti_init(EXTI_0, EXTI_INTERRUPT, EXTI_TRIG_RISING);
    exti_interrupt_flag_clear(EXTI_0);
}


void KeyPolling(void)
{
	if(KeyState)
	{
		KeyState=0;
		printf("key press\r\n");
	}
}


void EXTI0_IRQHandler(void)
{
    if(RESET != exti_interrupt_flag_get(EXTI_0)) {
        exti_interrupt_flag_clear(EXTI_0);
		KeyState=1;
    }
}

6、现象

 

 

 

 

 

 

 

此帖出自GD32 MCU论坛
点赞 关注
个人签名stm32/LoRa物联网:304350312
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表