nahenonar三aRd0Q酷国0O国Breakpoint(F9)nsert orakpoint at theRegistersEDisassemblynoweanSystem InitializeaO:Registervalu-占击,洗加新点>X42T9344yatemInitializes():55whi1e(1)1.光标放在这里47481/LED变化LED TOGGLE:98USARTIPrintE((uintSE")"USART_RX_TX..."):小口打印TIMDelay_Nms(500):1/延时500msB0x0151图2-37调试环境--复位,使程序复位到初始。一全速运行。在全速运行时,可以设定到运行到光标处,或者运行到断点处。-【单步调试】。每点击一次,程序运行一步,遇到函数会进入函数。0【逐步调试】即逐行调试,也就是每点一次按钮,程序运行一行。遇到函数不会进入函数净【跳出调试】即挑出函数调试,也就是每点一次按钮,程序跳出一个函数,直到跳出最外面的函数(main函数)。0L-【运行到光标处】即将光标放在某一处,点击该按钮(或Ctr1+F11),程序执行到光标的位置就会停止下来(前提是程序能执行到光标的位置)。【跳转到暂停行】这个功能在程序停止运行时有效,主要的作用就是我们打开了很多文件,不知道将程序翻到哪里去了,点击改按钮即可知道我们的程序暂停在那个位置。(2)调试窗口【调试窗口】是在调试的时候可以查看的窗口,这里有别于平时编辑状态下的窗口。平时编辑时View菜单下面的选项很小,但是进入调试模式,这里就多了很多选项,这些选项就是调试时查看的窗口,键图2-38。26
26 图2-37 调试环境 -复位,使程序复位到初始。 -全速运行。在全速运行时,可以设定到运行到光标处,或者运行到断点处。 -【单步调试】。每点击一次,程序运行一步,遇到函数会进入函数。 - 【逐步调试】即逐行调试,也就是每点一次按钮,程序运行一行。遇到函数不会进入函数 。 - 【跳出调试】即挑出函数调试,也就是每点一次按钮,程序跳出一个函数,直到跳出最外 面的函数(main函数)。 -【运行到光标处】即将光标放在某一处,点击该按钮(或Ctrl + F11),程序执行到光标的位置就会停止下来(前提是程序能执行到光标的位置)。 - 【跳转到暂停行】这个功能在程序停止运行时有效,主要的作用就是我们打开了很多文 件,不知道将程序翻到哪里去了,点击改按钮即可知道我们的程序暂停在那个位置。 (2)调试窗口 【调试窗口】是在调试的时候可以查看的窗口,这里有别于平时编辑状态下的窗口。 平时编辑时View菜单下面的选项很小,但是进入调试模式,这里就多了很多选项,这些选 项就是调试时查看的窗口,键图2-38
top)STM32FOxxTIM器本延时配置详细过程TIM.uvprojx-μVisionUsers/AdministFileEditVew Project Fiash Debug PeripheralsToolsSVCSWindowHelpStatus Bar产民电丰车旧信国M4Dd.OOe.4国ToolbarsRTE国国·国·国··程·国·大日Project Windov中日RegistersOBooks WindowyatemInitializea(r)Register平时0-CoreFtnetsMndo7FEFE40BL.WyateInitializes(0x08000958)偏辑视图aTemplatesWindSourrWdtimer.cXEBulld OutputWindorstartup.stm321051.susart.cbsp.cosp.hstm32roo_.t.ctimer.h+Error ListWindoEREtEEREREEOR中RRRRARERERRRR/main(void)B7Find InFiles Window这两个地方的选项一样的CommandWindowystem_Initializes():这些按钮在调试的时候才有。eDisasseimbly WindowRnile(1)Symbols WindowLED_TOGGLE;//LED变化Registers Window//口打印USARTIP-EHEE((Uint8_t")"USART_RX_TX...")1CallStackWinTIMDerey_Mms(500)://延时500mWatchWindowProjectMemoryWindow中口Command9Watch1SerlalWindowsLoad "c:ktop/STM32F0xx_TIM基本延NameValueTypeWS3AnalysisWindows4TimesKcannot evaluat.ucharTrace<Enter expression>System ViewerToolboxWindowASSIGNBakkill Breakiist BreaksetCan StackLocaisWatch1Peridic Window UpdateST-LinkDebuggert址:0.0000000.secL44C:1图2-38调试窗口也就是我们查看变量的窗口,如图2-39。A.内存窗口,ToolsFileEditViewProjectFlashDebug PeripheralsSVInsert'indudefileDAO金#啤肉DDd.OOE心50Go to Headerfile'timer.h'口回台理Show Disassembly at Ox08000974RegistersxDisassembySet Program Counter50:while(TimesEegistervalueRun to CursorlineCtrl+F1051:E-Core0x08000974E00CF9.Insert/Remove Breakpoint1/等待101wht1et/TT52T:000008Ctri-F94Enable/DisableBreakpoint0x40001000SDw000001F3startup_strbsp.h图main.cstm32foxit.ctimerGoToDefinitionOtTimesE4Ox08000D2CB胎0x2000002441函数名称Go To ReferenceToTimes0x0000000042功能E70:0000000043参数Add Times to....V1WatchiB2OXFPFFFPFF返值44回OXFPFFFFFFWatch2作45有Insert Tracepoint atTimes...E10Ox08000D2C46E11Ox08000D2CEnable/Disable TracepointMemory1E120x0000000047void TIMDelay(SPMemory248日Ctrl-F2Insert/RemoveBookmark(LRR1400800093949TIM6->CR1//启动定时Memory3515(PC)Ctri+z石键do50while+PS0x21000000Memory451白RedoCtr-yBanked52//等待10uSystenwhile((1)%Ctrl+xCutLogic Analyzer53Internal/清除标志TIM6->SRCtrl+CCopy54ModeThreadStackIESP55TIM6->CR1关闭定时PasteCtrl-v56SelectAllCtrI+A5758日/**Execution Profifing59函数名称:LOutliningProjedtRegistersAdvancedCommandEWatch1Load"c:/lUsersl|Administrator|/Desktopl|sTM32Foxx_TIM基本延时配置详细过程//objectValreNamws 1,`TimesTimesDX0064wS 1,"Times<Enterexpression>5图2-39内存窗口B.系统外设窗口,也就是外设寄存器数值查看的窗口,如图2-40所示。27
27 图2-38 调试窗口 A.内存窗口,也就是我们查看变量的窗口,如图2-39。 图2-39 内存窗口 B.系统外设窗口,也就是外设寄存器数值查看的窗口,如图2-40所示
CUsersiAdrriDesktopiSTM32ufTIMuvprojx-μVisionEdtViewDebugPer38MndmHelBBMStatus Ba#光能痘国TM4080·00404COMPTealb韩国·四·#·喝·国·天UBYUSATProjectWineA.Baakwnd2DBGMCU信信I员甲CRC2BuatebipebiphmaoetetimerhuitdOut时妈活时ERBPNRRCC//启动定时器REFoka1#时到TM//关团定时器CRICENUSIUSARTZWinUSARTEUSARTYUSARIAWatch1口ConndUSARTS配置评细过程1100etadC:1/Useza)/Adssnsatzator)/Deaktop)/STM92F0ValutTypeUSARIinsanesDUSARTTaksnSrBSS COVERACERETAFNUM.SCRE:OVRRW图2-40系统外设窗口4.4.2图形化工程模板配置平台STM32CubeMX5.2.1STM32CubeMX是ST意法半导体近几年来大力推荐的STM32芯片图形化配置工具,允许用户使用图形化向导生成C初始化代码,可以大大减轻开发工作时间和费用。STM32CubeMX几乎覆盖了STM32微控制器全系列芯片。它具有如下特性:①直观的选择MCU型号,可指定系列、封装、外设数量等条件;②微控制器图形化配置:③自动处理引脚冲突:④动态设置时钟树,生成系统时钟配置代码:③可以动态设置外围和中间件模式和初始化;③功耗预测;C代码工程生成器覆盖了STM32微控制器初始化编译软件,如IAR、KEIL、GCC③可以独立使用或者作为Eclipse插件使用。对于STM32CubeMX和STM32Cube的关系这里我们还需要特别说明一下,STM32Cube包含STM32CubeMX图形工具和STM32Cube固件库两个部分,使用STM32CubeMX配置生成的代码,是基于STM32Cube固件库的。也就是说,我们使用STM32CubeMX配置出来的初始化代码,和STM32Cube固件库兼容,例如硬件抽象层代码就是使用的STM32的HAL库。不同的STM32系列芯片,会有不同的STM32Cube库支持,而STM32CubeMX图形工具只有一种。所以我们配置不同的STM32系列芯片,选择不同的STM32Cube固件库即可。它们之间的关系如下图4-22所示。28
28 图2-40 系统外设窗口 4.4.2 图形化工程模板配置平台STM32CubeMX5.2.1 STM32CubeMX是ST意法半导体近几年来大力推荐的STM32芯片图形化配置工具,允许用 户使用图形化向导生成C初始化代码,可以大大减轻开发工作时间和费用。STM32CubeMX几 乎覆盖了 STM32微控制器全系列芯片。它具有如下特性: ① 直观的选择MCU型号,可指定系列、封装、外设数量等条件; ② 微控制器图形化配置; ③ 自动处理引脚冲突; ④ 动态设置时钟树,生成系统时钟配置代码; ⑤ 可以动态设置外围和中间件模式和初始化; ⑥ 功耗预测; ⑦ C 代码工程生成器覆盖了STM32微控制器初始化编译软件,如 IAR、KEIL、GCC; ⑧ 可以独立使用或者作为Eclipse 插件使用。 对于STM32CubeMX和STM32Cube的关系这里我们还需要特别说明一下,STM32Cube包含 STM32CubeMX图形工具和 STM32Cube固件库两个部分,使用STM32CubeMX配置生成的代码, 是基于 STM32Cube固件库的。也就是说,我们使用 STM32CubeMX配置出来的初始化代码, 和STM32Cube固件库兼容,例如硬件抽象层代码就是使用的STM32的HAL库。不同的STM32系 列芯片,会有不同的STM32Cube库支持,而STM32CubeMX图形工具只有一种。所以我们配置 不同的STM32系列芯片,选择不同的STM32Cube固件库即可。它们之间的关系如下图 4-22所 示
STM32CubeMXMSTM32CubeL1STM32CubeF4STM32CubeF0STM32CubeF2STM32CubeF1STM32CubeF3图4-22STM32CubeMX和STM32Cube库的关系1.STM32CubeMX运行环境搭建STM32CubeMX运行环境搭建包含两个部分。首先是laVa运行环境安装,其次是STM32CubeMX软件安装。对于Java运行环境,大家可以到Java官网www.java.com下载最新的Java软件。这里大家需要注意,STM32CubeMX的Java运行环境版本必须是V1.7及以上,如果你的电脑安装过V1.7以下版本,请先删掉后重新安装最新版本。对于Java运行环境安装,我们这里就不做过多讲解,大家直接双击安装包,根据提示安装即可。安装完成之后提示界面如下图4-23所示。Java安装·完成口XJavaV您已成功安装Java当有Java更新可用时,系统将会提示您。请始终安装更新以获取最新的性能和安全改进。有关更新设置的详细信息单击“关闭”后,浏览器将会打开以便您可以验证Java是否工作正常。关闭(C)图4-23Java安装成功提示界面29
29 图4-22 STM32CubeMX和STM32Cube库的关系 1.STM32CubeMX 运行环境搭建 STM32CubeMX运行环境搭建包含两个部分。首先是Java运行环境安装,其次是STM32Cub eMX软件安装。对于Java运行环境,大家可以到Java 官网 www.java.com 下载最新的Java软件。这里大家需要注意,STM32CubeMX的Java运行环境版本必须是V1.7及 以上,如果你的电脑安装过 V1.7 以下版本,请先删掉后重新安装最新版本。 对于Java运行环境安装,我们这里就不做过多讲解,大家直接双击安装包,根据提示 安装即可。安装完成之后提示界面如下图4-23所示。 图4-23 Java安装成功提示界面
安装完Java运行环境之后,为了检测是否正常安装,我们可以打开windows的命令输入框,输入:java-version命令,如果显示Java版本信息,则安装成功。提示信息如下图4-24所示。图4-24查看Java版本OOX管理员:C:lWindows|system32)cmd.exeMicrosoftwindows[版本6.1.76011A版权所有c)2009Microsoft保留所有权利。Corporation。C:WsersAdninistrator>javauersionjauaversion1.8.0_77″Jaua(TM)SERuntineEnuironnent (build 1.8.0_77-b03)JauaHotSpot(TM)Client UM <build 25.77-b03,mixed mode,sharing)在安装完Java运行环境之后,接下来我们安装STM32CubeMX图形化工具。该软件大家可以直接从ST官方下载,下载地址为:www.st.com/stm32cube。STM32CubeMX5.2.1中包括的文件如图4-25所示。名称修改日期类型大小SetupSTM32CubeMX-5.2.1.app2019/5/2415:01文件夹eReadme.html2019/5/2415:01360seHTMLDo...5KBSetupSTM32CubeMX-5.2.1.exe2019/5/2415:01应用程序167.599KBSetupSTM32CubeMX-5.2.1.linuxLINUX文件14KB2019/5/2415:01图4-25STM32CubeMX5.2.1包括的文件接下来我们直接双击STM32CubeMX安装包中的应用程序,根据提示信息安装即可。安装完成之后提示信息如下图4-26所示。 STM32CubeMX InstallationWizardOXISIN32CubeNI Installstion doneInstallation has completed successfullySaucmanteeAn minstallerprogram has been created inD:tools|SIM32CubeMXUninstallerSTM32CubeZGenerate an automatic installation scriptSTMicroelectronicsODone图4-26STM32CubeMX安装完成界面30
30 安装完 Java 运行环境之后,为了检测是否正常安装,我们可以打开 Windows 的命令输入框, 输入:java–version命令,如果显示Java 版本信息,则安装成功。提示信息如下图4-24所示。 图4-24 查看Java版本 在安装完 Java 运行环境之后,接下来我们安装 STM32CubeMX 图形化工具。该软件大家可以直接从ST官方下载,下载地址为:www.st.com/stm32cube。S TM32CubeMX5.2.1中包括的文件如图4-25所示。 图4-25 STM32CubeMX5.2.1包括的文件 接下来我们直接双击STM32CubeMX安装包中的应用程序,根据提示信息安装即可。安装 完成之后提示信息如下图4-26所示。 图4-26 STM32CubeMX安装完成界面