基于STM32的嵌入式系统设计实验实验指导书_第1页
基于STM32的嵌入式系统设计实验实验指导书_第2页
基于STM32的嵌入式系统设计实验实验指导书_第3页
基于STM32的嵌入式系统设计实验实验指导书_第4页
基于STM32的嵌入式系统设计实验实验指导书_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

基于STM32的嵌入式系统设计实验实验指导书5.编译工程:点击IDE中的编译按钮(Build),检查是否有语法错误,确保编译通过,生成可执行文件(.hex或.bin)。*将USB数据线连接开发板与电脑(确保调试器部分已连接)。*在IDE中配置调试器选项,选择正确的调试接口(如ST-Link)。*复位开发板,观察LED是否按预期闪烁。若未达到预期,检查代码、接线及配置。1.5实验思考与拓展1.若LED不亮,可能的原因有哪些?如何逐步排查?(提示:检查电源、接线、GPIO引脚配置、代码逻辑、延时长度等)2.尝试修改延时函数的参数,观察LED闪烁频率的变化。如何计算或调整延时时间的长短?3.尝试使用不同的GPIO引脚控制多个LED,实现流水灯效果。4.查阅STM32参考手册,了解GPIO端口的其他工作模式(如输入模式、复用功能模式)的配置方法。5.比较直接操作寄存器和使用固件库/HAL库进行GPIO配置的优缺点。实验二:中断系统与外部中断应用2.1实验目的1.理解STM32中断系统的基本概念、嵌套向量中断控制器(NVIC)的作用。2.掌握STM32外部中断(EXTI)的配置方法和编程技巧。3.学会使用按键触发外部中断,并在中断服务函数中实现相应的功能(如控制LED状态翻转)。2.2实验原理STM32的中断系统支持多种类型的中断源,包括外设中断(如定时器、UART、SPI等)和外部中断。所有中断都由NVIC进行统一管理,NVIC负责中断优先级的设置、中断的使能与屏蔽、中断请求的响应等。外部中断/事件控制器(EXTI)管理着STM32的外部中断线。STM32的每个GPIO引脚都可以配置为外部中断输入,但不同引脚可能共享同一个中断线(具体取决于芯片型号)。例如,在STM32F103系列中,EXTI线0可以连接到PA0、PB0、PC0等引脚中的一个。外部中断的配置通常包括以下步骤:1.使能SYSCFG/AFIO时钟(对于外部中断引脚映射)。2.配置GPIO引脚为输入模式,并根据需要配置上下拉电阻。3.配置EXTI线路:选择中断源(GPIO引脚),设置中断触发方式(上升沿、下降沿或双边沿触发)。4.配置NVIC:设置中断优先级,使能对应的EXTI中断通道。5.编写中断服务函数:当中断发生时,CPU会跳转到对应的中断服务函数执行。在中断服务函数中,需要先判断中断标志位,处理相应逻辑,最后清除中断标志位。按键作为一种常用的输入设备,其按下和释放的动作会引起引脚电平的变化。通过将按键连接到GPIO引脚,并配置该引脚为外部中断输入,即可实现按键的中断式检测,相比轮询方式能更高效地响应按键事件,并节省CPU资源。2.3实验设备与环境1.硬件:*STM32开发板(同实验一)*USB数据线*杜邦线(若干)*面包板(可选)*按键(1-2个,若开发板无板载按键)*上拉或下拉电阻(若干,若按键需要外部电阻)*LED(若干,同实验一)2.软件:*与实验一相同的IDE及固件库/HAL库2.4实验内容与步骤2.4.1硬件连接(若使用外接按键)*将按键的一端连接到STM32的某个GPIO引脚(如PB0)。*将按键的另一端连接到GND(此时GPIO引脚需配置为上拉输入)或VCC(此时GPIO引脚需配置为下拉输入)。为了保证引脚电平稳定,通常会在按键两端并联一个去抖电容,或在程序中进行软件消抖。2.4.2创建工程与配置外部中断1.新建一个工程,或在实验一工程的基础上进行修改。2.配置按键所连接的GPIO引脚:*模式:输入模式(GPIO_Mode_IPU上拉输入或GPIO_Mode_IPD下拉输入)。3.配置EXTI:*使能AFIO时钟(对于标准库):`RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);`*将GPIO引脚映射到EXTI线:通过调用`GPIO_EXTILineConfig()`函数(标准库)或配置SYSCFG_EXTICRx寄存器(HAL库使用`HAL_GPIO_Init()`时配置)。例如,将PB0映射到EXTI线0。*初始化EXTI结构体:选择EXTI线(如EXTI_Line0),设置中断模式(EXTI_Mode_Interrupt),设置触发方式(如EXTI_Trigger_Falling下降沿触发,若按键接GND且GPIO为上拉输入)。*使能EXTI中断线:调用`EXTI_Init()`函数(标准库)或`HAL_EXTI_Init()`函数(HAL库)。4.配置NVIC:*初始化NVIC结构体:设置中断通道(如EXTI0_IRQn),设置抢占优先级和子优先级(注意STM32的中断优先级分组)。*使能NVIC中断通道:调用`NVIC_Init()`函数(标准库)或`HAL_NVIC_EnableIRQ()`函数(HAL库)。2.4.3编写中断服务函数与主函数1.编写外部中断服务函数:*中断服务函数的名称是固定的,需参考启动文件(startup_stm32xxxx.s)中的中断向量表。例如,EXTI线0的中断服务函数通常为`EXTI0_IRQHandler`。*在中断服务函数中,首先检查对应EXTI线的中断标志位是否置位(`EXTI_GetITStatus(EXTI_Line0)`标准库或`__HAL_EXTI_GET_IT_SOURCE(&hexti,EXTI_LINE_0)`HAL库)。*若中断标志置位,则执行LED状态翻转操作(如调用`GPIO_ToggleBits()`标准库或`HAL_GPIO_TogglePin()`HAL库)。*重要:在处理完中断后,必须清除EXTI中断标志位(`EXTI_ClearITPendingBit(EXTI_Line0)`标准库或`__HAL_EXTI_CLEAR_IT(&hexti,EXTI_LINE_0)`HAL库),否则中断会被反复触发。**注:使用HAL库时,可能会有专门的回调函数(如`HAL_GPIO_EXTI_Callback()`)供用户重写,以处理中断事件。*2.主函数:*初始化系统时钟。*初始化LED所连接的GPIO引脚(同实验一,配置为推挽输出)。*初始化按键所连接的GPIO引脚及外部中断(如上述步骤)。*主循环(while(1))中可以添加一些其他任务,或保持为空,观察中断是否能正常响应。1.编译工程,确保无错误。3.按下按键,观察LED是否发生状态翻转(亮灭切换)。4.若按键触发不稳定(LED闪烁多次),思考如何在中断服务函数中加入软件消抖处理。2.5实验思考与拓展1.什么是中断优先级?STM32的中断优先级是如何划分的?抢占优先级和响应优先级有何区别?如何设置NVIC的中断优先级分组?2.外部中断的触发方式有哪几种?本实验中选择下降沿触发的原因是什么?若改为上升沿触发或双边沿触发,电路和程序需要如何修改?3.为什么必须清除EXTI中断标志位?如果不清除会发生什么现象?4.按键抖动是如何产生的?有哪些方法可以消除按键抖动?尝试在中断服务函数中加入软件消抖代码。5.尝试配置多个外部中断(如使用两个按键,分别连接到EXTI线0和EXTI线1),实现不同按键控制不同LED的功能。实验三:通用定时器及其PWM输出3.1实验目的1.理解STM32通用定时器(TIMx)的基本工作原理和主要功能。2.掌握定时器的初始化配置方法,包括时钟源选择、计数模式、自动重装载值和预分频器的设置。3.掌握PWM(脉冲宽度调制)的基本概念,学会使用STM32定时器的PWM模式输出不同占空比的波形。4.利用PWM控制LED的亮度变化或驱动小型直流电机(若有条件)。3.2实验原理STM32系列微控制器通常配备多个定时器,包括高级定时器(TIM

温馨提示

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

评论

0/150

提交评论