欢迎来到天天文库
浏览记录
ID:40959049
大小:233.50 KB
页数:7页
时间:2019-08-11
《嵌入式技术及应用实验中断实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、年级 11级班级 11级自动化一班 学号 11064029专业自动化 姓名 杨胜提题目名称实验二、中断实验 实验设计思路1、硬件电路设计在EduKit-M3实验平台上按键Key与PB.9相连作为EXTI9,按键Wakeup与PA.0相连作为EXTI0;LED1、LED2、LED3、LED4分别与PC6、PC7、PC8、PC9相连,用于显示不同的优先级抢占状态。2、软件程序设计根据设计任务要求,软件程序主要内容包括:(1)配置两根EXTI外部中断线(Line0和Line9),在下降沿产生中断,并配置SysTick中断。其中:EXTI0:优先级=PreemptionPriority
2、Value,子优先级=0;EXTI9:优先级=0,子优先级=1;SysTickHandler:优先级=!PreemptionPriorityValue,子优先级SubPriority=0;(2)刚开始设置PreemptionPriorityValue=0,即EXTI0优先级比SysTick优先级高;在EXTI9中断服务子程序中,EXTILine0和SysTick的优先级对换;(3)在EXTI0中断服务子程序中,SysTick中断挂起位被置1,若SysTick优先级比EXTILine0优先级高,则EXTI0中断被抢占,转而去执行SysTick中断服务子程序;否则继续执行EXTIL
3、ine0中断服务子程序。(4)如果EXTI0被SysTick抢占则LED1、LED2、LED3、LED4循环闪烁,如果EXTI0抢占SysTick则LED1、LED2、LED3、LED4常亮或者常灭。实验设计要求1、设计一个中断优先级抢占的实例。设置三个中断:EXTI0、EXTI9和SysTick,在EXTI9的中断服务子程序中实现EXTI0和SysTick的优先级别的转换,使之分别出现:在EXTI0中断时可以被SysTick抢占和不可以被SysTick抢占这两种状态。2、自己建立一个工程。7实验步骤与结果分析1、建立工程1)、在工程文件中包含如下文件(int、doc、user
4、、lib、start)2)、选择STM32F103VB芯片3)、分别添加如下文件2、运行过程(1)使用KeiluVision3通过ULINK仿真器连接EduKit-M3实验平台,打开实验例程NVIC_test子目录下的NVIC.Uv2例程,编译链接工程;(2)点击MDK的Debug菜单,选择Start/StopDebugSession项或Ctrl+F5键,远程连接EduKit-M3实验平台并下载调试代码到目标系统的RAM中;(3)程序正常启动运行后,会有以下结果:当第一次发生EXTI9中断后(按下EduKit-M3实验平台上Key按钮),SysTick中断的优先级比EXTI0中
5、断7优先级高。因此当EXTI0中断发生时(按下Wakeup按钮),将先执行SysTick中断服务子程序,发生抢占,变量PreemptionOccured为真,LED1-LED4开始闪烁;当第二次发生EXTI9中断后,SysTick中断的优先级比EXTI0优先级低,因此当EXTI0中断发生时SysTick无法抢占,变量PreemptionOccured为假,LED1-LED4停止闪烁;每次EXTI9发生后,SysTick和EXTI0就会发生优先级转换,出现前面2步的状态。 7主要程序代码分析/*Configureonebitforpreempti
6、onpriority*/NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);主从优先级的选择Group_1,有先占优先级1位,从优先级3位//配置一个比特为抢占优先级/*EnabletheEXTI0Interrupt*///使能EXTI0中断NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=PreemptionPriorityValue;主优先级的选择PreemptionPrio
7、rityValueNVIC_InitStructure.NVIC_IRQChannelSubPriority=0;//从优先级等于0.NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);/*EnabletheEXTI9_5Interrupt*///使能EXTI9_5中断NVIC_InitStructure.NVIC_IRQChannel=EXTI9_5_IRQChannel;NVIC_Init
此文档下载收益归作者所有