96SEO 2026-02-20 00:09 8
。

其原理都差不多#xff0c;STM32会对外部中断引脚的边沿进行检测#xff0c;若检测到相应的边沿会触发中断#xff0c;在中断中做出相应的处…一、EXTI
外部中断在嵌入式系统中有广泛的应用场景如按钮开关控制传感器触发通信接口中断等。
其原理都差不多STM32会对外部中断引脚的边沿进行检测若检测到相应的边沿会触发中断在中断中做出相应的处理。
开关按下时其引脚电平会发生变化传感器检测的参数超过阈值会传输一个电平信号
EXTI可分为两大部分功能一个产生中断另一个产生事件这两个功能从硬件上有所不同
产生中断是上图中至NCI中断控制器产生事件是上图中脉冲发生器。
输入线EXTI输入线路有19个中断/事件输入线可通过寄存器设置成任意一个GPIO或者一些外设事件。
输入线一般是检测电平变化的信号。
边沿检测电路通过设置上升沿和下降沿触发寄存器来控制信号触发若检测到有边沿跳变输出有效信号1至与或门。
与或门电路与或门有1则输出1信号输入端有两个一个来自边沿检测电路另一个来自程序控制启动中断/事件线。
是否允许程序控制启动是由软件中断事件寄存器控制。
图中上方的与门电路与门全1才为1若中断屏蔽寄存器为0不论与或门电路输出的为1还是0都是输出0若中断屏蔽寄存器为1则与门输出的信号由与或门输出信号决定。
因此中断屏蔽寄存器可以控制是否产生中断的目的。
与门电路输出1时会把请求挂起寄存器对应位置1。
NVIC中断控制器将请求挂起寄存器的内容输出到NVIC内从而实现系统中断事件控制。
若事件屏蔽寄存器为0不论与或门电路输出的为1还是0都是输出0若事件屏蔽寄存器为1则与门输出的信号由与或门输出信号决定。
因此事件屏蔽寄存器可以控制是否产生事件的目的。
脉冲信号发生器当其输入端为1时就会产生一个脉冲信号当其输入端为0时就不会输出脉冲。
脉冲信号可以给其他外设电路使用一般用来触发TIM或者ADC开始转换。
中断屏蔽寄存器(EXTI_IMR)其决定了是否可以开启中断事件屏蔽寄存器(EXTI_EMR)其决定了是否可以开启事件输出上升沿触发选择寄存器(EXTI_RTSR)其决定了输入线是否允许上升沿触发下降沿触发选择寄存器(EXTI_FTSR)其决定了输入线是否允许上升沿触发软件中断事件寄存器(EXTI_SWIER)其决定了是否内部软件可以产生中断达到EXTI目的挂起寄存器(EXTI_PR)查看是否发生了触发请求
外部唤醒线是边沿触发的这些线上不能出现毛刺信号。
在写EXTI_RTSR或者EXTI_FTSR寄存器时在外部中断线上的上升沿或者下降沿信号不能被识别挂起位也不会被置位。
在同一中断线上可以同时设置上升沿和下降沿触发。
即任一边沿都可触发中断。
/*开启时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,
//开启GPIOB的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,
//开启AFIO的时钟外部中断必须开启AFIO的时钟2、设置GPIO工作模式
GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode
GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Pin
GPIO_Pin_14;GPIO_InitStructure.GPIO_Speed
GPIO_Speed_50MHz;GPIO_Init(GPIOB,
//将PB14引脚初始化为上拉输入3、设置IO口与中断线的映射关系
/*AFIO选择中断引脚*/GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,
GPIO_PinSource14);//将外部中断的14号线映射到GPIOB即选择PB14为外部中断引脚4、配置外部中断EXTI
EXTI_Line:中断/时间线选择可选EXTI0-EXTI19EXTI_Mode:可选为产生中断或者产生事件这里为产生中断EXTI_Trigger:边沿触发事件可选上升或者下降后者上升和下降EXTI_LineCmd:
//定义结构体变量EXTI_InitStructure.EXTI_Line
//选择配置外部中断的14号线EXTI_InitStructure.EXTI_LineCmd
//指定外部中断线使能EXTI_InitStructure.EXTI_Mode
//指定外部中断线为中断模式EXTI_InitStructure.EXTI_Trigger
//指定外部中断线为下降沿触发EXTI_Init(EXTI_InitStructure);
//将结构体变量交给EXTI_Init配置EXTI外设5、配置中断优先级NVIC并使能中断
EXTI配置好了之后需要进一步配置NVIC设置中断引脚的优先级等并将中断进行使能。
其中最主要的是选择中断源NVIC_IRQChannel中断源在stm32f10x.h文件中进行查找。
//定义结构体变量NVIC_InitStructure.NVIC_IRQChannel
//选择配置NVIC的EXTI15_10线NVIC_InitStructure.NVIC_IRQChannelCmd
//指定NVIC线路使能NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority
//指定NVIC线路的抢占优先级为1NVIC_InitStructure.NVIC_IRQChannelSubPriority
//指定NVIC线路的响应优先级为1NVIC_Init(NVIC_InitStructure);
//将结构体变量交给NVIC_Init配置NVIC外设6、编写中断服务函数
中断服务函数的名称在startup_stm32f10x_mx.s启动文件当中查找函数内容如下
首先检查EXTI输入线的中断标志位是否被设置。
如果设置了那么执行与EXTI输入线相关的中断处理代码。
在处理完中断后清除EXTI输入线
在中断服务函数中通过检查EXTI输入线的中断标志位可以确认中断是否确实是由EXTI输入线输入线触发的。
这有助于避免因为其他中断源或噪声干扰而导致的误响应。
//判断是否是外部中断14号线触发的中断{EXTI_ClearITPendingBit(EXTI_Line14);
//清除外部中断14号线的中断标志位//中断标志位必须清除//否则中断将连续不断地触发导致主程序卡死}
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback