当前位置: 首页 > news >正文

好看的网站排版推广广告

好看的网站排版,推广广告,注册送38元的游戏网站,做网站打开图片慢一、中断的原理: 中断是一种机制,允许单片机在执行主程序时,被外部事件或内部事件打断,执行特定的处理程序(中断服务程序,ISR)。中断处理完成后,单片机返回到原来的任务继续执行。 二…

一、中断的原理:
中断是一种机制,允许单片机在执行主程序时,被外部事件或内部事件打断,执行特定的处理程序(中断服务程序,ISR)。中断处理完成后,单片机返回到原来的任务继续执行。
二、中断也分优先级:
STM32F103C8T6支持中断优先级配置,允许高优先级的中断打断低优先级的中断。
优先级分为两个部分:
抢占优先级(Preemption Priority):高优先级的中断可以打断低优先级的中断。
子优先级(Sub Priority):当两个中断具有相同的抢占优先级时,子优先级较高的中断先执行。
三、中断处理过程
中断请求:外部事件或内部事件触发中断。
中断响应:单片机保存当前上下文,跳转到中断服务程序(ISR)。
中断处理:执行ISR中的代码。
中断返回:执行完ISR后,恢复上下文,返回到原来的任务。
四、案例:
按键中断是外部中断的常见应用之一。通过配置GPIO引脚为外部中断,可以实现按键按下时的即时响应,避免轮询检测。

当然电机控制中还有霍尔输入中断检测

STM32外部中断输入配置参考:

#include "stm32f10x.h"void EXTI_Init(void) {GPIO_InitTypeDef GPIO_InitStructure;EXTI_InitTypeDef EXTI_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;// 使能GPIOA和AFIO时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);// 配置PA0为浮空输入模式GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA, &GPIO_InitStructure);// 配置EXTI线GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);// 配置EXTI中断EXTI_InitStructure.EXTI_Line = EXTI_Line0;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;  // 下降沿触发EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);// 配置NVIC中断NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);
}// EXTI0中断处理函数
void EXTI0_IRQHandler(void) {if (EXTI_GetITStatus(EXTI_Line0) != RESET) {// 处理按键中断// ...// 清除中断标志EXTI_ClearITPendingBit(EXTI_Line0);}
}int main(void) {EXTI_Init();  // 初始化外部中断while (1) {// 主循环}
}

五、中断使用注意事项:
(1)在不需要中断功能时,可以关闭相关GPIO引脚的时钟,进入低功耗模式,减少系统功耗。
(2)在某些情况下,多个GPIO引脚可以共享同一个中断线。例如,PA0、PA1、PA2可以共享EXTI0_IRQn中断。通过检查中断标志位,可以确定是哪个引脚触发了中断。
例:

void EXTI0_IRQHandler(void) {if (EXTI_GetITStatus(EXTI_Line0) != RESET) {// 处理PA0中断EXTI_ClearITPendingBit(EXTI_Line0);}if (EXTI_GetITStatus(EXTI_Line1) != RESET) {// 处理PA1中断EXTI_ClearITPendingBit(EXTI_Line1);}if (EXTI_GetITStatus(EXTI_Line2) != RESET) {// 处理PA2中断EXTI_ClearITPendingBit(EXTI_Line2);}
}

(3)中断的嵌套应用:
在某些复杂的应用场景中,可能需要支持中断嵌套。通过合理配置中断优先级,可以实现高优先级中断打断低优先级中断。高优先级不能一直触发,不然低优先级始终得不到响应,具体看实际应用。
例:

// 配置高优先级中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;// 配置低优先级中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

(4)中断响应
在某些实时性要求较高的应用中,中断延迟是一个关键指标。通过优化中断处理函数,减少不必要的操作,可以降低中断延迟。
(5)中断中执行
中断中不要放太多代码,也就是下次中断来时,本次中断中的代码最好都已经执行完了,不然就会“互踩”,这个中断执行时间要注意,越短越好,阔以设置标志位。

// 优化的中断处理函数
void EXTI0_IRQHandler(void) {if (EXTI_GetITStatus(EXTI_Line0) != RESET) {// 快速处理中断g_interrupt_flag=1; //中断进入标志  别的循环扫描中去清除并执行中断程序EXTI_ClearITPendingBit(EXTI_Line0);}
}

抛砖引玉,学海无涯,继续努力。

http://www.shuangfujiaoyu.com/news/44479.html

相关文章:

  • 现在哪些网站做外贸的好做电商运营平台
  • 北京网站设计研究与开发公司外贸seo是啥
  • 温州网站建设seoseo销售是做什么的
  • 东莞贸易公司寮步网站建设价格设计外包网站
  • wordpress mu timthumb广告优化师
  • 找厂家采购什么平台重庆seo优化效果好
  • wordpress媒体库显示不出来中国十大seo公司
  • 芜湖做网站的公司推广普通话手抄报内容资料
  • 滨州做网站建设价格产品宣传
  • 专门做物理的网站世界球队最新排名
  • 公众号做网站seo网站关键词优化费用
  • 建设银行上海分行招聘网站可以下载新闻视频的网站
  • 专业做网站公司怎么样免费自己建网页
  • 哪家企业做网站好nba排名最新赛程
  • 扬中网站推广网页怎么做
  • 移动终端网站开发互联网推广是干什么的
  • 济南简单的网站制作产品推广介绍怎么写
  • 怎样保证网站的安全营销软文是什么意思
  • 免费做网站视频2022最近十大的新闻热点
  • 电子商务怎么样长春百度seo排名
  • 宁波网站建设公司比较好域名备案官网
  • 网站的工作简报怎么做google网页版
  • 比较出名做耐克的网站湖南企业竞价优化首选
  • 如何做淘宝客网站推广网络营销的四个特点
  • 昭通做网站合肥seo优化排名公司
  • 武汉新久建设有限公司网站seo服务内容
  • 选择邯郸做网站百度指数pc版
  • 网站建设与管理软件指数函数图像及性质
  • wordpress 主题制作 dreamwaver谷歌seo是做什么的
  • 音平商城谁做的网站全球搜索引擎大全