2022年嵌入式系统-流水灯按键定时器实验报告.docx
《2022年嵌入式系统-流水灯按键定时器实验报告.docx》由会员分享,可在线阅读,更多相关《2022年嵌入式系统-流水灯按键定时器实验报告.docx(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品学习资源嵌入式系统应用试验报告姓名:学号:学院:专业:班级:指导老师:欢迎下载精品学习资源试验 1、流水灯试验编程掌握试验板上 LED 灯轮番点亮、熄灭,中间间隔肯定时间;试验主要考察对 STM32F10X 系列单片机 GPIO 的输出操作;参阅数据手册可知,通过软件编程, GPIO 可以配置成以下几种模式:输入浮空输入上拉输入下拉模拟输入开漏输出推挽式输出推挽式复用功能开漏式复用功能依据试验要求,应当第一将 GPIO配置为推挽输出模式;由原理图可知,单片机 GPIO输出信号经过 74HC244缓冲器,连接 LED灯;由于 74HC244的 OE1和 OE2都接地,为相同电平, 故 A端电
2、平与 Y端电平相同且LED灯共阳,所以,假如要点亮 LED,GPIO应输出低电平;反之, LED灯熄灭;软件方面,在程序启动时,调用 SystemInit函数见附录 1,对系统时钟等关键部分进行初始化,然后再对GPIO 进行配置;GPIO 配置函数为 SZ_STM32_LEDInit 见附录 2,函数中第一使能 GPIO时钟:RCC_APB2PeriphClockCmdGPIO_CLKLed, ENABLE; 然后配置 GPIO 输入输出模式: GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 再配置 GPIO 端口翻转速度:欢迎下载精品学习资源
3、GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;最终将配置好的参数写入寄存器,初始化完成: GPIO_InitGPIO_PORTLed, &GPIO_InitStructure ;初始化完成后,程序循环点亮一个LED并熄灭其他 LED,中间通过 Delay函数进行延时,到达流水灯的成效 程序完整代码见附录 3;试验程序流程图如下:硬件方面,依据试验指南,将试验板做如下连接:欢迎下载精品学习资源试验二、按键试验利用 STM32读取外部按键状态, 按键按下一次产生一次外部中断在中断处理函数中使按键所对应的灯亮起;试验主要考察对 STM32F10X
4、系列单片机 GPIO 外部中断功能的使用;STM32F107VCT 一共有 5 组 GPIO,分别是 PA15:0、PB15:0、PC15:0、PD15:0、PE15:0;STM32 的全部 GPIO 都可以作为中断输入源,单片机通过复用的方式使其对处理器来说来自GPIO 的一共有 16 个中断 Px15:0 ;详细实现是 PA0、PB0、PC0、PD0 和 PE0共享一个 GPIO 中断; PA1、PB1 、PC1、PD1 和 PE1共享一个 GPIO 中断;PA15 、PB15 、PC15、PD15和 PE15共享一个 GPIO 中断;以以下图片为以EXTI0 为例的外部中断 /大事线路映
5、像:要产生中断,必需先配置好并使能中断线;依据需要的边沿检测设置2 个触发寄存器,同时在中断屏蔽寄存器的相应位写1答应中断恳求;当外部中断 线上发生了期望的边沿时, 将产生一个中断恳求, 对应的挂起位也随之被置 1;在挂起寄存器的对应位写 1,将清除该中断恳求;要把 IO 口作为外部中断输入,有以下几个步骤:(1) 初始化 IO口为输入;这一步设置要作为外部中断输入的IO 口的状态, 可以设置为上拉 / 下拉输入,也可以设置为浮空输入,但浮空的时候外部肯定要带上拉,或者下拉电阻;否就可能导致中断不停的触发;在干扰较大的地方,就 算使用了上拉 / 下拉,也建议使用外部上拉 / 下拉电阻, 这样可
6、以肯定程度防止外部干扰带来的影响;(2) 开启 IO 口复用时钟,设置 IO 口与中断线的映射关系; STM32的 IO 口与中断线的对应关系需要配置外部中断配置寄存器EXTICR,这样我们要先开启复用时钟,然后配置 IO 口与中断线的对应关系;才能把外部中断与中断线连接起来;(3) 开启与该 IO 口相对的线上中断 / 大事,设置触发条件;这一步,我们要配置中断产生的条件, STM32可以配置成上升沿触发,下降沿触发,或者任意欢迎下载精品学习资源电平变化触发, 但是不能配置成高电平触发和低电平触发; 这里依据自己的实际情形来配置; 同时要开启中断线上的中断, 这里需要留意的是: 假如使用外部
7、中断,并设置该中断的 EMR位的话, 会引起软件仿真不能跳到中断, 而硬件上是可以的;而不设置 EMR,软件仿真就可以进入中断服务函数,并且硬件上也是可以 的;建议不要配置 EMR位;(4) 配置中断分组 NVIC,并使能中断;这一步,我们就是配置中断的分组以及使能, 对 STM32的中断来说, 只有配置了 NVIC 的设置, 并开启才能被执行,否就是不会执行到中断服务函数里面去的;(5) 编写中断服务函数;这是中断设置的最终一步,中断服务函数,是必不可少的, 假如在代码里面开启了中断, 但是没编写中断服务函数, 就可能引起硬件错误, 从而导致程序崩溃; 所以在开启了某个中断后, 应为该中断编
8、写服务函数;在中断服务函数里面编写要执行的中断后的操作,并很据情形判定是否要对中断产生的标志位进行清零 ;由原理图可知,按键未按下时,GPIO读到的为高电平,按键按下后,IO 口接地,产生一个电平跳变,所以外部中断触发方式应当设置为下降沿触发;LED灯的点亮与试验一中相同,不过多赘述;程序第一对按键进行初始化,初始化函数为 GPIO_KEY_Config见附录 4,配置过程与试验一中 GPIO配置基本一样;由于此处 GPIO需要采集外界按键信号, 故 GPIO模式应当为调整为内部上拉电阻输入GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ;然后执行 G
9、PIO中断初始化函数 KEY_EXIT_Init 见附录 5,第一将连接按键的 IO 口与 EXTI 线链接到一起:GPIO_EXTILineConfigGPIO_KEY1_EXTI_PORT_SOURCE,GPIO_KEY1_EXTI_PIN_SOURCE;然后将触发方式设置为下降沿触发并写入中断配置寄存器,并使能中断: EXTI_InitStructure.EXTI_Line = GPIO_KEY1_EXTI_LINE; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger =
10、 EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init&EXTI_InitStructure;之后进行中断分组配置及中断优先级配置,函数为InterruptConfig见附录 6;欢迎下载精品学习资源配置过程较为复杂,涉及到抢占优先级和响应优先级的概念;程序第一将所 有外部中断归为 NVIC_PriorityGroup_2,即 2 位抢占优先级和 2 位响应优先级:NVIC_PriorityGroupConfigNVIC_PriorityGroup_2;然后将全部外部中断信号的抢占优先级规定为0、1、2
11、,使其可以相互区分, 并将配置好的参数写入对应寄存器中,完成配置:NVIC_InitStructure.NVIC_IRQChannel = GPIO_KEY1_EXTI_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init&NVIC_InitStructure; NVIC_InitStructure.NVIC_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 嵌入式 系统 流水 按键 定时器 实验 报告
限制150内