美文网首页
C中断_1228

C中断_1228

作者: ppzbreeze | 来源:发表于2019-01-23 16:43 被阅读0次

简单介绍

  • 中断是一种处理特殊状态输入输出的方式,相对于创建的task的优先级,中断具有更高优先级软件硬件都可以实现,当中断被以某一种方式触发后,会按照逻辑执行相关中断处理函数,该函数通常是比较简单迅速执行完的

适用场景

  • 需要在硬件方面做出一些I/O操作的情况,例如较早手机的打电话按键,无论当前是什么状态,按下后都会跳转通讯录或拨号键盘界面,下面以一个具体的嵌入式设备为例

具体配置

  • 主要步骤是配置并绑定GPIO,编写中断函数
  1. 配置,绑定GPIO
    (1)中断是基于GPIO来操作的,需要将I/O硬件对应的GPIO找到,而且需要判断当前GPIO是否支持中断操作
    (2)找到某个开机启动的位置,重新定义一个GPIO借口结构体,类型设置成输出(也可以是输入,根据实际情况来决定),对触发中断的方式进行设置,同时配置好其他参数;
    (3)然后打开该GPIO接口,例如hal_GpioOpen(),如果上一步设置的是输出,则需要hal_GpioSetout()和hal_GpioSet(),对初始电平进行设置,如果是输入则不需要,
    (4)如果相关GPIO电平发生变化,则会按照之前的设置进行触发,如果设置的GPIO是输入模式,相当于会给一些其他操作提供一种输入控制行为,类似开关,不过作为一个输入端口,并不会自己维持高电平(即使初始化是高电平),当外接高电平被移除,会立刻变低,同时不再触发相应中断函数;

2.中断处理函数直接添加
(1)需要在中断处理函数中添加相关操作,最好是非常短的,可以迅速执行完的,如果有复杂任务就开个信号量或者其他方式用其他任务来辅助执行;
(2)针对INPUT类型的GPIO接口,当前测试上升沿触发,在连接了高电平后,会多次触发,这个和中断处理函数逻辑有关,应该是可以设置一定时间内不再触发,直到下次中断到来

相关文章

  • C中断_1228

    简单介绍 中断是一种处理特殊状态输入输出的方式,相对于创建的task的优先级,中断具有更高优先级软件硬件都可以实现...

  • 2021-04-03

    Linux0.11内核阅读——中断篇 中断前处理及中断现场恢复中断执行过程硬中断asm.strap.c软中断sys...

  • uboot step 12 按键玩中断-S3C6410中断介绍

    uboot step 12 按键玩中断-S3C6410中断介绍 向量中断控制器相关寄存器 中断处理流程 中断源-外...

  • Keil方法类_中断实验

    中断系统和外部中断 实现一个C51单片机中断需要在中断请求标志位、中断允许标志位和 中断优先级控制位进行组合的实现...

  • [Petite Chez Scheme] 快捷键

    求值当前表达式 C-j中断执行 C-c关闭 C-d补齐历史 C-l

  • 15 中断系统

    单片机STC89C52学习——15 中断系统 汇总:00 单片机STC89C52学习参考教程:普中科技 1 中断系...

  • 2017.12.20学习总结

    下午学习了USART中断,发送数据不需要中断,但是接收数据需要利用中断来处理,这样效率比较高。SR:状态寄存器C...

  • Linux ctrl+c和ctrl+z

    ctrl+c和ctrl+z都是中断命令,但是他们的作用却不一样. ctrl+c是强制中断程序的执行,而ctrl+z...

  • 信号

    Ctrl-C中断当前运行的程序。这个中断由一个称为信号的内核机制产生。 什么是信号,它从哪里来 用户用户能够通过C...

  • 「Mac」解决brew一直卡在Updating Homebrew

    简单粗暴的方法:ctrl + c 中断更新,继续执行原本的任务

网友评论

      本文标题:C中断_1228

      本文链接:https://www.haomeiwen.com/subject/hdtslqtx.html