STM32CubeMX作为ST官方主推的开发工具,使用图形化的界面对单片机进行内部硬件配置,哪里不会配置就点哪里,更惊人的是支持STM32全系列。。。等等我要静静思考下人生,照这样下去STM32的开发门槛越来越低,没有两把刷子还真不容易在圈子里闯荡
写这个系列是因为以前一直在用STM32的标准库来开发F1系列,可标准库好早就不更新了。而现在使用的型号变成了F0,可有的F0还不支持以前旧的标准库,所以只能选择HAL库。下过了HAL库进行coding时又遇到了麻烦->没有HAL库的中文API文档。。呜呜呜,后来了解到ST有官方开发工具STM32CubeMX这一说,配合HAL库使用,图形化的配置界面,自动生成代码,支持多种编译器。被吸引到有没有?感觉好强大有没有?简直比瑞萨的开发工具还要方便。虽然问题的本质没有解决,但起码能缓解下个人的开发压力,剩下的就看个人造化了,埋头啃英文文档。
另外本系列不会提及内部外设的工作原理,想了解工作方式的请看数据手册。本系列主要介绍如何用STM32CubeMX进行快速开发及快速硬件配置,以及在开发中会用到HAL库哪些高频函数及用法注意事项。希望对标准库及基本内部硬件有一定了解的观看
进入正题,先上ST官网搜索并下载STM32CubeMX,顺便也把应用手册给下下来,英文不好的就赶紧用chrome浏览器吧,谷歌翻译很给力。安装后会提示需要java环境,按照弹出的网页下载java环境。一切弄好后,打开应用。看着如此简洁(kong kuang)的界面,内心简直黑人疑问脸。。
因为我们还没有安装库文件,所以打开Help,红框里的“Install Patch”是从本地下载好的固件进行安装,用不到故pass。“Check for Updates”是软件版本的检查更新,我当时的最新版本是MX.4.18.0。以前上论坛看见别人发帖说CubeMX有时会把用户代码全部误删掉,可一看发帖日期是一年前的了,反正在我的使用过程中没有发生任何不快,看来ST的官方更新的改进还是蛮好的,大家在使用前最好更新到最新版本。“Install New Libraries”是从服务器下载开发固件并安装。点进去会看见各系列的固件包,F0、F1、F2、F3、F4、F7、L0、L1、L4一应俱全,当然是选择自己要用的系列的最新固件进行安装,我要用的是F0,当时最新的是1.6.0
上面的都弄好后,就可以新建一个工程了,点击界面上那个大大的“New Project”,或者“File - New Project”。还有要记得“Load Project”也是在File里,省的以后问如何打开CubeMX的工程配置界面,后缀是.ioc。。先在上面进行大概的检索,再到下面勾选具体的MCU型号,“Bosrd Selector”里面还可以对ST官方的开发板进行选型,像Discovery、Nucleo、EvalBoard都是有的。而左侧的“Peripheral Selection”显示的是当前型号的硬件外设。
到这里,可以看见正式的配置界面,图像化的方式感觉很接地气啊。由于没有进行任何配置,显得界面很空,不过我会马上让他充实起来的o(∩_∩)o
由于这一篇主要是说CubeMX的使用,就暂时弄个LED和RCC时钟配置。
点击RCC,将高速时钟切换成外部晶振方式Crystal,切换后可以看见软件自动将PF0.1这两个引脚配置成了RCC_OSC外部晶振引脚
再在右侧点击PC13引脚,配置成GPIO_Output,作为LED的驱动引脚
是不是感觉缺少了什么?当然是DeBug啦,硬件调试我用的ST-Link。10多块钱一个很便宜也很好用,最重要的是还可以调试STM8,体积只有一个C8T6的大小。大一学STM8时用STVD+ST-Link,到了STM32,还是用ST-Link,是不是有一种岁月的传承感。。。废话少说,配置SWC、SWD引脚。而且ST-Link可以和ST官方的STM Studio配合使用,随时查看内部变量或寄存器,可以列表作图方便分析,可我在安装STM Studio时失败了,说要更新java mx......逗人玩呢这是...不买这帐了
Pinout界面配置完了,点击Clock Configuration,看见错综有序的时钟树。选择外部时钟HSE,PLL倍频选择6,再将倍频后的时钟48MHz作为系统时钟。由于F0的额定最高频率为48MHz,8MHz的外部晶振,PLL就是6了。而且一旦某条时钟线超出额定值,相应的时钟线就会变为红色提醒。想超频的可以直接修改PLL
进入下一个界面Configuration,点击GPIO,进行引脚的具体配置。要说的都在图里
可能有细心的朋友会注意到这个界面的左侧,跟说明一样通俗易懂,以后用到再说。不过看着是可以简化FATFS、FreeRTOS操作系统、硬件CRC、看门狗的配置
最后一个Power管理界面,同样可以不用管,以后用到低功耗再说。
上面全部配置完毕后,就可以生成代码了。不过在之前要对工程位置、开发环境、个性化进行一些设置。“Project - Settings”
切记:工程目录不要有中文 图里勾选的生成格式是Keil5的,生成工程后可以被Keil5打开
尽量把“将各硬件初始化按照功能分成多个.c.h”文件勾选上,勾不勾自己体会
第3步不用管,pass掉。
这时候就可以点击小齿轮图标了,生成代码
打开工程,while里添加代码
记得这里的格式,只有在/* USER CODE BEGIN */ 和/* USER CODE END */之间才是可以添加代码段的,其余地方都会在STM32CubeMX重编译时进行替换与更改
在while(1)里的Begin3和End3之间添加
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,(GPIO_PinState)!HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13));
就可以看到与PC13相连的LED以1Hz的频率闪烁,Enjoy