概述
STM32的开发环境并不唯一。
如果你习惯KEIL开发环境,可以用KEIL环境来开发,虽然代码编辑不太方便,但调试跟踪非常方便。
如果你更熟悉gcc/makefile,则可以自己写makefile来搭建自己的脚本编译环境。
代码编辑器个人还是推荐SourceInsight或者VSCode效率更高。
STM32Cube套装
我们要使用的不是上面两个,而是用ST官方维护和推荐的开发工具包:STM32Cube
这套工具包含了:
- STM32CubeMX 这个工具用来根据项目配置产生初始BSP
- STM32CubeIDE 这个工具可以依据STM32CubeMX产生的配置文件生成IDE项目
- STM32CubeProgrammer 这个工具可以用来通过串口/SPI/USB等下载程序到MCU中
- 其他 第三方软件包等
统一协调,最重要的是:免费
使用STM32CubeMX创建配置实例
下面我们依据目前的主板硬件设计,用STM32CubeMX来产生一个初始的BSP。
创建项目
安装STM32CubeMX后即可运行它。
选择New Project中的Start My project from MCU即可开始:
如果你是用的ST官方提供的开发板则可以选择Start My project from ST Board.
然后这个程序可能会联网下载一些内容:
等待完成即可,如果以前下载过了,可以直接Cancel跳过。
选择MCU或主板型号
选择对应的MCU,此处根据我们的主板,选择STM32F103C8:
然后依据主板的设置,我们将Perpheral中的SPI数量设置为1,Timer数量设置为2,USART数量设置为1,然后点击右侧的Start Project按钮:
配置引脚及系统选项
然后会进入到引脚配置界面了:
我们的主板有外部的8MHz晶振及32K的晶振,所以在System Core类里面的RCC中需要配置时钟为HSE和LSE为外部晶振:
我们有JLINK调试器,所以需要在 SYS里面将DEBUG支持开起来,默认是不开的使用调试器会报错,当然,如果不用调试器,可以不开:
SPI2我们准备接SPI接口的LCD屏,所以配置成单发送的模式:
USART1我们需要用来输出日志,配置成不带流控的普通异步串口即可:
配置时钟
在系统配置及引脚配置完成后,需要配置系统时钟。
在Clock Configuration页面即可完成。
蓝色的部分是可以修改的配置项,不同的MCU型号可能有些差别,在一些关键参数上,有最大值的提示,如上图中HCLK最大值就是72MHz,PCLK1最大是36MHz.
如果不是有特别省电之类的特殊要求,最好能将各个时钟配置到其最高频率以充分发挥MCU的性能。
经过配置后我们的时钟配置如下:
可以看到,System Clock的时钟源我们选择了PLLCLK,PLLCLK是通过外部8MHz晶振9倍频后得到的72MHz,所以SYSCLK是72MHz,PCLK1是36MHz,PCLK2是72MHz。
由于在系统配置里没有打开USB和RTC,所以RTC及USB相关的时钟配置是呈现灰色的。
项目配置
完成时钟配置后,进入Project Manager页面进行项目配置。
在Project中设置好项目名以及项目的保存路径。
在Code Generator中,ToolChain/IDE选项选择STM32CubeIDE,如果你使用自己的编译环境请选择其他。
产生项目基础BSP代码
项目配置完成后,点击右上角的GENERATE CODE按钮即可自动产生出按你要求配置好的初始代码:
产生代码时可能需要在线下载最新的BSP文件,等待完成即可:
产生完成后会弹出提示:
点击Open Folder就能打开项目目录了:
这个项目实际上是由STM32CubeMX产生出来的STM32CubeIDE项目,以及可以直接由STM32CubeIDE打开了。
其中:ioc文件是STM32CubeMX使用的项目文件,cproject和.project则是STM32CubeIDE的项目文件。