STM32CubeIDE使用笔记(02):STM32CubeMX配置与代码生成

2023-10-27

目的

STM32CubeIDE中整合了STM32CubeMX用来配置芯片资源生成初始化代码,本篇将介绍STM32CubeMX使用方法。

用户界面

界面主要由四部分组成引脚输出和配置、时钟配置、项目管理、工具。其中前两部分关联比较紧密,必须结合在一起调整。下面是具体的说明(主要以图片为主,可以点击查看大图):

引脚输出和配置

这个分页主要用于配置引脚、外设和中间件:
在这里插入图片描述
在这里插入图片描述
这个分页中外设和中间件等的详细设置主要是与各自具体的属性功能有关,需要依据具体情况去了解设置。

时钟配置

这个分页主要用于配置系统各部分时钟:
在这里插入图片描述

项目管理

这个分页主要用于设置代码生成输出方面的选项参数:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

工具

这个分页目前就一个工具,用来模拟计算功耗:
在这里插入图片描述
这个工具怎么说呢,个人觉得做个参考就好,别在这里花太多时间。

代码生成

STM32CubeMX生成的代码根据设置不同结构也会不同,这里主要讲一下默认情况下生成代码的结构:

  • 用到的 Drivers/CMSIS、Drivers/STM32Fxxx_HAL_Driver 中间件 等会从固件包中直接复制到项目中;
  • 根据用户配置会生成相对应的初始化C代码(.c/.h文件),并将其存储在Inc和
    Src文件夹中,默认情况下,包含以下文件:
    • stm32fxxx_hal_conf.h文件:此文件定义了使能的HAL模块,并将一些参数(如
      外部高速振荡器频率)设为预定义的默认值,或根据用户配置(时钟树)进行设
      置;
    • stm32fxxx_hal_msp.c(MSP = MCU支持包):此文件定义了所有初始化函数,以便
      根据用户配置(引脚分配、使能时钟、使用DMA和中断)配置外设实例;
    • main.c负责:
      通过调用重置所有外设、初始化闪存接口和SysTick的HAL_init()函数将MCU重
      置为已知状态。
      配置和初始化系统时钟。
      配置和初始化外设未使用的GPIO。
      为每个已配置的外设定义和调用外设初始化函数,该函数定义了将传递给相应外设
      HAL init函数(转而调用外设HAL MSP初始化函数)的句柄结构。请注意,当使用
      LwIP(各自的USB)中间件时,底层以太网(各自的USB外设)的初始化C代码
      将从main.c移至LwIP(各自的USB)初始化C代码本身。
    • main.h文件:
      此文件包含与通过 引脚布局选项卡所设置的引脚标签相对应的定义语句,以及通过
      配置选项卡所添加的用户项目常量,比如将某个GPIO口用户标签定义为LED,那么在main.h文件中就会出现 #define LED_Pin GPIO_PIN_xx #define LED_GPIO_Port GPIOx 的定义;(一般来说这个文件已经链接了所有库资源,用户自己的文件只要包含这个文件就可以调用其他东西了)

STM32CubeMX生成的文件中,用户需要添加代码的话需要添加在特定区间中,不然会在STM32CubeMX重新生成代码后丢失,见下面:

/* USER CODE BEGIN xxx */
写在这之间的代码在STM32CubeMX重新生成代码时不会丢失
/* USER CODE END xxx */

用户额外添加的文件只要不和STM32CubeMX生成的文件文件名重复,也不会在STM32CubeMX生成代码时丢失。

更换芯片

更换芯片稍微麻烦点,需要去ST官网下载独立版本的STM32CubeMX并进行安装,然后具体的更换步骤如下(更换操作前注意备份原始项目):

  1. 使用STM32CubeMX新建项目,选择新的目标芯片;
  2. 项目建立后不要进行任何操作,直接 File > Import Project ... ,选择原始项目的ioc文件导入;
  3. 导入后核对Import Project页面中新旧芯片资源的兼容性信息,并选择合适参数,然后点OK确认;
  4. 检查当前的STM32CubeMX项目,没问题的话就保存为原始项目同名的ioc文件,然后替换到原始STM32CubeIDE项目中(也可以保存时直接覆盖);
  5. 重新打开STM32CubeIDE项目中ioc文件,应该可以看到芯片已经被替换,检查相关资源配置参数和设置,然后点击重新生成代码;
  6. 编译项目,如果编译报错则根据错误提示手动进行调整直至编译通过;

在这里插入图片描述
在这里插入图片描述

总结

对于STM32CubeMX的使用这里只是粗略介绍了下,更多使用说明可以参考ST官网的用户手册UM1718(官方文档这个写的非常非常详细,还有大量例子举例),另外在ST中文网还有中文的用户手册《STM32CubeMX用于STM32配置和初始化C代码生成》,下载地址如下(文档不是从最新版本翻译的,仅供参考):
https://www.stmcu.com.cn/Designresource/design_resource_detail/file/454999/lang/ZH/token/59f8ce3903a16c6cc354ece119011f63

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32CubeIDE使用笔记(02):STM32CubeMX配置与代码生成 的相关文章

随机推荐

  • 小程序,Taro,生成图片并保存本地相册

    注意 不能在子组件里使用 import Taro Component Config from tarojs taro import index scss import View from tarojs components class Au
  • 什么是编译器宏?

    在阅读vue的官方文档时 提到了defineProps defineEmits defineExpose withDefaults都是编译器宏 那什么是宏定义 什么又是编译器宏呢 1 什么是宏定义 宏定义是一种将一段代码或值 进行简单替换的
  • 【C语言项目】多臂井径电子测井成像项目(一)

    目录 1 目的和意义 2 本章概述 3 串口R232 4 OpenGL 5 开发环境 6 环境配置 6 1 VS安装OpenGL 6 2 虚拟串口生成工具 7 成品速览 参考文献 1 目的和意义 本项目为获取矿藏地层的油气当量和及时精确地测
  • 【整理贴】截至2023.01.02 博主都写了哪些内容?

    博主虽然参加csdn已经四个年头了 开始创作其实是从21年9月确定了直博才开始的 由于是跨专业 很多基本知识都不牢固 总是忘记 这个锅还是不要给脑雾了 如果每次想用的时候能非常方便的复习就好了 而且通过整理也会知道哪里我原本是会的 还有哪里
  • 多通道图片的卷积

    一 多通道 channels 图片的卷积 网上很多资料都是单通道的卷积 很容易理解 但多通道的卷积更普遍 理解较复杂 需要单独提一下 彩色图像 一般都是RGB三个通道 channel 的 因此输入数据的维度一般有三个 长 宽 通道 比如一个
  • echars图表一进来默认显示tooltip

    写在前面 项目中碰到一个小优化项 echarts图表渲染一进来默认显示指定标记点信息窗即tooltip 效果类似 动手实现 核心是利用chart实例的dispatchAction方法 部分代码示例 注 vue环境
  • Java 进阶二知识--重拾者AIMING

    初级选手 Java 基础知识 重拾者AIMING Aimin20210819 公号 进阶一选手 Java 进阶一知识 重拾者AIMING Aimin20210819 公号 目录 1 参数数组和参数列表 重复使用参数 2 Java深浅拷贝
  • R语言常用数据管理

    1 变量的重命名 1 交互式编辑器修改变量名 若要修改数据集x中的变量名 键入fix x 即可打开交互式编辑器的界面 若数据集为矩阵或数据框 单击交互式编辑器界面中对应要修改的变量名 可手动输入新的变量名 若数据集为列表 则交互式编辑界面为
  • JSP原理

    1 什么是JSP Java Server Page Java服务器端页面 也和Servlet一样 用于动态Web技术 最大的特点 写JSP就像再写HTML 页面生成了java JSP本质上就是servlet 3 输出页面前增加的代码 1 r
  • ERROR: Cannot uninstall ‘wrapt‘. It is a distutils installed project and thus we cannot accurately..

    1 问题描述 pip install tensorflow 报错 ERROR Cannot uninstall wrapt It is a distutils installed project and thus we cannot acc
  • 什么是管理能力,管理者的品格有哪些

    走上管理岗位要明白 到底什么是管理能力 1 解决问题的能力 管理者必须面对许多难以解决的 甚至十分不明确的问题 但是只要采用合 适的方法 几乎所有的问题都能成功解决 2 沟通协调的能力 管理者在日常工作中妥善处理好上级 同级 下级等各种关系
  • IDEA产生及相应的应用

    思考 在用记事本编写程序代码的过程中 需要配合使用各种命令在控制台调控编译 给我们的实际操作带来了不小的工作量 如果初学者不能够调整好心态一步步操作 很容易放弃 如何能够让初学者和开发者用起来更方便快捷呢 深度的思考就会有创新 由此一个新的
  • 区块链开发指南_区块链软件开发详解

    开发业务层区块链应用 Hyperledger fabric目前支持java nodejs go和python语言的sdk 供用户选择用不同的语言开发上层应用 使用相应的sdk调用部署在区块链上的链码 以下示例中我们选择使用go语言开发业务层
  • 《Python》计算机视觉编程

    基本的图像操作处理 PIL 目前pycharm使用的是pillow库 from PIL import Image pil im Image open empire jpg 上述代码的返回值pil im是一个PIL图像对象 图像的颜色转换可以
  • Cisco模拟器-ospf配置实验(验证与负载均衡)

    要求 如图运行OSPF区域 区域1要求用OSPF明文验证 区域0要求用可靠的验证方式 要求R4去往R1的环回从R2走 R1上看到去往R4的两条等价负载均衡 基础配置 R1 R1 config int f0 0 R1 config if ip
  • django2.x/3.x 前端页面在debug模式中找不到动态文件static

    修改setting配置 STATIC URL static STATICFILES DIRS os path join BASE DIR static html页面中 load static bootstrap bootstrap min
  • objdump说明

    objdump有点象那个快速查看之流的工具 就是以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息 使用objdump显示vxWorks的文件头信息以及入口地址例子 D ftproot gt C Tornado2 2Arm hos
  • css文本超出容器宽度自动换行及超过行数加省略号...

    css文本超过div的宽度时 让它进行自动换行 并且超过div高度时候 在最后一行加省略号 废话不多说 上代码 display webkit box overflow hidden text overflow ellipsis word w
  • 基站分布图,通过基站定位数据来看google基站数据分布

    原文地址 http hi baidu com ant mobile blog item 6d619b11042fd2f7c2ce7950 html 无论是应用更广泛的gps定位 还是基站定位 Wi Fi定位 都需要依托于强大精确的地图 而g
  • STM32CubeIDE使用笔记(02):STM32CubeMX配置与代码生成

    文章目录 目的 用户界面 引脚输出和配置 时钟配置 项目管理 工具 代码生成 更换芯片 总结 目的 STM32CubeIDE中整合了STM32CubeMX用来配置芯片资源生成初始化代码 本篇将介绍STM32CubeMX使用方法 用户界面 界