版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式原理与应用集成电路学院
嵌入式课程组LED显示电路设计应用项目22.1STM32GPIO与时钟系统01STM32GPIO概述04STM32时钟系统重要参数及配置03STM32时钟系统概述02GPIO引脚功能了解GPIO引脚。了解STM32F1系列的时钟参数。掌握STM32CubeIDE对单片机进行时钟配置。任务内容:任务要求:STM32GPIO概述01STM32GPIO概述STM32GPIO是STM32系列单片机中的重要外设模块,用于控制外部设备或处理与外部设备的数字信号交互。GPIO模块具有多个引脚,每个引脚可以配置为输入或输出,并可以通过软件控制其电平状态。GPIO模块的灵活性使得它在嵌入式系统设计中具有广泛的应用,可以用于连接各种外部设备,如传感器、LED、按钮等。通过配置GPIO引脚的工作模式和电平状态,可以实现对外部设备的控制和与外部环境的交互,从而满足不同应用场景下的需求。GPIO引脚功能02GPIO引脚功能每个STM32单片机都有一定数量的GPIO引脚,每个GPIO口都可以由软件配置成如下8种模式:模式描述输入浮空引脚处于高阻态,可接收外部电平信号但不影响信号输入上拉引脚通过上拉电阻连接到高电平,未接入信号时保持高电平输入下拉引脚通过下拉电阻连接到低电平,未接入信号时保持低电平模拟输入引脚被配置为模拟输入,用于连接模拟传感器或设备开漏输出引脚被配置为开漏输出,可拉低但不能拉高推挽输出引脚被配置为推挽输出,可拉低也可拉高推挽复用功能引脚被配置为推挽输出,并具有其他功能,如定时器、串口等开漏复用功能引脚被配置为开漏输出,并具有其他功能,适用于需要外部上拉电阻的情况,如I2C总线GPIO引脚功能STM32的每个IO端口都有7个寄存器来控制:寄存器描述CRL端口0-7配置寄存器CRH端口8-15配置寄存器IDR端口输入数据寄存器ODR端口输出数据寄存器BSRR端口位设置/复位寄存器BRR端口位复位寄存器LCKR端口配置锁定寄存器STM32时钟系统概述03STM32时钟系统概述STM32系列单片机的时钟系统是整个芯片运行的核心,负责提供系统各个模块和外设所需的时钟信号。时钟系统决定了芯片的运行速度和功耗等重要特性,因此了解STM32的时钟系统对于正确配置和优化系统性能至关重要。通过正确配置时钟系统,可以确保系统各个模块和外设能够按照预期的速度和节奏进行工作,提高系统的稳定性和可靠性。合理优化时钟系统可以降低功耗、提高性能,并且适应不同的应用场景和需求,为STM32单片机的应用提供更灵活的选择和更好的性能表现。STM32时钟系统重要参数及配置04STM32时钟系统重要参数一、内部时钟源高速内部时钟(HSI)频率:8MHz精度高,适用于大多数普通应用低速内部时钟(LSI)频率:40kHz用于低功耗模式和RTC(实时时钟)功能STM32时钟系统重要参数二、外部时钟源外部晶体振荡器(HSE)用途:提供更高精度的时钟信号连接方式:晶体振荡器引脚(XTAL1和XTAL2)外部时钟信号输入用途:接收外部时钟源提供的时钟信号STM32时钟系统重要参数三、时钟分频器功能将时钟源的频率分频到各个模块和外设所需的频率配置可设置不同的分频比例以满足系统对时钟频率的需求STM32时钟系统配置通过STM32CubeIDE的图形编译工具,可以轻松进行STM32单片机的时钟配置,正确配置时钟参数,能够优化系统性能,提高应用稳定性。在STM32CubeIDE工程中打开STM32CubeMX图形编译工具,点击“ClockConfiguration”选项卡进入STM32时钟配置界面。STM32时钟系统重要参数及配置在STM32系列中,时钟系统形成了一棵复杂的时钟树结构,通过参数配置可以将时钟频率设置为72MHz2.2STM32CubeIDEGPIO初始化01GPIO引脚功能选择03生成代码02GPIO输出引脚配置学会GPIO引脚功能的选择。学会GPIO输出引脚的配置。学会生成代码并查阅。任务内容:任务要求:GPIO引脚功能选择01GPIO引脚功能选择打开STM32CubeMX图形编译工具。在项目中选择“Pinout&Configuration”选项卡。在“SystemCore”模块中选择“GPIO”。芯片引脚图及引脚状态将显示在界面右侧的“Pinoutview”中。用户可以直接在图上选择引脚并设置其功能。点击特定引脚,弹出对话框以选择GPIO输入、输出等状态。GPIO引脚功能选择STM32引脚功能引脚功能描述ADC1_IN8用于ADC(模数转换器)的输入通道,用于模拟信号的采样ADC2_IN8用于ADC(模数转换器)的输入通道,用于模拟信号的采样TIM1_CH2N用于定时器(Timer)的通道输出,用于PWM输出或捕获比较等定时器功能TIM3_CH3用于定时器(Timer)的通道输出,用于PWM输出或捕获比较等定时器功能GPIO_Input通用输入输出引脚的默认功能,被配置为通用输入,具体取决于所选引脚的硬件连接GPIO_Output通用输入输出引脚的默认功能,被配置为通用输出,具体取决于所选引脚的硬件连接GPIOAnalogGPIO引脚在复位状态下被配置为模拟输入,用于模拟信号的输入,而不是数字信号的输入或输出EVENTOUTGPIO引脚在复位状态下被配置为事件输出,用于将特定事件的状态输出到外部GPIO_EXTI0GPIO引脚的外部中断0功能,在复位状态下,引脚可能被配置为外部中断,用于触发特定事件或处理外部输入GPIO输出引脚配置02GPIO输出引脚配置引脚功能中选择“GPIO_Output”后对应引脚就可以作为通用输出口使用,这时需要在“GPIOModeandConfiguration”菜单中对引脚进行详细配置。1.GPIOOutputLevel(输出电平):用于配置GPIO引脚在输出模式下的默认电平状态。可选择高电平(High)或低电平(Low)。引脚在输出模式下会保持选择的默认电平状态,直到通过代码显式改变。GPIO输出引脚配置2.GPIOMode(GPIO模式):用于选择STM32单片机引脚作为输出时的模式。OutputPushPull(推挽输出):输出引脚可提供电流来驱动外部负载,能提供高和低电平。OutputOpenDrain(开漏输出):输出引脚只能拉低到地,处于高电平时不提供电流,需要外部上拉电阻拉高电平。选择输出模式需根据实际应用和外部电路需求进行。3.GPIOPull-up/Pull-down(上拉/下拉电阻):用于选择STM32单片机引脚作为输入时的上拉或下拉电阻。上拉电阻将引脚拉高到逻辑高电平,下拉电阻将引脚拉低到逻辑低电平。有助于保持输入引脚在未连接外部设备时的稳定状态。GPIO输出引脚配置4.MaximumOutputSpeed(最大输出速度):用于配置GPIO引脚在输出模式下的最大驱动能力。可选择不同速度级别,如低速(Low)、中速(Medium)、高速(High)等。速度级别影响引脚切换状态的速度、输出电流能力和功耗。5.UserLabel(用户标签):允许用户为特定的GPIO引脚添加自定义标签或注释。在生成的代码中使用自定义标签来标识该引脚,而不是默认的引脚名称。提高代码的可读性和可维护性,方便区分每个GPIO引脚的作用和功能。生成代码03生成代码GPIO引脚配置完后点击“Project”菜单中的“GenerateCode”生成代码。等待进度条完成后,在STM32CubeIDE中生成了初始化后的工程目录及文件。2.3STM32CubeIDE实现LED闪烁01电路设计04编译运行代码03编写代码02生成代码学会用Proteus绘制电路图。学会在STM32CubeIDE中配置选项。学会生成代码并查阅。学会编译代码并运行。任务内容:任务要求:电路设计01电路设计电路设计要求:使用STM32F103C8单片机的PB0引脚控制LED的开和关状态当PB0引脚输出高电平时,LED熄灭;当输出低电平时,LED点亮,电阻R1限流通过不断交替改变PB0引脚的状态,实现LED的闪烁效果生成代码02生成代码生成代码流程:1.在STM32CubeIDE中新建工程,然后打开STM32CubeMX。2.在“Pinout&Configuration”页面中找到“RCC”选项,选择“Crystal/CeramicResonator”作为时钟源,将时钟频率调整为72MHz。3.在“Pinout&Configuration”页面中找到芯片示意图的“Pinoutview”,选择PB0引脚。4.点击PB0,在弹出的对话框中选择“GPIO_Output”。5.对PB0进行设置:默认输出电平为低电平,输出模式为推挽输出,无上拉或下拉电阻,最大输出速度为低速。生成代码6.在“CodeGenerator”选项中勾选“Generateperipheralinitializationasapairof'.c/.h'filesperperipheral”选项。7.点击“Project”菜单中的“GenerateCode”生成代码。生成代码STM32CubeMX生成代码中包含的三个初始化函数:1.HAL_Init():HAL_Init()函数是HAL库的初始化函数,用于初始化HAL库的运行环境。在程序执行前调用HAL_Init()函数,确保HAL库能够正常工作。通常在main函数的开头处调用。生成代码2.SystemClock_Config():SystemClock_Config()函数是由STM32CubeMX自动生成的,用于配置系统时钟。在该函数中,设置了系统时钟源、时钟频率等参数。通过调用该函数,确保单片机能够以正确的时钟频率运行。生成代码3.MX_GPIO_Init():MX_GPIO_Init()函数是由STM32CubeMX自动生成的,用于初始化GPIO引脚。在该函数中,配置了各个GPIO引脚的工作模式、输出类型、上拉/下拉等参数。通过调用该函数,确保GPIO引脚能够按照预期工作。编写代码03编写代码在生成的工程文件中,找到“main.c”文件,并在右边的代码编辑页面中定位到“USERCODEBEGINWHILE”和“USERCODEENDWHILE”之间的位置,在这之间写入控制LED闪烁的代码。编写代码控制LED闪烁代码:编写代码代码中用到了HAL库提供了写引脚函数“HAL_GPIO_WritePin()”和延时函数“HAL_Delay()”函数名称HAL_GPIO_WritePin()HAL_Delay()功能设置指定GPIO引脚的输出状态,以实现将引脚设置为高电平或低电平在毫秒级别上生成延迟,用于在微控制器执行代码时生成指定时间的延迟使用说明GPIOx:要操作的GPIO端口。例如GPIOA、GPIOB等GPIO_Pin:要操作的GPIO引脚。GPIO_PIN_x,其中x是引脚编号(0到15)PinState:要设置的引脚状态,可以是GPIO_PIN_RESET(低电平)或GPIO_PIN_SET(高电平)Delay:延迟的时间,单位为毫秒示例代码HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);HAL_Delay(1000);编译运行代码04编译运行代码完成代码编写后,使用菜单中的“项目”->“属性”,在“属性”菜单中依次找到“C/C++Build”->“Settings”->“MCUPostbuildoutputs”并且勾选“ConverttoInterHexfile”选项。编译运行代码勾选完成点击“应用并关闭”,通过点击工具栏“”图标选择“Debug”或者“Release”进行编译,当代码没有错误或者警告时控制台会输出以下信息,并在对应文件夹生成Hex文件。编译运行代码打开Proteus绘制的电路图,双击单片机打开编辑元件界面,在“ProgramFile”中加载上述步骤中生成的Hex文件。在编辑元件页面设置“OSCFrequency”振荡器频率为72M,"ClockScale"时钟分频器选择"8Times"。编译运行代码点击运行,信号灯开始闪烁。LED灯闪烁频率可以通过修改延时函数“HAL_Delay(100)”中的参数来改变。设定值越小,LED闪烁频率越高,LED闪烁越快;反之,LED闪烁频率降低,闪烁速度变慢。2.4实战演练-设计花样灯01设计要求02编写代码掌握Proteus电路的设计。学会用多种方法编写代码。任务内容:任务要求:设计要求01设计要求STM32F103C8单片机的PB0~PB7连接8个LED灯,使8个LED灯从上到下循环闪烁,时间间隔为0.5秒,呈现出流水灯闪烁的效果。编写代码02编写代码1.配置GPIO引脚:使用STM32CubeMX工具配置用于控制8个LED灯的GPIO引脚。将8个LED灯连接到STM32F103C8单片机的PB0-PB7引脚上,确保每个引脚都配置为推挽输出模式、默认高电平、无上拉下拉电阻、最大输出速度为低速。编写代码2.生成代码:在STM32CubeMX中完成GPIO配置后,点击“Project”菜单中的“GenerateCode”生成代码。3.在STM32CubeIDE中编写应用程序:打开生成的STM32CubeIDE项目,在main.c文件中,编写控制8个LED灯流水灯闪烁的代码。编写代码位操作法实现流水灯在每次循环中,依次点亮和熄灭GPIOB的8个引脚控制的LED。每隔500毫秒(0.5秒),依次点亮GPIOB一个引脚的LED,然后再将其熄灭,并点亮下一个
引脚的LED,以此类推,直到最后一个引脚被点亮后又回到第一个引脚,循环继续。HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,0):将GPIOB的引脚0设置为低电平(点亮LED)。HAL_Delay(500):延时500毫秒。HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,1):将GPIOB的引脚0设置为高电平(熄灭LED)。以此类推,依次操作GPIOB的引脚1至引脚7,使得8个LED依次流水灯地点亮和熄灭。while(1):无限循环,保持LED的流水灯效果持续进行。编写代码取反函数方法实现流水灯HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_0):将GPIOB的引脚0的输出状态取反,
即将其从低电平翻转到高电平或从高电平翻转到低电平,实现LED的点亮和熄灭。HAL_Delay(500):延时500毫秒。HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_0):再次将GPIOB的引脚0的输出状态
取反,实现LED的熄灭和点亮。以此类推,依次操作GPIOB的引脚1至引脚7,使得8个LED依次流水灯地点亮和熄灭。代码中用到了HAL库引脚翻转函数HAL_GPIO_TogglePin()。
voidHAL_GPIO_TogglePin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin)
GPIOx
:要操作的GPIO端口GPIO_Pin:要操作的GPIO引脚编写代码寄存器控制方法实现流水灯这段代码使用了for循环来循环遍历一个存储了流水灯状态的数组,
并将数组中的值依次写入到GPIOB的ODR寄存器中。每个值代表了一个流水灯状态,通过不断更新ODR寄存器的值,
实现了流水灯的效果。和前两种方法相比,此方法需要编写的代码较少,通过此方法能够
轻松实现更为复杂的花样灯效果。但需要提前准备好存储流水灯状态的数组,如代码中的数组“table[]”
数组中的内容就是流水灯对应的编码。编写代码流水灯编码表PB7PB6PB5PB4PB3PB2PB1PB0编码111111100xfe111111010xfd111110110xfb111101110xf7111011110xef110111110xdf1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026宁夏水利电力工程学校招聘11人笔试历年典型考点题库附带答案详解
- 2026四川成都产业投资集团有限公司“蓉漂人才荟”赴高校校园招聘2人笔试历年难易错考点试卷带答案解析
- 2026云南省交通投资建设集团有限公司管理人员校园招聘84人笔试历年难易错考点试卷带答案解析
- 2026中国广播电视网络集团有限公司高校毕业生招聘10人(北京)笔试历年典型考点题库附带答案详解
- 2026年河北省遵化市高二化学下册期末考试模拟测试卷附完整答案(各地真题)
- 2026年福建省武夷山市高二化学下册期末考试模拟卷附答案【培优B卷】
- 2026及未来5年中国珠宝抛光刷市场数据分析及竞争策略研究报告
- 2026年山东省龙口市高二化学下册期末考试模拟检测卷附参考答案【突破训练】
- 2026年青海省德令哈市高二化学下册期末考试模拟试卷【有一套】附答案
- 2026及未来5年中国滚槽机市场数据分析及竞争策略研究报告
- DB4210T 68-2024 马铃薯秋延后大棚生产技术规程
- (高清版)DB41∕T 2137-2021 公路隧道监控量测技术规程
- 骨质疏松课件完整版
- 人教版二年级下册数学口算混合练习题
- GA/T 804-2024机动车号牌专用固封装置
- 孟万金编制的中国大学生积极心理品质量表+评分方式
- 思辨与创新智慧树知到期末考试答案章节答案2024年复旦大学
- (正式版)JBT 9229-2024 剪叉式升降工作平台
- 智能工程测井系统使用说明书样本
- 纤维肌痛综合征学习课件
- 北京市清华大学附属小学小学六年级小升初期末语文试卷(含答案)
评论
0/150
提交评论