嵌入式技术及应用实验中断实验报告.doc_第1页
嵌入式技术及应用实验中断实验报告.doc_第2页
嵌入式技术及应用实验中断实验报告.doc_第3页
嵌入式技术及应用实验中断实验报告.doc_第4页
嵌入式技术及应用实验中断实验报告.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

年级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: 优先级= PreemptionPriorityValue,子优先级=0; EXTI9: 优先级= 0,子优先级= 1; SysTick Handler:优先级= !PreemptionPriorityValue,子优先级 SubPriority = 0; (2)刚开始设置PreemptionPriorityValue=0,即EXTI0优先级比SysTick优先级高;在EXTI9中断服务子 程序中,EXTI Line0和SysTick 的优先级对换; (3)在EXTI0中断服务子程序中,SysTick中断挂起位被置1,若SysTick优先级比EXTI Line0 优先级高, 则EXTI 0中断被抢占,转而去执行SysTick中断服务子程序;否则继续执行EXTI Line0中断服务子程序。 (4)如果EXTI0被SysTick抢占则LED1、LED2、LED3、LED4循环闪烁,如果EXTI0抢占SysTick则LED1、 LED2、LED3、LED4常亮或者常灭。 实验设计要求 1、设计一个中断优先级抢占的实例。设置三个中断:EXTI0、EXTI9和SysTick,在EXTI9的中断服务子程序中实现EXTI0和SysTick的优先级别的转换,使之分别出现:在EXTI0中断时可以被SysTick抢占和不可以被SysTick抢占这两种状态。 2、 自己建立一个工程。实验步骤与结果分析1、 建立工程 1)、在工程文件中包含如下文件 (int、doc、user、lib、start) 2)、选择STM32F103VB芯片3) 、分别添加如下文件2、运行过程 (1)使用Keil uVision3 通过ULINK仿真器连接EduKit-M3实验平台,打开实验例程NVIC_test子目录下的NVIC.Uv2 例程,编译链接工程; (2)点击MDK 的Debug菜单,选择Start/Stop Debug Session项或Ctrl+F5键,远程连接EduKit-M3实验平台并下载 调试代码到目标系统的RAM中; (3)程序正常启动运行后,会有以下结果: 当第一次发生EXTI9 中断后(按下EduKit-M3实验平台上Key按钮),SysTick中断的优先级比EXTI0中断优先级高。因此当EXTI0中断发生时(按下Wakeup按钮),将先执行SysTick中断服务子程序,发生抢占,变量PreemptionOccured 为真,LED1-LED4开始闪烁; 当第二次发生EXTI9中断后,SysTick中断的优先级比EXTI0优先级低,因此当EXTI0中断发生时SysTick无法抢占,变量PreemptionOccured 为假,LED1-LED4停止闪烁; 每次EXTI9发生后,SysTick和EXTI0就会发生优先级转换,出现前面2步的状态。主要程序代码分析 /* Configure one bit for preemption priority */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); 主从优先级的选择Group_1,有先占优先级1位,从优先级3位 /配置一个比特为抢占优先级 /* Enable the EXTI0 Interrupt */ /使能EXTI0中断 NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = PreemptionPriorityValue; 主优先级的选择PreemptionPriorityValue NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;/从优先级等于0. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);/* Enable the EXTI9_5 Interrupt */ /使能EXTI9_5中断 NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;/EXTI9_5主优先级的选择等于0 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;/EXTI9_5主优先级的选择等于0 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);/* Configure the SysTick Handler Priority: Preemption priority and sub priority */ /配置SysTick处理程序优先级:抢占优先级和子优先级 NVIC_SystemHandlerPriorityConfig(SystemHandler_SysTick, !PreemptionPriorityValue, 0); while (1) if(PreemptionOccured != FALSE)/当PreemptionOccured != FALSE)抢占发生 GPIO_WriteBit(GPIOC, GPIO_Pin_6, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_6); Delay(0x5FFFF); GPIO_WriteBit(GPIOC, GPIO_Pin_7, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_7); Delay(0x5FFFF); GPIO_WriteBit(GPIOC, GPIO_Pin_8, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_8); Delay(0x5FFFF); GPIO_WriteBit(GPIOC, GPIO_Pin_9, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_9); Delay(0x5FFFF); void GPIO_Configuration(void) /* Configure PC6, PC7, PC8 and PC9 as output push-pull */ 使能为推挽输出 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /使能其速度为50MHz GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /使能为推挽输出 GPIO_Init(GPIOC, &GPIO_InitStructure); /* Configure GPIOA Pin0 as input floating */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 使能为浮空输入 GPIO_Init(GPIOA, &GPIO_InitStructure); /* Configure GPIOB Pin9 as input floating */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 使能为推挽输出入 GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); /* Configure EXTI Line0 to generate an interrupt on falling edge */ 配置EXTI Line0产生一个中断在下降沿 EXTI_InitStructure.EXTI_Line = EXTI_Line0; EXTI_InitStructure.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论