实验五中断驱动实验—戴国庆

上传人:cl****1 文档编号:564602268 上传时间:2023-05-30 格式:DOCX 页数:15 大小:3.99MB
返回 下载 相关 举报
实验五中断驱动实验—戴国庆_第1页
第1页 / 共15页
实验五中断驱动实验—戴国庆_第2页
第2页 / 共15页
实验五中断驱动实验—戴国庆_第3页
第3页 / 共15页
实验五中断驱动实验—戴国庆_第4页
第4页 / 共15页
实验五中断驱动实验—戴国庆_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《实验五中断驱动实验—戴国庆》由会员分享,可在线阅读,更多相关《实验五中断驱动实验—戴国庆(15页珍藏版)》请在金锄头文库上搜索。

1、班级:计算机科学与技术姓名:戴国庆学号:20132430104实验五 中断驱动实验一. 实验目的了解STM32微控制器的中断特性,熟悉GPIO的复用功能和中断特点,掌握使用中断驱动方式检测外设状态以及编写中断服务程序的方法。 二. 实验内容编写NVIC初始化和EXTI初始化函数,完成中断驱动方式的按键检测程序、以及中断服务程序,使用软件模拟运行和调试程序。配合LED驱动程序,使用硬件仿真器下载、运行和调试程序,实现按下KEY1按键,中断服务程序控制对应LED1灯亮起一段时间后灭;按下KEY2键,LED2灯灯亮起一段时间后灭。KEY1和KEY2设置不同的抢占优先级实现中断嵌套。三实验要求1.结合

2、按键和LED等显示效果,体会中断的功能和应用。2.编写实验报告:写出详细的项目开发过程,上机调试过程(软件仿真和硬件仿真)。写出实验总结以及实验的心得体会。四实验步骤按键中断:1.根据按键状态控制LED灯亮灭按键KEY有按下来,产生中断请求2.KEY在目标板上的连接PA0、PC13、依次连接2个KEY1、KEY2按钮按下时,相应GPIO引脚输入低电平(0),否则输入高电平(1)3.程序的功能是按下按钮KEY1对应LED1亮一段时间,然后熄灭LED1接PB0,KEY1接PA0具体实现:1.时钟配置NVIC在内核里,使用内核时钟,在启动代码里有SystemInit()函数,使系统时钟为72MHZ,

3、需要用户配置的是GPIO的时钟2.NVIC初始化配置首先,选择优先级组号(即04共5种形式)NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);/ 本例中,只有1个中断源,选用1组优先级配置其次,调用misc.c文件的NVIC初始化函数void NVIC_Init( NVIC_InitTypeDef * NVIC_InitStruct )参数NVIC_InitStruct是指向NVIC_InitTypeDef结构的指针typedef struct uint8_t NVIC_IRQChannel; uint8_t NVIC_IRQChannelPreem

4、ptionPriority; uint8_t NVIC_IRQChannelSubPriority; FunctionalState NVIC_IRQChannelCmd; NVIC_InitTypeDef;3.配置GPIO端口工作方式GPIO配置 PB0驱动LED1灯,其工作模式配置为推免输出代码:/*定义一个GPIO_InitTypeDef类型的结构体*/GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOB|, ENABLE); /*选择要控制的GPIOB引脚*/GPIO_InitS

5、tructure.GPIO_Pin = GPIO_Pin_0; /*设置引脚模式为通用推挽输出*/GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /*设置引脚速率为50MHz */ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /*调用库函数,初始化GPIOB0*/GPIO_Init(GPIOB, &GPIO_InitStructure);KEY1接PA0, PA0引脚配置为上拉输入模式GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphCl

6、ockCmd (RCC_APB2Periph_GPIOA|, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOA, &GPIO_InitStructure);4.EXTI初始化配置调用stm32f10x_exti.c中的EXTI初始化配置void EXTI_Init( EXTI_InitTypeDef * EXTI_InitStruct )参数EXTI_InitStruct是指向EXTI_InitTypeDef结构的指针t

7、ypedef struct uint32_t EXTI_Line; /* 指明EXTI线 */ EXTIMode_TypeDef EXTI_Mode; /* 指明工作模式 */ EXTITrigger_TypeDef EXTI_Trigger; /* 指明有效边沿 */ FunctionalState EXTI_LineCmd; /* ENABLE或DISABLE */EXTI_InitTypeDef;5.配置GPIO和EXTI映射关系首先,对进行中断请求的GPIO引脚进行初始化配置例如设置按键引脚为下拉输入或浮空输入模式也可以在配置NVIC之前进行其次,调用stm32f10x_gpio.c的

8、EXTI线配置函数void GPIO_EXTILineConfig ( uint8_t GPIO_PortSource, uint8_t GPIO_PinSource )GPIO_PortSource选择作为EXTI线的GPIO端口形如GPIO_PortSourceGPIOx(x是AG)GPIO_PinSource指明配置的EXTI线(GPIO引脚)形如GPIO_PinSourcex(x是015)本例代码: GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);6.中断服务程序stm32f10x_it.cMDK 为方便用户编写中断

9、服务程序, 特别提供了文件 stm3210x_it.c( 以及配套的头文件 stm3210x_it.h)。这两个文件保存于 MDK 文件夹( Keil_v5) 的软件包( Pack) 中,具体是在 STM32 标准外设驱动程序库的模板文件夹( templates) 里。 或者也可以在 MDK文件夹下搜索出它们。将文件 stm3210x_it.c 和 stm3210x_it.h, 复制到用户应用程序文件夹( user) 下, 并去掉其只读属性, 并添加到项目中。打开 MDK 提供的中断服务程序文件 stm3210x_it.c, 会发现已经编辑了 CM3 异常处理程序( 函数) 的框架, 处理本身

10、或为空或为死循环。 最后, 也给出了一个内容为空的外设中断服务程序( 函数) 的框架, 等待用户编写。五部分代码及其实现 六实验总结通过实验我了解了STM32微控制器的中断特性,stm32微控制器可以在NVIC中设置中断优先级。中断优先级分为抢占式优先级和响应式优先级,本实验只涉及到了抢占式优先级。高优先级中断可以在低优先级中断过程中响应,反之不能。熟悉了GPIO的复用功能。例如,其中PB0驱动LED1灯,其工作模式配置为推免输出。在实验过程中,虽然大部分内容上课时讲到过,但在自己动手过程中还是遇到了很多疑惑的地方。在老师和同学的帮助下,最终我顺利完成了实验。实验是检验知识的一种方式,通过实验我们能更深刻地理解书本上的知识,更加灵活地运用知识。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 国内外标准规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号