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

硬件内部优先级

【3】、实验3:(硬件内部优先级)

修改中断分组,观察例子中抢占式、响应式优先级触发的现象,并详细描述原因。

将NVIC_PriorityGroupConfig( ); 设置为NVIC_PriorityGroup_0后从Key1-key4正按LED1-LED4按顺序正常亮起,从key4-key1反按LED4先亮,随后LED1亮LED2、LED3亮起

当前分组设置为NVIC_PriorityGroup_0后抢占优先级没有区分在内部优先级分组占0个bits,响应优先级分为15个等级0-15,在内部优先级分组占4个bits,由于没有抢占优先级中断 EXTI_Line0、 EXTI_Line2、EXTI_Line3、EXTI_Line4不能相互抢断,又因为响应优先级都设为0,所以从key4-key1反按除了正在运行的EXTI_Line4,其中的响应优先级要按照中断的硬件优先级来确定,从EXTI_Line0、 EXTI_Line2、EXTI_Line3依次响应。

将NVIC_PriorityGroupConfig( ); 设置为NVIC_PriorityGroup_1。从key4-key1反按LED3先亮,然后是LED1,LED4,最后是LED2。当前有2个抢占优先级在内部优先级分组占1个bits,响应优先级分为7个等级,在内部优先级分组占3个bits,从key4-key1反按由于EXTI_Line3、EXTI_Line4设置为2,3由于现在抢占优先级在内部优先级分组占1个bits取低位1 0;11,EXTI_Line3、EXTI_Line4的抢占优先级为0、1,从EXTI_Line3好 EXTI_Line1的抢占优先级为0又先触发EXTI_Line3所以是LED3先亮、后LED1亮,由于EXTI_Line2、EXTI_Line4抢占优先级相同又因EXTI_Line4先触发后被EXTI_Line3、EXTI_Line1抢占所以即使和EXTI_Line2抢占优先级与响应优先级相同也不会按照硬件优先级执行而是执行完被打断的程序后继续执行、EXTI_Line4所以是LED4亮之后LED2最后亮,如果按照先点击key3在点击key4、key2.这时由于EXTI_Line4、EXTI_Line2抢占优先级与响应优先级相同会按照硬件优先级执行,在LED3亮起后LED2先亮之后才轮到LED4.

将将NVIC_PriorityGroupConfig( ); 设置为NVIC_PriorityGroup_3当前EXTIX_IRQN抢占和响应设置EXTI0_IRQN 0、0; EXTI2_IRQN 0、1; EXTI3_IRQN 1、2; EXTI4_IRQN 1、3;为后从key4-key1反按LED2先亮,随后LED1亮LED4、LED3亮起,可以看出抢占优先级高EXTI0_IRQN、 EXTI2_IRQN先执行。即使响应优先级在内部优先级分组占1个bits,但设置EXTI3_IRQN 、 EXTI4_IRQN的响应优先级为2,3依旧按照其低位10,11来分配优先级,但是由于、 EXTI4_IRQN是被EXTI0_IRQN、 EXTI2_IRQN抢占后返回执行所以是LED4先亮 ,最后是LED3亮。如果先点击key2,在点key4、key3,LED3就会在LED4之前亮起。

将将NVIC_PriorityGroupConfig( ); 设置为NVIC_PriorityGroup_4当前EXTIX_IRQN抢占和响应设与置NVIC_PriorityGroupConfig( )为NVIC_PriorityGroup_3一致会发现 从key4-key1反按LED2先亮,随后LED1亮,LED4、LED3亮起。执行顺序的 EXTI4_IRQN被EXTI0_IRQN、 EXTI2_IRQN抢占,由于EXTI2_IRQN先抢占已经在执行了所以即使EXTI0_IRQN的响应优先级比EXTI2_IRQN的高也是先执行EXTI2_IRQN中断才是EXTI0_IRQN,之后返回EXTI4_IRQN执行,之后执行EXTI3_IRQN。

如果将EXTIx_IRQN设置为 EXTI0_IRQN 0、0; EXTI2_IRQN 0、1; EXTI3_IRQN 0、2; EXTI4_IRQN 0、3;为后从key4-key1反按LED4先亮,随后LED1亮LED2、LED3亮起,可以看出抢占优先级高EXTI0_IRQN、 EXTI2_IRQN先执行。即使响应优先级在内部优先级分组占1个bits,但设置EXTI3_IRQN 、 EXTI4_IRQN抢占优先级相同,没有响应优先级时按照硬件优先级执行。

http://www.dtcms.com/a/516279.html

相关文章:

  • 高端网站建设公司哪里济南兴田德润实惠吗网架加工厂的地址
  • 美妆网站建设制作公司网站结构图
  • 【2025最新】APP开启了SSL无法被抓包,如何进行调试
  • c++算法题目总结
  • 开源安全管理平台wazuh-检测 SQL 注入攻击
  • 试用网站 建站网站建设 徐州
  • 如何屏蔽GORM个别sql的日志
  • [C++]软件接口函数测试
  • 基于 Apache POI 5.2.5 构建高效 Excel 工具类:从零到生产级实践
  • 直接插入排序详解
  • 网站界面切片做程序宁波免费建站seo排名
  • Leetcode 33
  • 济南制作网站制作公司策划采购网有哪些平台
  • conda 换盘符
  • 统一身份认证、权限管理系统设计
  • 福州整站优化网站在线设计
  • 网站如何加入百度网盟重庆市住房和城乡建设厅官方网站
  • 批量删除多个 PDF 文件顶部和底部的文字说明
  • 专题:2025年制造业数智化发展白皮书:数字化转型与智能制造|附130+份报告PDF、数据、绘图模板汇总下载
  • Ubuntu 25.10 “Questing Quokka” 版本解析
  • iOS的动态库和静态库的差异区别
  • AI问答:为什么rust编译器不默认为struct添加#[derive(Debug)]而需要手动添加?
  • 如何正确选择住宅IP?解析适配跨境、流媒体的网络工具
  • 手机网站的文本排版是怎么做的做股东变更要上哪个网站
  • 算法沉淀第九天(Cinema Cashier)
  • 搭建属于自己的网站HEXO静态页(一)
  • [UE学习笔记]—划时代意义的两大功能—lumen和Nanite
  • 杭州协会网站建设公司怎样制作网站
  • Springboot音乐网站系统源码
  • 【css】overflow-x:visible失效:溢出时,想让横轴滚动,竖轴显示