|
4 STM32CubeL4使用入门
4.1 运行第一个例程 本节介绍了使用STM32CubeL4运行第一个例程是多么简单。 该例程说明了生成在STM32L476RG Nucleo板上运行的简单的切换LED例程: 1. 下载STM32CubeL4固件包。解压缩到你选择的目录。确保没有修改如图3所示的包结构。请注意,推荐将固件包复制到靠近根目录的文件夹(例如C\Eval或者G:\Tests),因为当路径太长时,一些IDE会遇到问题。 2. 浏览到 \Projects\STM32L476RG-Nucleo\Examples. 3. 打开 \GPIO,然后打开\GPIO_EXTI文件夹。 4. 使用你首选的工具链打开工程。以下给出了关于如何使用支持的工具链打开、编译和运行例程的快速概览。 5. 重新创建所有的文件,并加载镜像文件到目标的内存。 6. 运行该例程:每次按下USER按钮,LED2切换(闪烁的频率)(详细信息请参考例程的自述文件)。
若要使用支持的工具链打开、创建和运行例程,请按照下列步骤: • EWARM a) 在该例程文件夹下,打开\EWARM子文件夹。 b) 启动例程的eww 工作区。 c) 重建所有的文件: Project->Rebuild all. d) 加载工程的镜像文件: Project->Debug. e) 运行程序Debug->Go(F5)。 • MDK-ARM a) 在该例程的文件夹下,打开\MDK-ARM子文件夹。 b) 启动例程的uvprojx工作区。 c) 重建所有的文件: Project->Rebuild all target files。 d) 加载工程的镜像文件:Debug->Start/Stop Debug Session。 e) 运行程序:Debug->Run (F5). • SW4STM32 a) 打开SW4STM32工具链。 b) 点击File->Switch Workspace->Other 然后浏览到SW4STM32工作区目录。 c) 点击 File->Import,选择General->Existing Projects into Workspace ,然后点击 Next。 d) 浏览到SW4STM32工作区目录并且选中该工程。 e) 重建所有的工程文件:在Project explorer 窗口选择工程,然后点击Project->build project 菜单。 f) 运行程序: Run->Debug (F11) • TrueSTUDO a) 打开TrueSTUDIO 工具链。 b) 点击File->Switch Workspace->Other 然后浏览到TrueSTUDIO 工作区目录。 c) 点击File->Import,选择General->Existing Projects into Workspace 然后点击Next。 d) 浏览到TrueSTUDIO 工作区目录,选中该工程。 e) 重建所有的工程文件:在Project explorer 窗口选择工程,然后点击Project->build project 菜单。 f) 运行程序:Run->Debug (F11)。
4.2 开发自己的应用程序 本节介绍了使用STM32CubeL4创建自己的应用程序所需的步骤: 1. 创建项目 要创建一个新的工程,你可以从\Projects\<STM32xxx_yyy>\Templates 目录下的为每个开发板提供的模板工程开始,也可以从\Projects\<STM32xxy_yyy>\Examples 或者 \Projects \ <STM32xx_yyy> \ Applications目录下开始( <STM32xxx_yyy> 代表开发板的名称,例如STM32L476G-EVAL)。 模板工程提供空的主循环函数,但是这是熟悉STM32CubeL4的工程设置的很好起点。该模板具有以下特点: – 包含HAL、CMSIS和BSP驱动的源代码,这些是在具体开发板上开发代码所需的最小组件。 – 包含所有固件组件的include路径。 – 定义支持的STM32L4器件,从而允许配置相应的CMSIS和HAL驱动。 – 向为使用而读的用户提供如下的预配置文件: 使用基于ARM Core SysTick的默认时钟初始化的HAL。 SysTick ISR为了实现HAL_Delay()。 注意: 当复制现有的项目到其他位置时,请务必更新include路径。 2. 添加必要的中间件到你的工程(可选) 可用的中间件堆栈是:USB主机和设备库、STMTouch触摸感应、StemWin、FreeRTOS以及FatFS。要知道你需要在工程文件列表添加哪些源文件,请参考每个中间件提供的文档。你也可以看看\Projects\STM32xxx_yyy\Applications\<MW_Stack>(<MW_Stack>指的是中间件堆栈,如USB_Device)下的应用程序,了解需要添加哪些源文件以及哪些包含路径。 3. 配置固件的组件 HAL和中间件组件使用在头文件中声明的宏定义,提供了一组编译时间配置选项。在每个组件中提供了一个模板配置文件,它必须拷贝到工程文件夹(通常情况下,配置文件的名字是xxx_conf_template.h,当复制到工程文件夹时需要去掉 _template字)。该配置文件提供了足够的信息来解释每个配置选项的作用。详细信息请参考为每个组件提供的文档。 4. 启动HAL库 在跳转到主程序之后,应用程序代码必须调用HAL_Init() API来初始化HAL库,其做以下任务: a) 配置闪存预读和SysTick中断的优先级(通过stm32l4xx_hal_conf.h 中定义的宏)。 b) 配置SysTick以stm32l4xx_hal_conf.h中定义的SysTick中断优先级产生一个每1毫秒的中断, 该时钟由MSI提供(在该阶段,时钟还没有配置,因此系统从内部4MHz的MSI运行)。 c) NVIC组的优先级设置为4。 d) 调用在stm32l4xx_hal_msp.c用户文件中定义的HAL_MspInit()回调函数,执行全局的低层硬件初始化。 5. 配置系统时钟 通过调用以下描述的两个API来完成系统时钟的配置: a) HAL_RCC_OscConfig():该API配置内部和/或外部的晶振,以及PLL源和系数。用户可以选择配置一个晶振或者所有晶振。如果不需要在高频率下运行系统,可以跳过PLL配置。 b) HAL_RCC_ClockConfig():该API配置系统时钟源、闪存的延迟时间以及AHB和APB预分频器。 6. 初始化外设 a) 首先写外设 HAL_PPP_MspInit函数。步骤如下: – 使能外设时钟。 – 配置外设的GPIO。 – 配置DMA通道以及使能DMA中断(如果需要)。 – 使能外设中断(如果需要)。 b) 如果需要的话,编辑stm32xxx_it.c,调用需要的中断处理函数(外设及DMA)。 c) 如果计划使用外设中断或者DMA,编写处理完成的回调函数。 d) 在main.c 文件中,初始化外设句柄结构体,然后调用HAL_PPP_Init()函数初始化外设。 7. 开发应用程序 在这个阶段,系统已准备就绪,你可以开发应用程序代码。 – HAL提供直观的且准备使用的API来配置外设。它支持轮询、中断和DMA的编程模式,以使用任何应用需求。有关如何使用每个外设的更多详细信息,请参考STM32CubeL4包中提供的丰富的例程集。 – 如果你的应用程序有一些实时的约束,你可以找到大量的例程展示了如何使用FreeRTOS,并且与STM32CubeL4提供的所有中间件栈集成。这可能是开发应用程序的一个很好的起点。
注意: 在默认的HAL实现中,SysTick作为时基使用:以固定的时间间隔产生中断。如果HAL_Delay()是由外设ISR处理函数调用,确保SysTick时钟比外设中断具有更高的优先级(数字上低于)。否则调用ISR的处理将会被阻止。影响时基配置的函数被声明为弱,使得在用户文件的其他实现下可以被覆盖(例如,使用通用的定时器或者其他时钟源)。欲了解更多详情,请参阅HAL_TimeBase例程。
4.3 使用STM32CubeMX生成初始化的C代码 一种替代4.2章节描述的步骤1到6的的方法包含在使用STM32CubeMX工具通过一步一步的过程来生成初始化系统、外设和中间件(上述的步骤1到6)的代码中: 1. 选择与所需的外设资源相匹配的意法半导体的STM32微控制器。 2. 配置每个所需的嵌入的软件,根据引脚冲突求解器、一个时钟树设置助手、一个功耗计算器以及执行MCU外设配置(如GPIO或USART)和中间件栈(如USB)的实用工具。 3. 生成基于选择的配置信息的初始化C代码。该代码在一些开发环境中是现成使用的。用户代码保持在下一次的生成代码。 有关更多信息,请参阅STM32CubeMX用户手册(UM1718)。
4.4 获取STM32CubeL4版本更新 STM32CubeL4固件包带有一个更新程序STM32CubeUpdater,也可以通过STM32CubeMX代码生成工具的菜单。 该更新程序可从www.st.com检测新的固件版本及补丁程序,并且建议将其下载到用户的计算机中。
4.4.1 安装和运行STM32CubeUpdater程序 按照下面的顺序来安装和运行STM32CubeUpdater: 1. 要启动安装,双击SetupSTM32CubeUpdater.exe文件。 2. 接受许可条款,并按照不同的安装步骤进行操作。 3. 一旦成功安装后,作为Program Files 下意法半导体的程序,STM32CubeUpdater变为可用的,并自动启动。STM32CubeUpdater图标将出现在系统托盘。右击更新程序图标,选择Updater Settings来配置跟新程序的连接以及是否进行手动或自动检查。有关更新程序配置的详细信息,请参考STM32CubeMX用户手册UM1718的第3章。 |