版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章NUCLEO-G431RB基础实验例程2024年6月26日LED点灯实验1234定时器PWM应用实验外部中断实验串行接口应用实验5数/模转换应用实验6互补PWM输出实验前言本章将通过实例,从最简单的外设开始,由浅入深,带领大家逐步学习STM32G4的入门使用。实验注意事项如下:①在实验接线之前,要根据电路原理图的布局、操作简单以及安全的原则先摆放好所有仪器,要调节的仪器放在离自己比较近的位置。②当要使用某个IO口作其他用途的时候,请先查看开发板的原理图,确认该IO口是否有连接在开发板的某个外设上,如果有,进一步确认该外设的这个信号是否会对此次使用造成干扰,如无干扰再使用这个IO。③上电之前,请注意板子上的跳线帽以及板与板之间的连接方式,若跳线帽或者板子间连接方式不对,会导致功能无法正常使用,或者损坏电路板。④实验过程中,一旦发现出现特殊情况,比如短路、导线着火等,必须马上断开电源。⑤实验过程中,需取下控制板上的某些短路帽时,务必记住其所在位置,在实验结束后将短路帽放回原处,以免造成开发板损坏或影响正常使用。LED点灯实验01实验目标及条件(1)实验目标按下按键后,实现LED灯闪烁。(2)实验条件①硬件平台:NUCLEO-G431RB②软件平台:STM32CubeMXKeiluVision5(MDK-ARM)实验步骤步骤一:创建新项目方法1:点击NewProject下的AccessToMCUSelector,接着在PartNumberSearch栏中输入STM32G431RB,然后双击选择STM32G431RBTx。图4-1新建工程,选择MCU图4-2选择MCU具体型号实验步骤方法2:点击NewProject下的AccessToBoardSelector,接着在CommercialPartNumberSearch栏中输入NUCLEO-G431RB,然后双击选择NUCLEO-G431RB。图4-3新建工程,选择开发板图4-4选择开发板具体型号实验步骤步骤二:引脚配置在完成步骤一以后,会进入如图4-5所示的Pinout&Configuration视图,在右下角的搜索栏中搜索PA5管脚,将其设置为如图4-6所示的GPIO_Output。图4-5进入Pinout&Configuration视图图4-6配置PA5管脚为GPIO_Output实验步骤步骤三:代码生成①点击“ProjectManager”进入如图4-7所示的工程配置界面②输入项目名称,选定项目存储位置③将Toolchain/IDE设定为MDK-ARM,版本选择自己电脑安装的版本④点击右上角“GENERATECODE”,即可生成代码⑤加载完毕后,弹出提示窗口,点击“OPENPROJECT”,进入KeiluVision5图4-7配置工程,生成代码实验步骤步骤四:代码编辑、编译与调试在KeiluVision5中的Application/User下打开main.c文件,在第100行左右找到以下循环语句while(1){/*USERCODEENDWHILE*//*USERCODEBEGIN3*/}然后添加代码HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);HAL_Delay(100);添加完成后点击Bulid按钮后再点击Download即可完成实验。图4-9代码修改实验步骤步骤四:代码编辑、编译与调试图4-10编译图4-11下载烧录实验结果实验结果:按下蓝色按键B1后,LED2开始闪烁,每经过0.1s变化到相反状态,闪烁周期为0.2s。图4-12LED点灯实验结果定时器PWM应用实验02实验目标及条件(1)实验目标利用定时器,实现LED灯的闪烁。(2)实验条件①硬件平台:NUCLEO-G431RB②软件平台:STM32CubeMXKeiluVision5(MDK-ARM)定时器简介定时器(Timer)最基本的功能是定时。把定时器与GPIO结合起来使用可以实现非常丰富的功能,如测量输入信号的脉冲宽度、生产输出波形等。NUCLEO-G431RB具有丰富的定时器资源,包括2个高级定时器(TIM1/TIM8),6个通用定时器(TIM2-TIM4/TIM15-TIM17),2个基本定时器(TIM6/TIM7)。定时器要实现计数必须有个时钟源,基本定时器时钟只能来自内部时钟,高级定时器和通用定时器还可以选择外部时钟源,或者直接使用来自其他定时器的等待模式。定时器简介当GATE=1时,“与门”的输出信号K由INTx输入电平和TRx位的状态一起决定,当且仅当TRx=1,INTx=1(高电平)时,计数启动;否则,计数停止。当INT0引脚为高电平时且TR0置位,TR0=1,启动定时器T0;当INT1引脚为高电平时且TR1置位,TR1=1,启动定时器T1。GATE=0时,“或门”输出恒为1,“与门”的输出信号K由TRx决定,定时器不受INTx输入电平的影响,由TRx直接控制定时器的启动和停止。图4-13定时器/计数器原理框图定时器简介在对定时器进行编程时,常用的函数如表4-1所示。表4-1定时器编程常用函数列表函数名称函数功能HAL_TIM_Base_Init()InitializetheTIMTimebaseUnitHAL_TIM_Base_DeInit()De-InitializetheTIMBaseperipheralHAL_TIM_Base_MspInit()InitializetheTIMBaseMSPHAL_TIM_Base_MspDeInit()De-InitializetheTIMBaseMSPHAL_TIM_Base_Start()StartstheTIMBasegenerationHAL_TIM_Base_Stop()StopstheTIMBasegenerationHAL_TIM_Base_Start_IT()StartstheTIMBasegenerationininterruptmodeHAL_TIM_Base_Stop_IT()StopstheTIMBasegenerationininterruptmodeHAL_TIM_Base_Start_DMA()StartstheTIMBasegenerationinDMAmodeHAL_TIM_Base_Stop_DMA()StopstheTIMBasegenerationinDMAmode中断资源中断资源Nucleo-G431RB具有102个可屏蔽高端通道(不包括Cortex-M4F的16根中断线),还具有16个可编程优先级(使用了4位中断优先级),低延迟异常和中断处理。同时还具有电池管理控制功能,能够实现系统控制寄存器。在编写程序中,需要使用定时器时,需先使能定时器,如图4-14所示,并调节定时器的频率,而后才可以对定时器相关功能进行编程。图4-14定时器使能配置实验步骤步骤一:创建新项目创建一个新项目,此处采用方法1:点击NewProject下的AccessToMCUSelector后在PartNumberSearch栏中输入STM32G431RB后双击选择STM32G431RBTx。图4-15新建工程,选择MCU图4-16选择MCU具体型号实验步骤步骤二:配置TIM2与引脚①配置TIM2的Channe1为PWMGenerationCH1图4-17配置定时器图4-18配置PA5管脚为TIM2_CH1②将TIM2_CH1重新映射到PA5管脚(默认为PA0)实验步骤③设定TIM2时钟频率为64MHz图4-19设定TIM2时钟频率图4-20设置定时器参数④设置1Hz,占空比为50%的PWM,如图4-20所示,将“Prescaler”、“CounterPeriod”与Pulse分别设为1023、62499与31250实验步骤步骤三:生成代码①点击ProjectManager进入界面显示②输入项目名称,选定项目存储位置③将Toolchain/IDE设定为MDK-ARM,版本选择自己电脑安装的版本④点击右上角GENERATECODE,即可生成代码⑤加载完毕后点击OPENPROJECT,进入KeiluVision5图4-21配置工程,生成代码实验步骤步骤四:代码编辑、编译与调试①点击项目展开后,再展开Application/User/Core,双击打开main.c图4-23代码编辑实验步骤②在/*USERCODEBEGIN2*/与/*USERCODEEND2*/之间加入代码图4-24添加代码图4-25编译、下载烧录③将板子连接后,点击编译按钮进行编译,编译成功后点击DeBug按钮后,下载成功后再点击黑色复位按钮,就会发现LED灯以1Hz50%占空比开始闪烁。实验结果实验结果如下:LED2以1Hz50%占空比开始闪烁(1秒闪烁一次)。图4-26定时器PWM应用实验结果外部中断实验03实验目标及条件(1)实验目标利用外部中断,通过按钮来改变LED灯的状态。(2)实验条件:①硬件平台:NUCLEO-G431RB②软件平台:STM32CubeMXKeiluVision5(MDK-ARM)实验步骤步骤一:创建新项目此处采用方法2:点击NewProject下的AccessToBoardSelector,接着在CommercialPartNumberSearch栏中输入NUCLEO-G431RB,然后双击选择NUCLEO-G431RB。图4-27新建工程,选择开发板图4-28选择开发板具体型号实验步骤步骤二:引脚及中断配置配置引脚PC13和PA5,PC13配置为CPIO_EXTI13,PA5配置为GPIO_Output,正常情况下这两个引脚的默认配置就是这样,已由STM32CubeMX自动配置。图4-29配置PA5管脚为GPIO_Output图4-30配置PC13管脚为GPIO_EXTI13实验步骤时钟树保持默认配置图4-31时钟配置图4-32NVIC配置在SystemCore中选择NVIC,使能外部中断,并配置中断优先级。实验步骤步骤三:代码生成①点击ProjectManager进入工程配置界面②输入项目名称,选定项目存储位置③将Toolchain/IDE设定为MDK-ARM,版本选择自己电脑安装的版本④点击右上角GENERATECODE,即可生成代码⑤加载完毕后点击OPENPROJECT,进入KeiluVision5图4-33配置工程,生成代码实验步骤步骤四:代码编辑、编译与调试在KeiluVision5中的Application/User下打开用户中断函数stm32g4xx_it.c文件,在外部中断函数进行编辑,具体方式为在第212行添加如下代码:HAL_GPIO_TogglePin(LD2_GPIO_Port,LD2_Pin);函数的功能为当按键PB1按下时触发外部中断,LED2状态反转。图4-35外部中断函数编辑实验步骤生成完成之后点击魔术棒,选择Debug,点击Settings,勾选ResetandRun,之后进行Build,Build完成无误后点击Download完成实验。图4-36调试、编译、下载图4-37复位、运行实验结果最终的实验结果如下:当蓝色按键按下时触发外部中断,LED2状态翻转,左图中LED2灯灭,右图中LED2灯亮。图4-38外部中断实验结果串行接口应用实验04实验目标(1)实验目标通过串口实现驱动板和电脑之间的信息传输,电脑发送一段字符串,会收到同样的字符串。(2)实验条件①硬件平台:NUCLEO-G431RB②软件平台:STM32CubeMX KeiluVision5(MDK-ARM)③串口调试工具:XCOM实验步骤步骤一:创建新项目创建一个新项目,此处采用方法1:点击NewProject下的AccessToMCUSelector后在PartNumberSearch栏中输入STM32G431RB后双击选择STM32G431RBTx。图4-39新建工程,选择MCU图4-40选择MCU具体型号实验步骤步骤二:引脚配置与串口设置①将引脚PA5设置为GPIO_Output图4-41配置PA5管脚为GPIO_Output实验步骤②点击Connectivity,设置USART1为异步模式(Asynchronous),并在NVICSettings页面使能中断图4-42设置USART1为异步模式图4-43使能中断实验步骤步骤三:生成代码①点击ProjectManager进入工程配置界面②输入项目名称,选定项目存储位置③将Toolchain/IDE设定为MDK-ARM,,版本选择自己电脑安装的版本④点击右上角GENERATECODE,即可生成代码⑤加载完毕后点击OPENPROJECT,进入KeiluVision5图4-44配置工程,生成代码实验步骤步骤四:代码编辑、编译与调试①打开main.c,在用户代码引用区包含需要的头文件,进而可以正常使用需要用到的函数。②在用户代码区定义变量,用来储存收到的字符串,在字符串超出256长度时,会返回morethan256。图4-46引用头文件代码图4-47变量定义代码图4-48串口初始化代码实验步骤③在用户代码区2加入代码,对串口进行初始化。④在用户代码区加入函数HAL_UART_RxCpltCallback(UART_HandleTypeDef*huart),实现发送功能。图4-48串口初始化代码图4-49发送功能实现代码图4-48串口初始化代码实验步骤⑤完成代码添加后,点击如图4-50中所示的“Build”按钮进行编译,然后再点击“Download”按钮进行下载。图4-50编译、下载烧录图4-48串口初始化代码实验步骤步骤五:连接串口与通讯如图4-51所示,两个MCU之间进行通讯,Tx是发送,Rx是接收,一个MCU的Tx与另一个MCU的Rx相连接,实现信息的发送和接收。在本实验中,开发板的Rx为PC5,使用杜邦线或光缆线将其与电脑的Tx连接,电路板的Tx为PC4,同样的方法与电脑的Rx连接,最后将电脑的地线与板子的GND相连接。PC4引脚为CN10的34号引脚,PC5为CN10的6号引脚,GND为CN7的22或20号引脚。PC4和PC5引脚的配置如图4-52所示。图4-51MCU间串口通讯示意图图4-52配置PC4和PC5引脚实验步骤步骤五:连接串口与通讯打开串口调试工具,将通讯参数设置为如图4-53所示的参数,与图4-54所示的STM32CubeMX中的通讯参数设置一致图4-53串口通讯参数设置图4-54STM32CubeMX串口通讯参数设置实验结果实验结果如图4-55所示,在串口通讯工具中进行通讯,发送一个字符串,会接收到同样的一个字符串。图4-55串行接口应用实验结果数/模转换应用实验05实验目标(1)实验要求利用NUCLEO-G431RB的ADC转换器将检测到的电压转化为数值,之后再利用DAC转换将某个变换的数值转化为电压,再利用ADC的方法检测产生的电压值。(2)实验条件①硬件平台:NUCLEO-G431RB②软件平台:STM32CubeMXKeiluVision5(MDK-ARM)ADC引脚介绍ADC(AnalogtoDigitalConverters)是模数转换器的简称,可以将各种模拟信号转化为数字信号进行处理。常用的有并联比较型ADC和逐次逼近型ADC,NUCLEO-G431RB上使用的ADC是逐次逼近型ADC,同时STM32的ADC支持多种转换模式,可以适用于不同的应用场合。具体参数如表4-2所示。功能特征STM32G4系列套件的值ADC数量最多5个分辨率12bits(或者10,8,6bits),过采样为16bitsADC原理准则逐次逼近寄存器(SAR)ADC时钟周期最高60MHz(多ADC通道处理时最高52MHz)采样速度最快4Msps(多ADC通道处理时最高3.46Msps)采样时间2.5到640.5[ADC时钟周期]供应电压触发外部引脚或者内部外围设备(如计时器)转换模式单步,连续,扫描选定通道,非连续模式表4-2ADC参数实验步骤步骤一:创建新项目与实验4.1相同,创建一个新项目,此处采用方法2:点击NewProject中的ACCESSTOBOARDSELECTOR,选择NUCLEO-G431RB。图4-56新建工程图4-57选择开发板实验步骤步骤二:配置ADC和DAC点击左边的Analog中的ADC1,将IN1设置为IN1Single-ended,使能ADC通道PA0。点击DAC1,将OUT1mode设置为Connectedtoexternalpinonly。图4-58配置ADC图4-59配置DAC实验步骤步骤三:生成代码①点击ProjectManager进入界面显示②输入项目名称,选定项目存储位置③将Toolchain/IDE设定为MDK-ARM④点击右上角GENERATECODE,即可生成代码⑤加载完毕后点击OPENPROJECT,进入KeiluVision5图4-60配置工程,生成代码实验步骤步骤四:代码编辑、编译与调试①打开main.c文件,在用户代码引用区包含需要的头文件。②在用户代码区0定义变量,用来存储ADC得到的数值(Value)以及DAC设置的数值(Voltage)。图4-62引用头文件代码图4-63变量定义代码图4-48串口初始化代码实验步骤③在用户代码区2进行初始化配置。④在while循环中写入ADC、DAC的操作,ADC函数的功能是直接读取PA0引脚上的模拟值并转化为数值,DAC的功能是将变化的vlotage的值转化为模拟值在PA4处输出。图4-64初始化代码图4-65ADC、DAC功能实现代码图4-48串口初始化代码实验步骤⑤代码添加完成后,点击如图4-66中所示的“Build”按钮进行编译,然后再点击“Download”按钮进行下载,即可实现程序的运行,烧录后记得按Reset按钮来执行新写入的程序。图4-66程序下载烧录实验步骤步骤五:实验结果观察①利用STMStudio软件可以实时观察电路板中变量的值,打开STMStudio,在图4-67所示空白区域右键点击“Import…”。②在用户代码区0定义变量,用来存储ADC得到的数值(Value)以及DAC设置的数值(Voltage)。图4-67变量值观察窗口实验步骤步骤五:实验结果观察②点击图4-68中右边的省略号,将烧录文件axf包含进去,axf文件的位置在Keil所建工程的MDK-ARM文件中。图4-68烧录文件选择图4-48串口初始化代码实验步骤步骤五:实验结果观察③如图4-69所示,拉至最后,将voltage和value加入到观察项目中。图4-69变量导入图4-48串口初始化代码实验步骤步骤五:实验结果观察④在图4-70所示界面选择这两个变量,右键选择“Sendto”,选择“Varview1”,这样点击框选的播放按钮就可以开始实时观察波形,在下方的“Display”界面还可以将观察方式由“Curve”改为“table”,来选择观察波形或数值。图4-70变量波形观察图4-48串口初始化代码实验步骤步骤五:实验结果观察⑤将PA0与3.3V电压引脚相连,如图4-71所示,观察ADC转换的效果,可以看到Value的值在4026左右,即将电压转化为了数值信号。图4-71变量数值观察图4-48串口初始化代码实验步骤步骤五:实验结果观察⑥将PA0与PA4相连,将由voltage转化来的电压信号(PA4引脚引出)用ADC的方法进行观察,进而实现DAC功能,如图4-72所示,本代码中voltage在0,128之间跳变,进而产生梯形波。图4-72DAC结果观测互补PWM输出实验06实验目标(1)实验要求利用定时器,在引脚上输出一定频率、占空比的PWM波形。能够在两个引脚输出互补的PWM,并能输出存在死区的互补PWM波形。(2)实验条件①硬件平台:NUCLEO-G431RB②软件平台:STM32CubeMXKeiluVision5(MDK-ARM)PWM及死区简介
脉冲宽度调制(PulseWidthModulation,PWM),简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。通常,大功率电机、变频器等末端都是由大功率管、IGBT等元件组成的H桥或三相桥。每个桥的上半桥和下半桥一旦同时导通,会导致元器件损坏。理论上来分析,上下半桥不会同时导通,但高速的PWM驱动信号在达到功率元件的控制极时,由于各种原因产生延迟的效果,可能会造成某个半桥元件在应该关断时没有关断,上下桥同时导通,导致功率器件烧毁。为了防止这种情况的产生,可以选择在上半桥关断后,延迟一段时间再打开下半桥或在下半桥关断后,延迟一段时间再打开上半桥,从而避免功率元件烧毁。这段延迟时间就是死区。实验步骤步骤一:创建新项目与实验4.1相同,创建一个新项目,此处采用方法1:点击NewProject下的AccessToMCUSelector后在PartNumberSearch栏中输入STM32G431RB后双击选择STM32G431RBTx。图4-74新建工程,选择MCU图4-75选择MCU具体型号图4-48串口初始化代码实验步骤步骤二:配置TIM1与引脚①如图4-76所示,配置TIM1的Channe1为PWMGenerationCH1CH1N,即PWM互补输出图4-76配置定时器图4-48
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 化妆品新员工入职试题及答案
- 钳工高级工考试题库及答案
- 2026年会计专业期末考试卷审计理论与实务综合测试
- 2026年监理工程师《监理案例分析(土木建筑)》考试真题附答案
- 2026年健康管理师(三级)考试试题及参考答案
- 2026年节水知识竞赛试题库150道附答案【考试直接用】
- 2026年老年康体测试题及答案
- 2026年美甲基础模拟试题带答案
- 2026年牧草育种学模拟试题及参考答案
- 2026年企业消防考试题库及答案
- 管道保温现场补口施工方案及技术措施
- 预制小箱梁(T梁)安装施工组织设计
- 群塔作业安全监理建设监理实施细则
- 产后产后恢复误区解读
- 电力电子技术复习习题解析华北电力大学
- 2026校招:中国兵器工业笔试题及答案
- 2025退行性脊柱疾病规范化诊疗全流程管理专家共识解读课件
- 四川省2025年1月普通高中学业水平合格性考试政治试卷(含答案)
- 建筑装饰制图与识图 课件 项目2任务2 点、直线和平面的投影
- 《聪训斋语》原文及译文
- 《T-GQYH 0129–-2024 青少年国防教育培训体系规范》
评论
0/150
提交评论