STM32学习笔记——中断

news/2024/9/29 21:33:43

中断:在主程序运行过程中,出现了特定事件(例如发生已经预知的一些情况),从而转入中断程序中,处理完成后再回到主程序中继续执行。(频繁的中断函数会影响主程序的运行,所以中断函数一边不处理特别复杂的逻辑)

EXTI(Extern Interrupt)外部中断

支持的触发方式:上升沿/下降沿/双边沿/软件触发

支持的GPIO口:所有GPIO口,但相同的Pin不能同时触发中断

通道数:16个GPIO_Pin,外加PVD输出、RTC闹钟、USB唤醒、以太网唤醒(0-15:对应GPIO_PIN 0-15中断;16:PVD输出;17:RTC闹钟事件;18:USB唤醒事件;19:连接到以太网唤醒事件(只适用于互联型产品))

触发响应方式:中断响应/事件响应

注意EXTI9_5和EXTI15_10这几个中断在两个通道里,需要通过标志位判断。

EXTI中断发生流程:EXTI监测指定GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程序。

 

NVIC(Nested vectoredinterrupt controller)嵌套向量中断控制器

NVIC提供了灵活、高效、可扩展的中断处理机制,支持多级优先级、多向中断、嵌套向量中断等特性。

NVIC支持多级优先级,可以配置不同的优先级和互斥优先级组。中断控制器负责中断的挂起、解挂和优先级管理。

 

通过检测GPIO的PB14的电平变化触发中断的实例:

初始化:

void EXTI_NVIC_Init(void){/* GPIO --> AFIO */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);    //开启GPIOB口时钟,因为检测的是PB14口的电平信号RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);        //开启AFIO时钟GPIO_InitTypeDef GPIO_InitStructure;                    //初始化PB14引脚GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource14);/* AFIO -->  EXTI */EXTI_InitTypeDef EXTI_InitStructure;                    //初始化EXTIEXTI_InitStructure.EXTI_Line =EXTI_Line14;                //选择14号线EXTI_InitStructure.EXTI_LineCmd =ENABLE;                //14号线使能EXTI_InitStructure.EXTI_Mode =EXTI_Mode_Interrupt;        //选择模式,这里是中断模式触发中断,如果是EXTI_Mode_Event,就是触发一个事件EXTI_InitStructure.EXTI_Trigger =EXTI_Trigger_Falling; //触发方式:EXTI_Trigger_Falling ,EXTI_Trigger_Rising_Falling ,EXTI_Trigger_Rising,这里选的是下降沿触发EXTI_Init(&EXTI_InitStructure);/* EXTI -->  NVIC */                                    //开启NVICNVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);            //设置优先分组为2,这里是随便设置的
    NVIC_InitTypeDef NVIC_InitStruct;NVIC_InitStruct.NVIC_IRQChannel = 40;                    //EXTI15_10_IRQn=40, /*!< External Line[15:10] Interrupts */ 选择配置EXTI15_10线这里PB14在EXTI15_10中NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;            //线路使能NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;    //抢占优先级NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;            //响应优先级NVIC_Init(&NVIC_InitStruct);                            //初始化
}

中断函数:

void EXTI15_10_IRQHandler(void){                    //函数名为预留的指定名称,可以从启动文件复制//中断标志位判断if(EXTI_GetITStatus(EXTI_Line14) == SET){        //判断是否是14号线触发的中断/*可添加一些操作*count++;*/EXTI_ClearITPendingBit(EXTI_Line14);//清除中断标志
    }
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/59239.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

面试-JS Web API-DOM

概览DOM(Document Object Model)DOM是哪种数据结构? ---树🌳 常用的API attr和property区别 一次性插入多个DOM节点?DOM节点操作DOM节点的property 通过获取JS属性来改变样式or页面渲染形式。DOM节点的attribute 修改节点的属性。建议尽量用property操作。

送给测试行业朋友们的一些中肯建议

在快速发展的科技时代,软件测试行业也在不断变化。如果你是一名测试人员,或正在考虑进入这个行业,你是否感到迷茫?该如何提升自己,以应对未来的挑战?今天,我为所有测试行业的朋友们带来一些切实的建议,助你们走得更远。 作为测试人员,你是否经常面对需求变化、测试工具…

有关paddleocr在pyinstall中打包问题的解决方案

借鉴网址python解决paddleocr打包问题_pyinstaller怎么解决paddleocr中的动态导入-CSDN博客 在打包时我使用的spec文件如下:(需要将pathe和binaries换为自己的paddleocr路径) block_cipher = Nonea = Analysis([main.py], pathex=[E:\\PyEnviroment\\Lib\\site-packages…

【Azure Cloud Service】在Azure云服务中收集CPU监控指标和IIS进程的DUMP方法

问题描述 在使用Cloud Service服务时,发现服务的CPU占用很高,在业务请求并不大的情况下,需要直到到底是什么进程占用了大量的CPU资源,已经如何获取IIS进程(w3wp.exe)的DUMP文件?问题解答 一:收集云服务中CPU的性能数据 远程登录(RDP)到云服务的实例上,使用管理员身份运行…

[GXYCTF2019]禁止套娃

这题用御剑扫描不出来什么结果,最后看大佬的wp发现这题使用githack扫出来的首先来收一下git源码泄露的原因:开发人员在开发的时候,常常会先把源码提交到远程托管网站(如github),最后在从远程托管网站把源码pull到服务器的web目录下,如果忘记把 .git文件删除,就会造成此…

Blazor开发框架Known-V2.0.10

Known今天迎来了2.0的第11个版本,同时网站网址和板块也进行了一次升级改造,虽不完美,但一直在努力改变,之前一直在完善框架功能,忽略了文档的重要性,所以这次更新了文档和API。交流互动板块也在进行当中,尽请期待。官方网站:http://known.org.cn 最新版本:V2.0.10下面…

关闭默认WPS打开方式

原文链接:https://blog.csdn.net/Candy_SJ_/article/details/139898009 文件默认为wps打开,有时候有很多问题。关闭wps默认打开方式 还是有问题,我这边是将wps卸载了。

0基础开始Pine量化 止盈改进策略(附代码)

止盈的核心思想: 当市场价格达到设定的目标后,投资者会卖出资产,防止市场波动将已经取得的利润变为损失。 通过止盈,投资者在确保一定盈利的情况下退出市场,而不是继续持有以追求更高的收益,从而避免市场行情逆转带来的风险。0基础开始Pine量化 止盈改进策略(附代码) 可…