[LiteOS移植]目标芯片STM32F1 使用STM32CubeMX生成外设初始化代码
根据上一篇文章中的分析,我们需要先使用STM32CubeMX软件生成一些用到的外设的初始化代码,也就是存放在Inc和Src文件夹中的这些代码。
STM32CubeMX介绍
STM32CubeMX是一个ST公司推出的工具,主要用于通过图形化界面为STM32微控制器生成C语言版本的初始化代码和工程,甚至生成后的工程可以再次通过图形化界面进行修改,极大降低了开发难度,提高了开发效率。
能生成支持IAR,Keil、STM32CubeIDE和Makefile等多种形式的工程。
能自动完成时钟树的配置和验证。
芯片功耗评估。
每款STM32单片机的支持包都可以以补丁的形式安装,非常灵活。
可运行于Windows,Linux和macOS操作系统上。
下载地址:https://www.st.com/zh/development-tools/stm32cubemx.html
打开下载地址选择版本点击“获取软件”即可开始下载,下载之前可能需要注册一个账户。
我使用的版本为6.0.1
STM32F1支持包版本为1.8.0
STM32CubeMX的安装
双击“安装文件”,如下图。
在随后弹出的“用户账户控制”中选择“是”。
选择Next,如下图。
勾选“接受用户条款”并点击“Next”,如下图。
勾选第一个选项并点击Next,如下图。
选择安装路径后点击“Next”,即可完成安装,如下图。
打开上一步骤中安装好的STM32CubeMX,需要安装STM32F1的Package,可能会自动弹出提示你需要安装Package,如果没有弹出你可以手动打开“Help”->“Manage embedded software packages”,如下图。
在弹出的对话框中选择STM32F1(你也可以根据你的目标平台进行选择),勾选STM32Cube MCU Package for STM32F1 Series,并点击“Install Now”,等待安装完成即可,如下图。
根据用到的外设生成Makefile工程
这里我使用到两个串口“Uart1”、“Uart2”和一个GPIO用于控制LED灯。
Uart1:PA9 Tx PA10 Rx
Uart2:PA2 Tx PA3 Rx
LED:PC13
点击“File”->“New Project”,开始创建工程,如下图。
在随后弹出来的对话框左侧输入MCU型号,我这里使用的是STM32F103RC,如下图。
输入完成之后即可在右侧看到你输入MCU型号对应的多种封装,选择你所使用的封装并双击即可,如下图:
配置调式接口
我使用的调试器为ST-Link,所以我在“Pinout&Configuration”选项卡中选择“System Core”标签下的“SYS”,在“Debug”中选择“Serial Wire”,如下图所示。
配置时钟树
我使用了外部晶振并且我想将系统主频配置为72MHz,所以在“Pinout&Configuration”选项卡中选择“System Core”标签下的“RCC”,在“High Speed Clock”中选择“Crystal/Ceramic Resonator”,如下图所示。
打开“Clock Configuration”选项卡,在中心的HCK Clock中输入72并按下回车,系统会询问我们是否自动进行配置,我们选择“是”即可,如下图。
配置串口及GPIO口
在“Pinout&Configuration”选项卡中选择“Connectivity”标签下的“USART1”,在“Mode”中选择“Asynchronous”,如下图所示。
USART2也也上述配置相同,如下图所示。
因为PC13作为控制LED的管脚,所以需要配置为输出模式,直接在右下角的搜索框中输入“PC13”即可快速定位PC13管脚的位置,点击该管脚选择“GPIO_Output”即可。
其余配置
因为LiteOS_Lab中已经将系统时钟的中断处理函数写好了,所以需要在“Pinout&Configuration”选项卡中选择“System Core”标签下的“NVIC”,在“Code Generation”中取消生成“Time base”的中断处理函数,否则会产生冲突,如下图所示。
在“Project Manager”选项卡中选择“Project”标签,为工程命名并选择生成工程的目录,将工程类型选择为“Makefile”,如下图所示。
在“Project Manager”选项卡中选择“Code Generation”标签,勾选“Generate peripheral initialization as a pair of *.c/*.h files per peripheral”,勾选了该选项后将每个外设的初始化代码生成到一个独立的文件中,例如gpio相关初始化生成到gpio.c和gpio.h文件中,使代码尽可能去耦合。便于移植,如下图所示。
这时点击右上角“GENERATE CODE”即可完成初始化代码及工程的生成。
最终的工程文件夹中的文件如下图所示:
后面提取时,主要用到Core文件夹中的代码。
提取用到的初始化代码放入工程中
安装好了VScode、Iot Link Studio和SDK后,你可以在你的C:\Users\用户名\.iotlink\sdk\IoT_LINK\targets目录中看到很多示例工程,其中“STM32L431_BearPi”工程就是“分析与思考”篇中讲解的工程,将其复制一份并重命名为“STM32F103RC”,如下图:
打开“STM32F103RC”文件夹,Inc文件夹和Src文件夹分别对应刚才生成的工程中的Core目录中的Inc文件夹和Src文件夹,如下图:
替换Src目录下的文件
将之前使用STM32CubeMX创建的工程中的Core/Src下除了main.c的所有文件复制到Src文件夹中,出现下图所示“替换或跳过文件”选择“替换目标中的文件”:
替换后的目录内容如下图所示:
替换Inc目录下的文件
将之前使用STM32CubeMX创建的工程中的Core/Inc下除了main.h的所有文件复制到Src文件夹中,出现下图所示“替换或跳过文件”选择“替换目标中的文件”:
替换后的目录内容如下图所示:
本章移植到此结束,工程中有部分和STM32L4相关的文件,我们在后续章节中再进行修改和移除。
- 点赞
- 收藏
- 关注作者
评论(0)