首页
学习
活动
专区
圈层
工具
发布

GPIO—按键中断

13.1关于 STM32 的 EXTI 前面“第10章 基础重点—中断系统”介绍了STM32的中断和中断优先级,知道了所有外设中断都由 NVIC管理,比如USART、ADC、I2C、SPI等。...灯亮灭; 主函数调用LED和按键初始化后,无需任何操作; 本实验配套代码位于“5_程序源码\6_GPIO—按键中断\”。...2) GPIO初始化 代码段 13.3.2 按键初始化(driver_key.c) /* * 函数名:void KeyInit(void) * 输入参数:无 * 输出参数:无 * 返回值:无 * 函数作用...代码段 13.3.3 按键中断处理函数(driver_key.c) /* * 函数名:void EXTI0_IRQHandler(void) * 输入参数:无 * 输出参数:无 * 返回值:无 * 函数作用...13.4实验效果 本实验对应配套资料的“5_程序源码\6_GPIO—按键中断\”。打开工程后,编译,下载。

3.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    7.自己写中断方式按键驱动程序(详解)

    request_irq()和free_irq()分析完毕后,接下来开始编写上升沿中断的按键驱动 如下图,需要设置4个按键的EINT0, EINT2, EINT11, EINT19的模式为双边沿,且设置按键引脚为中断引脚...进程fd文件里也没有文件描述符5 7.改进中断按键驱动程序 使用等待队列,让read函数没有中断时,进入休眠状态,降低CPU....:状态,等于0时就是中断进入休眠, 1:退出休眠 7.2 驱动程序步骤 (1)定义引脚描述结构体数组,每个结构体都保存按键引脚和初始状态,然后在中断服务函数中通过s3c2410_gpio_getpin(...); //唤醒中断 7.3 更改测试程序second_interrupt_text.c 最终修改如下: #include //调用sys目录下types.h.../second_interrupt_text &             //后台运行测试程序  创建了4个中断,如下图: ? 当没有按键按下时,这个进程就处于静止状态staitc,如下图所示: ?

    1.7K90

    8.中断按键驱动程序之poll机制(详解)

    本节继续在上一节中断按键程序里改进,添加poll机制. 那么我们为什么还需要poll机制呢。...如果我们不想让程序停在这个位置,而是希望当有按键按下时,我们再去read,因此我们编写poll函数,测试程序调用poll函数根据返回值,来决定是否执行read函数。...这就要分析我们的驱动程序.poll函数(第2小节开始分析.poll函数) 2写驱动程序.poll函数,并分析.poll函数: 在上一节驱动程序里添加以下代码: #include wait); } 它是将poll进程添加到了button_wait中断队列里,这样,一有按键按下时,在中断服务函数里就会唤醒...button_wait中断,同样也会唤醒poll机制,使poll机制重新进程休眠计数 2.3 驱动程序.poll函数返回值介绍 当中断休眠状态时,返回mask为0 当运行时返回:mask |= POLLIN

    2.1K60

    【GD32L233C-START】8、按键—外部中断

    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...PX10-PX15,对应一个中断函数,需要在中断函数中判断,具体是哪个中断源。

    1.3K40

    嵌入式- 按键中断控制LED灯

    实验目的1.为按键K2和K3设置不同的中断优先级,K3优先级高于K2,并且K3可以打断正在执行的K2中断程序。...在这个应用中,当按键被按下时,会触发一个中断,然后在中断处理程序中控制LED灯的亮灭。下面是一个简单的实现步骤:初始化硬件:首先,你需要初始化你的硬件。...这包括设置按键和LED灯的GPIO(通用输入输出)引脚,以及配置外部中断(EXTI)来检测按键的按下。编写中断处理程序:当中断被触发时,你需要编写一个中断处理程序来控制LED灯的亮灭。...在这个程序中,你可以检查LED灯的当前状态,然后切换它的状态(如果它是亮的,就熄灭它;如果它是灭的,就点亮它)。主循环:在你的主循环中,你可以执行其他任务,而中断处理程序会在按键被按下时自动执行。...LED_GPIO_Config 函数定义在 bsp_led.c 文件内,完成 LED 灯的 GPIO 初始化配置。EXTI_Key_Config 函数完成两个按键的 GPIO 和 EXTI配置。

    1.4K10

    OpenHarmony驱动子系统开发—GPIO按键事件中断

    本案例程序是演示GPIO中断接口的基本使用,案例操作结果是通过按键切换开发板上的LED的点亮和熄灭效果。本案例使用的按键根据开发板原理图可以得到,接入的是GPIO5号引脚。...arg 表示中断回调函数中使用的参数的指针案例程序解析本案例通过按键按压时触发的边沿中断,在中断回调函数中更改LED灯的输出电平,来达到按压一次按键,实现点灯和熄灯的效果。...由于开发板物理按键存在抖动的问题,会在按压一次按键时,多次触发中断回调,所以我们需要在中断回调函数中,进行软件防抖操作,过滤掉一些不必要的操作。...exti_key_example",#"TW103_PWM_led:pwm_led_example",#"TW104_ADC_voltage:adc_voltage_example",#"TW105_I2C_sht30...:i2c_sht30_example",#"TW106_UART:uart_example",#"TW301_APP_oled:app_oled_example",#"TW302_APP_nfc:app_nfc_example

    56810

    【汇编语言】内中断(二) —— 安装自己的中断处理程序:你也能控制0号中断

    前言 汇编语言是很多相关课程(如数据结构、操作系统、微机原理)的重要基础。...但仅仅从课程的角度出发就太片面了,其实学习汇编语言可以深入理解计算机底层工作原理,提升代码效率,尤其在嵌入式系统和性能优化方面有重要作用。...本专栏的汇编语言学习章节主要是依据王爽老师的《汇编语言》来写的,和书中一样为了使学习的过程容易展开,我们采用以8086CPU为中央处理器的PC机来进行学习。 1....code segment start: do0安装程序 设置中断向量表 mov ax,4c00h int 21h do0: 显示字符串...mov ax,4c00h int 21h code ends end start 我们可以看到,上面的程序分为两部分: (1)安装do0,设置中断向量的程序 (2)do0 1.4

    47710

    嵌入式C语言实现事件型按键驱动

    本项目是一个小巧简单易用的事件驱动型按键驱动模块,可无限量扩展按键,按键事件的回调异步处理方式可以简化你的程序结构,去除冗余的按键处理硬编码,让你的按键业务逻辑更清晰。...; 2.初始化按键对象,绑定按键的GPIO电平读取接口read_button_pin() ,后一个参数设置有效触发电平 button_init(&button1, read_button_pin, 0,...if(timer_ticks == 5) { timer_ticks = 0; button_ticks(); } } 2、特性 本项目使用C语言实现,基于面向对象方式设计思路...3、按键事件 事件 说明 PRESS_DOWN 按键按下,每次按下都触发 PRESS_UP 按键弹起,每次松开都触发 PRESS_REPEAT 重复按下触发,变量repeat计数连击次数 SINGLE_CLICK...单击按键事件 DOUBLE_CLICK 双击按键事件 LONG_PRESS_START 达到长按时间阈值时触发一次 LONG_PRESS_HOLD 长按期间一直触发 4、示例 #include "button.h

    76610

    Linux驱动开发-外部中断的注册使用(按键为例)

    外部中断介绍 前面有篇文章使用杂项设备完成了按键驱动的编写,实现了按键轮询检测,通过read函数向应用层传递按键值,这篇文章使用按键为例,介绍Linux内核里中断的注册方法,使用中断的方式检测按键是否按下...对于有惟一入口的中断,可以传递 NULL; 但是一般来说都会传递一个有意义指针,在中断程序中使用, 以方便编程。...注意:在中断服务程序中不能使用 disable_irq 这个函数,否则内核崩溃,可以使用 disable_irq_nosync。...disable_irq:函数调用后,函数不会马上返回,而等待中断程序执行完成才返回,在中断调用会导致死锁。 disable_irq_nosync:调用后,函数马上返回。...printk("按键中断 驱动注册-安装成功.

    5.6K40

    7.4.2 程序中断方式

    1.中断的基本概念 程序中断是指在计算机执行现行程序的过场中,出现某些急需处理的异常情况或特殊请求,CPU暂停中断现行程序,而专区对这些异常情况或特殊情况进行处理,在处理完毕后CPU又自动返回到现行程序的断点处...在可以相应中断的条件下,CPU暂停终止正在执行的程序,转去执行中断服务程序为外设服务,在中断服务程序中完成一次主机与外设之间的数据传送,传送完成后,CPU返回原来的程序。...在中断服务程序中,为了保护中断现场(即CPU主要寄存器的内容)期间不被新的中断所打断,必须关中断,从而保证被中断的程序在中断程序服务程序完毕之后能接着正确地执行下去。 ②保存断点。...为了保证在中断服务程序执行完毕后能正确地返回到原来的程序,必须将原来程序的断点(即程序计数器(PC)的内容)保存起来。 ③引出中断服务程序。...中断服务程序的最后一条指令通常是一条中断返回指令,使其返回到源程序的断点处,以便继续执行远程序。 其中,①~③在CPU进入中断周期后,由中断隐指令(硬件自动)完成;④~⑨由中断服务程序完成。

    1.6K10

    i.MX283开发板按键驱动和GPIO中断

    由于手头上的i.MX283开发板没有独立按键,所以只能用一个IO口手动拉高拉低来模拟按键,但是这样会造成一个小问题,这个后面会提到。...Level high type */ #define IRQ_TYPE_LEVEL_LOW 0x00000008 /* Level low type */ 第三个函数就是request_irq,申请中断以及向内核注册中断服务程序...handler:中断服务程序 flags:中断类型 name:中断名称 dev: 如果将 flags 设置为 IRQF_SHARED 的话,dev 用来区分不同的中断,一般情况下将 dev 设置为设备结构体...,在板子上加载驱动程序即可。...用insmod指令加载完驱动,再用cat /proc/interrupt 查看: gpio中断已经生成,中断号196,现在用杜邦线连接P2.4口产生一个下降沿。 可以看到中断服务程序执行了。

    43700
    领券