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

下载本文档

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

文档简介

1、年级11级班级11级自动化一班学号11064029专业自动化姓名杨胜提题目 名称实验二、中断实验实验1、设计一个中断优先级抢占的实例。设置三个中断:EXTI0、EXTI9 和 SysTick,设计在EXTI9的中断服务子程序中实现EXTI0和SysTick的优先级别的转换,使之分别出要求现:在EXTI0中断时可以被SysTick抢占和不可以被SysTick抢占这两种状态。2、自己建立一个工程。1、硬件电路设计在EduKit-M3实验平台上按键Key与PB.9相连作为EXTI9,按键 Wakeup与PA.0 相连作为 EXTI0; LED1、LED2、LED3、LED4 分别与 PC6、PC7、

2、PC8、PC9 相连, 用于显示不同的优先级抢占状态。2、软件程序设计根据设计任务要求,软件程序主要内容包括:配置两根EXTI外部中断线(Line0和Line9),在下降沿产生中断,并配置 SysTick中断。其中:EXTI0:优先级=PreemptionPriorityValue 子优先级=0;EXTI9:优先级=0,子优先级=1;SysTick Handler:优先级=!PreemptionPriorityValue 子优先级 SubPriority = 0;刚开始设置PreemptionPriorityValue=0,即EXTI0优先级比SysTick优先级高;在EXTI9中断服务子程序

3、中,EXTI Line0和SysTick的优先级对换;在EXTI0中断服务子程序中,SysTick中断挂起位被置1,若SysTick优先级 比EXTI Line0优先级高,则EXTI 0中断被抢占,转而去执行SysTick中断服务子程序;否则继续执行EXTI Line0中断服务子程序。如果EXTI0被SysTick抢占贝0 LED1、LED2、LED3、LED4循环闪烁,如果 EXTI0 抢占 SysTick 则 LED1、LED2、LED3、LED4常亮或者常灭。1、建立工程1) 、在工程文件中包含如下文件(int、doc、user、lib、start)2)、选择 STM32F103VB 芯

4、片CPUVendor: STMicroelectronicsDevice: STM32F1D3VBToolset: ARMData baseSTM32F1D3RESTM22F103RFSTM32F1D3RGSTM32F103T4STM32F103T6STM32F103TS STM 32F103TB STM32F1D3VSDescription:ARM 32-bit Cortex-M3 Micracantroller, 72MHz, 12SkB Rash, 20k日 SRAM, PLL, Embedded Internal RCSMHz and 32kHz, Real-Time Dock, Ne

5、sted Interrupt Controller, Power Saving Modes, JTAG and SWD, 3 Synch. 16-bit Timera with Input Capture, Output Compare and PWM, 16-bit frch Advanced Timer, 2 16-bit Watchdog Timera, Sys Tick Timer, 2SPI.2I2C.3 USART, USB 20 Full Speed Interface, CAN 2.0B Active.2 12-bit A/D Converter, Fast I/O Ports

6、实验步骤与结果分析STM32F1D3VCSTM32F1D3VDSTM32F103VE STM 进 1 DM STM32F1D3VGOKCancel |Help3)、分别添加如下文件-:_;rNivc、Startup Code声 STT132F10 x.s、Sourcemain.c、InterruptsT| stm32F10K_it.c、Library田 STT132F10 xR.LIB、Documentation孟 readme.txtSTM32F1D2VB2、运行过程(1)使用Keil uVision3通过ULINK仿真器连接EduKit-M3实验平台,打开实验例 程NVIC_test子目录

7、下的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

8、中断后,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位Tabk 273.先占优先级和从优先级值”NNI C_Prio ritGrou

9、pNVIC IRQChauDd 的羌占优先级XSJC IRQChauuel境诚先皴_描述NVIC_PnoirityGroup_00(015 /,先占优先级0位 从优先级4位NV3C_PnoiityGroup_l0-10-7先占优先级1位 从优先级3位NV3C_PnoiityGroup_20-30-3先占优先级2位 从优先级2位NVIC PrioiityGrouip 30-70-1先占优先级3位 从优先级1位配置一个比特为抢占优/*ESaSfetheEXTi0 :洗级nterrupt *? /使能 EX,0TI0中断先占优先级4位 从优先级。位NVIC_InitStructure.NVIC_IR

10、QChannel = 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

11、EXTI9_5 Interrupt */使能 EXTI9_5 中断NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = Q/EXTI9_5 主优先级的选 择等于0NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;/EXTI9_5 主优先级的选择等于 0NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_In

12、itStructure);/* 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,

13、GPIO_Pin_6,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_6);Delay(0 x5FFFF);GPIO WriteBit(GPIOC,GPIO Pin 7,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_7);Delay(0 x5FFFF);GPIO_WriteBit(GPIOC,GPIO_Pin_8,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_8); Delay(0 x5FFFF); GPIO_Writ

14、eBit(GPIOC,GPIO_Pin_9,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_9); Delay(0 x5FFFF); void GPIO_Configuration(void)/* Configure PC6, PC7, PC8 and PC9 as output push-pull */ 使能为推挽输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 I GPIO_Pin_7 I GPIO_Pin_8 I GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed

15、= GPIO_Speed_50MHz; /使能其速度为 50MHzGPIO_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_InitS

16、tructure);/* 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);Table 203.函数 GPIO_EXTILineCouf祯函数名GPIO_EXULine

17、Coiifi g函数原形void GPIO_EXTTLineConfig(u8 GPIO_PortSoiircer u8 GPIO_PmSoiirce)功能描述选择GPIO管脚用作外部中断线路输入参数1GPIO_PortSource: ,i择用作外部中断线源的GPIO端口 参阅Section; GPIO_PortSaiwce查阅更多该参数允许取值范围输入参数2GPIO_Pin$oiirce:待设置的外部中断线路 该参祉可以取GPIO_PuiSourcex(x可以是0-15)/* Configure EXTI Line0 to generate an interrupt on falling e

18、dge */ 配置EXTI Line0产生一个中断在下降沿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);Table 135.函数 EXTI_StructIuit函数名EXTT_SmictInit函数原形void

温馨提示

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

评论

0/150

提交评论