2274|0

12

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

第三篇 使用外部中断EXTI读取按键 [复制链接]

本帖最后由 xiaoli2018 于 2022-1-29 20:58 编辑

GPIO除了通用的IO功能,还可以配置外部中断源EXTI。这样当IO检测到引脚状态的变化时,可以第一时间通知MCU进行处理。

比如可以通过EXTI检测设备的外壳被打开,或者可以检测输入量的变化等。在使用外部中断的时候需要配置3个外设:

  • IO:配置为输入功能
  • EXTI:将对应IO的输入配置为EXTI中断源
  • NVIC:配置中断的优先级和使能

除了上面3个外设的配置,还需要使能相关外设的时钟,编写中断处理函数。

本例使用将按键连接的IO配置为EXTI的中断源,当按键按下时触发中断,翻转LED。

  • 按键连接在PA0,PA0接了下拉电阻,当按键按下时PA0为高电平
  • LED连接在PA7
  1. #define BTN_PORT GPIOA
  2. #define BTN_PIN GPIO_PIN_0
  3. #define LED1_PORT GPIOA
  4. #define LED1_PIN GPIO_PIN_7

IO的配置

IO的设置分为时钟使能和IO设置两部分。

  1. rcu_periph_clock_enable(RCU_GPIOA);//IO的时钟使能
  2. //LED所接引脚设置为推挽输出模式
  3. gpio_mode_set(LED1_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, LED1_PIN);
  4. gpio_output_options_set(LED1_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, LED1_PIN);
  5. //按键所接引脚设置为输入模式,因为电路上有下拉电阻,因此可以设置为浮空输入模式
  6. gpio_mode_set(BTN_PORT,GPIO_MODE_INPUT,GPIO_PUPD_NONE,BTN_PIN);

EXTI的配置

EXTI需要SYSCFG模块进行设置,因此需要使能SYSCFG的时钟。

  1. rcu_periph_clock_enable(RCU_SYSCFG);//使能SYSCFG的时钟
  2. syscfg_exti_line_config(EXTI_SOURCE_GPIOA,EXTI_SOURCE_PIN0);//配置PA0为EXTI的中断源
  3. exti_init(EXTI_0,EXTI_INTERRUPT,EXTI_TRIG_RISING);//配置EXTI_0检测上升沿
  4. exti_interrupt_flag_clear(EXTI_0);//清除中断标志位
  5. exti_interrupt_enable(EXTI_0);//在EXTI模块上使能中断

NVIC的配置

GD32L233是Cortex-M23的内核,在其NVIC模块上只能设置4个中断优先级。

NVIC可配置的优先级

上图的引用链接

  1. nvic_irq_enable(EXTI0_IRQn,2);//在NVIC中使能中断,配置优先级为2。

注意NVIC优先级只可以设置为0~3,共4个优先级,0的优先级最高。高优先级可以抢占低优先级的中断。

中断处理函数

中断处理函数可以放到任何一个.c文件中,不过为了统一管理中断函数,并且满足GD32模板文件的要求,最好将中断函数都写在gd32l23x_it.c中。

有的中断的中断标志位可以通过读取操作自动清除,而有些中断的中断标志位必须手动清除,具体的操作要看芯片的手册。而EXTI的中断标志位需要手动清除。

  1. void EXTI0_IRQHandler(void)
  2. {
  3. if(exti_interrupt_flag_get(EXTI_0) != RESET){ //检测中断标志位
  4. gpio_bit_toggle(GPIOA,GPIO_PIN_7); //翻转LED引脚状态
  5. exti_interrupt_flag_clear(EXTI_0); //清除中断标志位
  6. }
  7. }

用户手册从第一篇文章中下载
第一篇 GD32L233C开发资源的下载
第二篇 开发环境的创建

此帖出自GD32 MCU论坛
点赞 关注
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
立即报名 | 2025 瑞萨电子工业以太网技术日即将开启!
3月-4月 深圳、广州、北京、苏州、西安、上海 走进全国6城
2025瑞萨电子工业以太网技术巡回沙龙聚焦工业4.0核心需求,为工程师与企业决策者提供实时通信技术最佳解决方案。
预报从速,好礼等您拿~

查看 »

 
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
快速回复 返回顶部 返回列表