其所以然”,所以我们在学习库函数的同时,别忘了要了解一下寄存器大致配置过程。4.3.6HAL库和标准库选择ST先后提供了两套固件库:标准库和HAL库。STM32芯片面市之初只提供了丰富全面的标准库,大大便利了用户程序开发,为大开发板所推票,同时也为ST积累了大量标准库用户。有过STM32基础的同学想必对标准库非常熟悉。目前网络学习资料和源码,绝大多数都是采用的标准库。大约到2014年左右,ST在标准库的基础上又推出了HAL库。实际上,HAL库和标准库本质上是一样的,都是提供底层硬件操作API,而且在使用上也是大同小异。有过标准库基础的同学对HAL库的使用也很容易入手。ST官方之所以这几年大力推广HAL库,是因为HAL的结构更加容易整合STM32Cube,而STM32CubeMX是ST这几年极力推荐的程序生成开发工具。所以这两年新出的STM32芯片,ST直接只提供HAL库。在新型的STM32芯片中,用HAL库逐步淘汰标准库。那我们是使用HAL库还是标准库好呢?这里想说的是,HAL库和标准库都非常强大:对于目前标准库支持的芯片采用标准库开发也非常方便实用,而且目前网络资料和程序大部分都是讲解的标准库。大家不需要纠结自己学的是HAL库还是标准库,无论使用哪种库,只要理解了STM32本质,任何库都是一种工具,使用起来都非常方便。学会了一种库,另外一种库也非常容易上手,程序开发思路转变也非常容易。如果我们是一个STM32熟手,长期从事STM32开发,那么有必要对标准库和HAL库都有一定的了解,这样才能在项目开发中得心应手游刃有余。从STM32F7开始ST将不会提供配套的标准库,只提供HAL库。所以我们统一采用HAL库,方便程序在多个平台通用。同时,对于STM32来说,Cube确实是个非常强大的工具,也是ST这几年大力推广的工具,为了能更好的使用Cube,所以我们选择HAL库。4.4学习STM32需要工具和平台对于零基础学习单片机的学习者,要添置必要的学习和开发工具,搭建一个最基本的学习平台。该平台要包含基本的硬件和软件平台。硬件应该包括数字式万用表、示波器,计算机、J-LINK仿真器、STM32应用系统等;软件应该包括集成的开发环境软件、工程模板建立软件等C4.4.1J-LINK仿真器J-LINK是SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器。它与众多诸如IAREWAR、ADS、KEIL、WINARM,RealView等集成开发环境配合,可支持所有ARM7/ARM9/ARM11CortexMO/M1/M3/M4,Cortex21
21 其所以然”,所以我们在学习库函数的同时,别忘了要了解一下寄存器大致配置过程。 4.3.6 HAL库和标准库选择 ST先后提供了两套固件库:标准库和HAL库。STM32芯片面市之初只提供了丰富全面的 标准库,大大便利了用户程序开发,为广大开发板所推崇,同时也为 ST积累了大量标准库 用户。有过STM32 基础的同学想必对标准库非常熟悉。目前网络学习资料和源码,绝大多 数都是采用的标准库。 大约到 2014 年左右,ST 在标准库的基础上又推出了HAL库。实际上,HAL 库和标准 库本质上是一样的,都是提供底层硬件操作API,而且在使用上也是大同小异。有过标准库 基础的同学对 HAL 库的使用也很容易入手。ST 官方之所以这几年大力推广HAL 库,是因 为 HAL的结构更加容易整合STM32Cube,而 STM32CubeMX是ST这几年极力推荐的程序生成开 发工具。所以这两年新出的STM32芯片,ST直接只提供 HAL库。在新型的STM32 芯片中,用 HAL 库逐步淘汰标准库。 那我们是使用 HAL 库还是标准库好呢?这里想说的是,HAL库和标准库都非常强大, 对于目前标准库支持的芯片采用标准库开发也非常方便实用,而且目前网络资料和程序大 部分都是讲解的标准库。大家不需要纠结自己学的是HAL库还是标准库,无论使用哪种库, 只要理解了STM32本质,任何库都是一种工具,使用起来都非常方便。学会了一种库,另外 一种库也非常容易上手,程序开发思路转变也非常容易。如果我们是一个STM32熟手,长期 从事STM32开发,那么有必要对标准库和 HAL库都有一定的了解,这样才能在项目开发中得 心应手游刃有余。 从STM32F7开始 ST 将不会提供配套的标准库,只提供 HAL 库。所以我们统一采用 HAL 库,方便程序在多个平台通用。同时,对于 STM32来说,Cube 确实是个非常强大的工 具,也是ST这几年大力推广的工具,为了能更好的使用Cube,所以我们选择 HAL 库。 4.4 学习STM32需要工具和平台 对于零基础学习单片机的学习者,要添置必要的学习和开发工具,搭建一个最基本的 学习平台。该平台要包含基本的硬件和软件平台。硬件应该包括数字式万用表、示波器、 计算机、JLINK仿真器、STM32应用系统等;软件应该包括集成的开发环境软件、工程模板建立软件等 。 4.4.1 J-LINK仿真器 J- LINK是SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器。它与众多诸如IAREWAR、ADS 、KEIL、WINARM, Real View等集成开发环境配合,可支持所有ARM7/ARM9/ARM11 Cortex M0/M1/M3/M4, Cortex
A5/A8/A9等内核芯片的仿真。它与IAR、KEIL等编译环境可无缝连接,因此操作方便、连接方便、简单易学,是学习开发ARM最好、最实用的开发工具。J-LINK具有J-LinkPlus、J-Link Ultra、J-LinkUltra+、J-LinkPro、J-LinkEDU、J-Trace等多个版本,可以根据不同的需求选择不同的产品。J-LINK主要用于在线调试,它集程序下载器和控制器为一体,使得PC上的集成开发软件能够对ARM的运行进行控制,比如单步运行、设置断点、查看寄存器等。一般调试信息用串口“打印”出来,就如VC用printf在屏幕上显示信息一样,通过串口ARM就可以将需要的信息输出到计算机的串口界面。由于笔记本一般都没有串口,所以常用USB转串口电缆或转接头实现。作为初学者,J-LINK和USB转串口电缆或转接头这两个设备很常用。图4-6是J-LINK仿真器。图4-6J-LINK仿真器的实物图4.4.1KEIL环境下仿真器及调试环境的设置KEIL主要内容在第2章中做过介绍,这里再介绍有关仿真器的设置及调试的有关问题。1.仿真器的设置在调试程序过程中,如果用到仿真器,就需要对仿真器进行选择了。如仿真器的选择是要通过图2-312-32、2-33、2-3422
22 A5/A8/A9等内核芯片的仿真。它与IAR、KEIL等编译环境可无缝连接,因此操作方便、连接 方便、简单易学,是学习开发ARM最好、最实用的开发工具。 J-LINK具有J-Link Plus、J-Link Ultra、J-Link Ultra+、J-Link Pro、J-Link EDU、J-Trace等多个版本,可以根据不同的需求选择不同的产品。 J- LINK主要用于在线调试,它集程序下载器和控制器为一体,使得PC上的集成开发软件能够 对ARM的运行进行控制,比如单步运行、设置断点、查看寄存器等。一般调试信息用串口“ 打印”出来,就如VC用printf在屏幕上显示信息一样,通过串口ARM就可以将需要的信息输 出到计算机的串口界面。由于笔记本一般都没有串口,所以常用USB转串口电缆或转接头实 现。作为初学者,J-LINK和USB转串口电缆或转接头这两个设备很常用。 图4-6是J-LINK仿真器。 图4-6 J-LINK仿真器的实物图 4.4.1 KEIL环境下仿真器及调试环境的设置 KEIL主要内容在第2章中做过介绍,这里再介绍有关仿真器的设置及调试的有关问题。 1.仿真器的设置 在调试程序过程中,如果用到仿真器,就需要对仿真器进行选择了。如仿真器的选择 是要通过图2-31、2-32、2-33、2-34
Options for Target Target1'X+Bevice Target [Output|Listing| User1C51[A51[B151 LoeateBt51]5aOSTCSTC8S9C52RCXtal(MH50Use Onchip ROM (Dko-0-XSmal:variatieainDATA一MemoryModet:AUseOn-chipXRAM(OxO-OFF)Code Rom SueLarge:64Kprogram二-Operating system:NoneUse mutiple DPTRregitersOff-chipCodeStatSize:StartSize:EpromRaPamEpromEpromRamCode Banking厂TamemoybipesupoSatEnd:广Banks:2Bark Area:ox0000Dx0000SaveaddretaionSFRin intemupttIOKDefwaltsCancelXel中口图2-31仿真器的选择1OOptions for Target Target1'xX[BLS1 Locate BLS1 Mise Debug UtiliesDeviceTarcet|Output|Listing|UserC51A5MnIOUse SmdatorSetingsCUseettingsKel Montor-51DeverLnt Speedto Real-TimeKeilISD51In-SystemDebuppeMON390:DalasContiguousMode1LoadKoplicationatStartupRuntomainoPLoadmainoLPC900EPMEmudiatot/Programmehtalzation Fie:IntalizatdSTuPSDULINKDeverinineonXC800ULINKDiverEdADIMontor DrverDAS Clent for XC8O0rdneoPestoreDebuSessionSeengsRestoreRTooboxPBreakpoirtasFBSTCMoto-51DevPWachWndows&PeomanceAnalyerWatchWindowsFMemory DapleyPMemoryDisplayCPUDLL:ParameterDnverDLL:Parameter58051.DLL58051.DLLDialog DLL:Dalog DLL:Parameter:Parameter.DPS1.DLL051TP51.DLL051CanedlDefaaltsHelpOK图2-32仿真器的选择223
23 图2-31 仿真器的选择1 图2-32 仿真器的选择2
EOD.FPMDK-ARMuFFuvproix-uVisioraFileEditViewProjedtFlashDebugPeripheratsToolsSvCS-WindowHeinDGALOptions forTarget“FF2Q.X中国国Linker BebogtilitiesDevieoTurget|Output|Listing|User|C/C|AssProjed?CUse Simulatorith rastrietiansSeingsGUseST-Urk Debugger自汽Project-ULINKPFUmtSpeedto Real-TimeBDFUNKVATRAPdeLoad oplcaton atSatupRFRuntomaino.....口CorexMDebhbalzatbon Flehtalza8roDebupperontcs.NUUrkDebuggeRestore Debug Session SettingsPestoreSiLabs UDADebugBrAeera Blaster CotexDebuggerBreakportaPTooba3-C1usTIXDSDebuseeB0WatchWndosSPefommanceAndyzerPWarcnwnoowconplianSytem VewerMemoryDisplaySyatemVewerVMemoryDsplayg-clauseCPUDLL:ParameterDrverDLL:ParameteSARMCM3.DLLREMAPSARMCM3.DLLDhalogDLLDiadogDLLParameterDCM.DLLoCM3TCM.DLL1oCM3n中EBulld OutputOKCamoelDefualtsKelp图2-33仿真器的选择3Cortex-MTargetDriver Setup园FileDebugTraceFlashDownload口ODownload FunctionRAMforAlgorithm?CEraseFull ChipProgramLORDCErase SectorsStart0x20000000Size:[0x0800ProjecxeriCDonotErase8心RRtandRun1ProgrammingAlgarithmDescriptionDeviceSizeDevice TypeAddress RangeSTM32F10x High-density512kOn-chip Flash08000000H-0803FFFFHusa0StartSizeAddRernovPBuilddDE魂定取漏应用(A)16:11Oe安1ER人信创更,图2-34仿真器的选择42.调试环境(1)运行编译完成后,可以有两种运行方式:简单运行、进入调试方式的运行。运行方式1--简单运行:24
24 图2-33 仿真器的选择3 图2-34 仿真器的选择4 2.调试环境 (1)运行 编译完成后,可以有两种运行方式:简单运行、进入调试方式的运行。 运行方式1-简单运行:
编译通过后,表示所编的程序没有语法错误,可以进行持续调试了。简单运行主要点击如图2-35所示的图标。C/Users\Administrator\DesktoplSTM32FOxx_TIM器本延时配置详细过程\TIM.uvprojx-uVisionFileEditViewProjectFlashDebugPeripheraisToolsSVCSWindowHelpDGAOoR空良良丰推限TIM4珍团国修品电动ProjectNameProjectmain.c日ProjectTIM1日2++e白ProjectName-+★++★STM32F0XXm文件名main.c国StartupCodW作者:strongerHuang田咖STM32FOxC库版本5V1.5.0:由国CMSIS6文件版本V1.0.0E日期2016年05月29日8Bsp搞要8主函效TIM基本延时-bsp.c9次,串口TIM延时500秒,LED变化国timer.c10田usart.c11日更新日志:12白App2016-05-29V1.0.0:初始版本13main.c14由stm32f015包含的头文件Te白Doc16include"bsp.h"ReadMe17HincludeWeimer.ha10naarthnInnlnAe图2-355简单运行方式操作要进行简单运行,必须进行图2-34的设置。运行方式2一进入调试方式的运行:编译通过后,表示所编的程序没有语法错误,可以进行持续调试了。.按钮为“开始/停止”调试,点击开始,如图2-36、2-37所示所示。图C/Users/AdministratorDesktopiSTM32FOxx_TIM基本能时配置洋编d理)TIM.uvprojx-pVisior-ile Edit ViewProjedt Fiash DebugPeripheratsTools SvCSWindow Help352a.0020.4国品园导之吧民酒详#国国Projed Name国Ae+专#@start/stop Debug Session (Ctrt-F5)ProjectBEnterorleaveadebugsessionmain日ProjectTIM白Project_NamecR0CeRORODSOeeE5e.0ONOeROSTM32FOXXso++-0R00e·#文件名main.StartupCod进入在线调试k作者.strongerhaangSTM32FO5库版V1.5.0座自CMSIS6手车VO.0年05月29日Bspa0主南本证图m-Dbsp.0次,串口打印国timer.c国usart.c420更新日志App2016-05-29V1.0.0:初始股本国main由stm32f018/包含的头文件自Doc16"bap.h"17"cimer.hwReadM图4-36调试环境前25
25 编译通过后,表示所编的程序没有语法错误,可以进行持续调试了。简单运行主要点 击如图2-35所示的图标。 图2-35 简单运行方式操作 要进行简单运行,必须进行图2-34的设置。 运行方式2—进入调试方式的运行: 编译通过后,表示所编的程序没有语法错误,可以进行持续调试了。 按钮为“开始/停止”调试,点击开始,如图2-36、2-37所示所示。 图4-36 调试环境前