[LiteOS移植]目标芯片STM32F1 使用STM32CubeMX生成外设初始化代码

举报
樊心昊 发表于 2020/08/28 01:47:01 2020/08/28
【摘要】 根据上一篇文章中的分析,我们需要先使用STM32CubeMX软件生成一些用到的外设的初始化代码,也就是存放在Inc和Src文件夹中的这些代码。STM32CubeMX介绍STM32CubeMX是一个ST公司推出的工具,主要用于通过图形化界面为STM32微控制器生成C语言版本的初始化代码和工程,甚至生成后的工程可以再次通过图形化界面进行修改,极大降低了开发难度,提高了开发效率。能生成支持IAR,...

根据上一篇文章中的分析,我们需要先使用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的安装

双击“安装文件”,如下图。

image.png

在随后弹出的“用户账户控制”中选择“是”。

image.png

选择Next,如下图。

image.png

勾选“接受用户条款”并点击“Next”,如下图。

image.png

勾选第一个选项并点击Next,如下图。

image.png

选择安装路径后点击“Next”,即可完成安装,如下图。

image.png

打开上一步骤中安装好的STM32CubeMX,需要安装STM32F1的Package,可能会自动弹出提示你需要安装Package,如果没有弹出你可以手动打开“Help”->“Manage embedded software packages”,如下图。

image.png

在弹出的对话框中选择STM32F1(你也可以根据你的目标平台进行选择),勾选STM32Cube MCU Package for STM32F1 Series,并点击“Install Now”,等待安装完成即可,如下图。

image.png

根据用到的外设生成Makefile工程

这里我使用到两个串口“Uart1”、“Uart2”和一个GPIO用于控制LED灯。

Uart1:PA9 Tx  PA10 Rx

Uart2:PA2 Tx  PA3 Rx

LED:PC13

点击“File”->“New Project”,开始创建工程,如下图。

image.png

在随后弹出来的对话框左侧输入MCU型号,我这里使用的是STM32F103RC,如下图。

image.png

输入完成之后即可在右侧看到你输入MCU型号对应的多种封装,选择你所使用的封装并双击即可,如下图:

image.png

配置调式接口

我使用的调试器为ST-Link,所以我在“Pinout&Configuration”选项卡中选择“System Core”标签下的“SYS”,在“Debug”中选择“Serial Wire”,如下图所示。

image.png

配置时钟树

我使用了外部晶振并且我想将系统主频配置为72MHz,所以在“Pinout&Configuration”选项卡中选择“System Core”标签下的“RCC”,在“High Speed Clock”中选择“Crystal/Ceramic Resonator”,如下图所示。

image.png

打开“Clock Configuration”选项卡,在中心的HCK Clock中输入72并按下回车,系统会询问我们是否自动进行配置,我们选择“是”即可,如下图。

image.png

配置串口及GPIO口

在“Pinout&Configuration”选项卡中选择“Connectivity”标签下的“USART1”,在“Mode”中选择“Asynchronous”,如下图所示。

image.png

USART2也也上述配置相同,如下图所示。

image.png

因为PC13作为控制LED的管脚,所以需要配置为输出模式,直接在右下角的搜索框中输入“PC13”即可快速定位PC13管脚的位置,点击该管脚选择“GPIO_Output”即可。

 

image.png

其余配置

因为LiteOS_Lab中已经将系统时钟的中断处理函数写好了,所以需要在“Pinout&Configuration”选项卡中选择“System Core”标签下的“NVIC”,在“Code Generation”中取消生成“Time base”的中断处理函数,否则会产生冲突,如下图所示。

image.png

在“Project Manager”选项卡中选择“Project”标签,为工程命名并选择生成工程的目录,将工程类型选择为“Makefile”,如下图所示。

image.png

在“Project Manager”选项卡中选择“Code Generation”标签,勾选“Generate peripheral initialization as a pair of *.c/*.h files per peripheral”,勾选了该选项后将每个外设的初始化代码生成到一个独立的文件中,例如gpio相关初始化生成到gpio.c和gpio.h文件中,使代码尽可能去耦合。便于移植,如下图所示。

image.png

这时点击右上角“GENERATE CODE”即可完成初始化代码及工程的生成。

最终的工程文件夹中的文件如下图所示:

image.png

后面提取时,主要用到Core文件夹中的代码。

提取用到的初始化代码放入工程中

安装好了VScode、Iot Link Studio和SDK后,你可以在你的C:\Users\用户名\.iotlink\sdk\IoT_LINK\targets目录中看到很多示例工程,其中“STM32L431_BearPi”工程就是“分析与思考”篇中讲解的工程,将其复制一份并重命名为“STM32F103RC”,如下图:

image.png

打开“STM32F103RC”文件夹,Inc文件夹和Src文件夹分别对应刚才生成的工程中的Core目录中的Inc文件夹和Src文件夹,如下图:

image.png

替换Src目录下的文件

将之前使用STM32CubeMX创建的工程中的Core/Src下除了main.c的所有文件复制到Src文件夹中,出现下图所示“替换或跳过文件”选择“替换目标中的文件”:

image.png

替换后的目录内容如下图所示:

image.png

替换Inc目录下的文件

将之前使用STM32CubeMX创建的工程中的Core/Inc下除了main.h的所有文件复制到Src文件夹中,出现下图所示“替换或跳过文件”选择“替换目标中的文件”:

image.png

替换后的目录内容如下图所示:

image.png

本章移植到此结束,工程中有部分和STM32L4相关的文件,我们在后续章节中再进行修改和移除。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200