文章目录

  • 1. 综述
    • 1.1 STM32Cube 生态组成
    • 1.2 安装与配置
      • 1.2.1 【异常】安装STM32CubeMX 平台时遇到缺乏Java 环境问题
    • 1.3 深色模式
  • 2. 应用
    • 2.1 新建工程
    • 2.2 System Core 配置(系统内核配置)
      • 2.2.1 SYS配置
      • 2.2.2 RCC配置
      • 2.2.3 GPIO配置
    • 2.* Clock Configuration 时钟配置
    • 2.* Project Manger 项目管理配置
    • 2.* 代码编辑
      • 2.*.1 代码块
      • 2.*.2 查看API 函数
      • 2.*.3 `printf()`函数组建

本文中使用的 STM32CubeMX 版本为6.5.0

1. 综述


STM32Cube不是一款软件,而是一个生态系统,是ST推出的面向STM32微控制器和微处理器的完整软件解决方案。它既适合寻求完整的免费STM32开发环境的用户,也适合已经拥有IDE(包括Keil或iAR)的用户,用户可以在其中轻松集成各种组件,如STM32CubeMX、STM32CubeProgrammer或STM32CubeMonitor .


STM32的三种开发模式:

  1. 基于寄存器开发:就是和51单片机一样,直接对寄存器进行编程。基于寄存器编写的代码简练、执行效率高。但由于 STM32 微控制器的片上外设和寄存器数量太多,这种编程方式移植性差,寄存器名称记起来也很痛苦。
  2. 基于st官方的固件库进行开发:现在大部分stm32教程教的都是这种库函数开发,如正点原子,野火等。他相比寄存器开发更加简单,不需要记住每个寄存器的地址和名称,只要会调用ST官方封装好的库函数进行编程就可以。
  3. 基于STM32cubemx进行开发:STM32cubemx使用的是st官方新推出的HAL库,然后我们可以通过软件内设计好的图形化界面进行配置,软件自动生成生成配置代码。

1.1 STM32Cube 生态组成

  • STM32CubeMX:图形化的STM32设备配置工具,为Cortex-M芯片生成初始化代码,为Cortex-A芯片生成Linux Device Tree

  • STM32CubeIDE:集成开发环境,基于开源的Eclipse工具和GNU C/C++ toolchain . 并能更好的和其他Cube工具配合,比如方便集成STM32CubeMX自动生成的初始化代码。不过大家可能用的比较多还是IAR和Keil

  • STM32CubeProgrammer:烧写工具。它提供了一个简单有效的环境,来读、写和验证片内存储和片外存储,支持广泛的通讯方式:JTAG, SWD, UART, USB DFU, I2C, SPI, CAN等

  • STM32CubeMonitor系列工具:强大的监视工具,用来帮助开发者功耗的优化有实时性要求的应用的行为和性能

  • STM32Cube MCU Package: 各个STM32系列芯片专用的支持包,这些包提供了STM32片上外设的操作实现和接口。包括HAL层的驱动,中间件软件框架和大量的示例,很多真实案例的项目可供参考。

  • STM32Cube Expansion:扩展包, 在一些应用方案中使用。从ST自有或经过许可的第三方合作伙伴,提供可扩展包,增强STM32 Cube工具软件的功能。


STM32 生态中各软件在不同开发阶段的应用

STM32Cube MCU软件包:STM32Cube MCU软件包是一套驱动目标MCU或MPU外设的嵌入式软件。每个软件包内嵌标准驱动程序,采用优化的(LL API)和可移植的(HAL API)版本。还可以根据MCU或MPU外设使用其他中间件。在下表中,点击对应MCU即可下载使用。

1.2 安装与配置

  1. 到ST官网 ,找到 工具与软件 - 生态系统 - STM32Cube Ecosystem


2. 登录账号,找到软件开发工具,选择要下载的软件

3. 下载对应软件并安装

1.2.1 【异常】安装STM32CubeMX 平台时遇到缺乏Java 环境问题

安装STM32CubeMX安装包时,弹出下图报错窗口。

原因是电脑没有JAVA环境,到JAVA SE网站点击下载JDK文件,选择对应工作环境下载安装包(如Windows x64),安装安装包,然后再安装STM32CubeMX安装包。

参考:https://www.runoob.com/java/java-environment-setup.html#win-install

1.3 深色模式

下面方法未成功,异常现象是 需要Eclipse证书

如下图,进入插件库

搜索darkest,如下图安装后重启STM32Cube

2. 应用


2.1 新建工程

!建议在 STM32CubeMX 中新建工程与生成代码!,因为未知原因,在STM32CubeIDK中不能生成Keil工程代码,但在STM32CubeMX 中可以。

  1. 点击新建项目

  2. 选择芯片

  3. 输入项目名,项目存储路径(不能有中文),点Finish

  4. 项目建立后,进入到如下图界面

2.2 System Core 配置(系统内核配置)

2.2.1 SYS配置

2.2.2 RCC配置

2.2.3 GPIO配置

选中GPIO,点击要配置的Pin脚进行功能配置,然后在Configuration 中对所选引脚进行进一步的配置

2.* Clock Configuration 时钟配置

关于时钟树相关知识可查看文章 STM32理论 —— ADC、存储、定时器、时钟、中断 中的时钟一节

时钟树配置界面图


2.* Project Manger 项目管理配置

选择IDE 使用Keil ,选择Keil 的最低版本,注意项目路径不要有中文

在Code Generator中勾选生成 ‘.c’、'.h’文件

点击生成代码

2.* 代码编辑

2.*.1 代码块

在生成的代码中,存在已定义的代码块范围,只有在该范围内编写的代码,在STM32CubeMX中重新修改配置后重新生成的代码中被保存下来。

2.*.2 查看API 函数

在Function中,可以找到并直接调用库中的函数。如读某IO的电平状态,可调用stm32f1xx_hal_gpio.c文件中的HAL_GPIO_ReadPin(xxx)函数,双击该函数,即可跳到函数本体,直接将函数复制到要被调用的地方即可。

2.*.3 printf()函数组建

如下图,芯片STM32F103C8系列连接性资源如下。

如配置一个串口,选择USART1,选择串口通讯模式,配置串口通讯的参数。


配置完成后,对应的两个引脚就被配置成USART1_TX和USART1_RX,注意在外部PCB Layout中,MCU的TX连接IC的RX,另一个脚亦然。


  • 组建printf函数:
  1. usart.c文件中的/* USER CODE BEGIN 1 */ /* USER CODE END 1 */代码块中加入以下代码:
// 1.
/* USER CODE BEGIN 1 */
//在usart.c文件中添加以下代码
#include "stdio.h"//这个变量是其他.c文件定义的
extern UART_HandleTypeDef huart1;
uint8_t ch;
uint8_t ch_r;
//重写这个函数,重定向printf函数到串口,意思就是说printf直接输出到串口,其默认输出到控制台的
/*fputc*/
int fputc(int c, FILE * f)
{ch=c;HAL_UART_Transmit(&huart1,&ch,1,1000);//发送串口return c;
}//重定向scanf函数到串口 意思就是说接受串口发过来的数据,其默认是接受控制台的数据
/*fgetc*/
int fgetc(FILE * F)
{HAL_UART_Receive (&huart1,&ch_r,1,0xffff);//接收return ch_r;
}
/* USER CODE END 1 */
  1. main.c文件中的/* USER CODE BEGIN Includes */ /* USER CODE END Includes */代码块中引入以下头文件:
// 2.
/* USER CODE BEGIN Includes */
//在main.c文件中引入**stdio.h**头文件
#include "stdio.h"
/* USER CODE END Includes */
  1. 然后在任意用户代码块中使用printf()函数即可:
// 3. /* USER CODE BEGIN 2 *///在任意用户代码块中调用printf函数printf("hello world!\r\n");/* USER CODE END 2 */

STM32Cube 应用指南相关推荐

  1. STM32Cube扩展包开发指南

    本文翻译于ST官网文档,<Development guidelines for STM32Cube Expansion Packages> 文章目录 介绍 1. 总体信息 2. 参考和首字 ...

  2. STM32入门指南(1)—新建第一个工程

    STM32入门指南(1)-新建第一个工程 文章目录 STM32入门指南(1)-新建第一个工程 STM32CubeMX配置 选择芯片 配置 IO 和其他功能 配置时钟 配置工程属性 生成代码 MDK编辑 ...

  3. 【STM32Cube】学习笔记(六):DHT11温湿度传感器

    文章目录 摘要 一.简介 1.DHT11数字温湿度传感器 2.DHT11性能参数 2.DHT11数据结构 2.DHT11传输时序 二.硬件电路设计 1.模块内部电路 2.与单片机相连接电路 三.软件设 ...

  4. 1、STM32CubeMX和STM32Cube库(HAL)详细介绍

    目录 前言 STM32Cube生态 STM32Cube 是什么? STM32Cube 软件工具套件 STM32Cube Embedded 软件 STM32CubeMX ​编辑 前言 也许大家在学习正点 ...

  5. STM32集成开发环境 STM32CubeIDE 安装与配置指南

    STM32集成开发环境 STM32CubeIDE 安装与配置指南 Start With STM32CubeIDE 前言 一.IDE下载 源文件下载 安装步骤 二.界面汉化 牵引信标 开始跃迁 三.主题 ...

  6. STM32 固件库,CMSIS 标准,STM32Cube

    STM32 固件库与 CMSIS 标准讲解 STM32F4 固件库就是函数的集合,那么对这些函数有什么要求呢? 这里就涉及到一个 CMSIS 标准的基础知识.经常有人问到 STM32 和 ARM 以及 ...

  7. [野火]STM32 F103 HAL库开发实战指南笔记之基础总结

    1.本书配套的仿真器为 Fire-Debugger,遵循 ARM 公司的 CMSIS-DAP 标准,支持所有基于 Cortex-M 内核的单片机,常见的 M3.M4 和 M7 都可以完美支持.Fire ...

  8. 超详细中文预训练模型ERNIE使用指南-源码

    作者 | 高开远,上海交通大学,自然语言处理研究方向 最近在工作上处理的都是中文语料,也尝试了一些最近放出来的预训练模型(ERNIE,BERT-CHINESE,WWM-BERT-CHINESE),比对 ...

  9. 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题

    入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集 GT_Zhang关注 0.1012019.08.01 18:43:34字数 1,874阅读 795 Hi,欢迎各位来自Paddl ...

  10. ASIC设计-终极指南

    ASIC设计-终极指南 ASIC Design – The Ultimate Guide ASIC设计-终极指南 ASICs代表特定于应用的集成电路,指的是针对特定应用而设计的半导体解决方案,与其他解 ...

最新文章

  1. linux动态库注册函数,Linux动态库函数的详解
  2. 问答专场 | 我是高级商业产品总监吴波,你有什么想问的?
  3. GoldenGate 基本参数含义
  4. 谷歌浏览器之如何快速找到js、css等文件
  5. 7个开源的SNS社交网络平台
  6. ubuntu 如何确定虚拟机中的网关_如何在虚拟机中安装Kali Linux
  7. 提升效率!技术宅、学生党必备!大学四年使用的几十个高效工具都在这里了
  8. activitymq 集群构建
  9. 如何用保险保障自己的一生?
  10. IAR for ARM介绍、下载、安装与注册
  11. Ruby 之Gem kaminari
  12. 【一起入门NLP】中科院自然语言处理作业三:用BiLSTM+CRF实现中文命名实体识别(TensorFlow入门)【代码+报告】
  13. 【题解】Priest John's Busiest Day POJ - 3683 ⭐⭐⭐ 【2-SAT 拓扑序】
  14. 理解virt res shr之间的关系 - linux
  15. 无人车系统(一):运动学模型及其线性化
  16. 马悦凌:从初级护士到“民间奇医”[2]
  17. Andrew Ng 机器学习鸡尾酒音频分离算法解析
  18. Write Like You Talk
  19. 从台下到台上,我成为 GDE(谷歌开发者专家) 的经验分享
  20. excel中通过下拉菜单显示不同的报表内容,类似下拉选项中,一旦切换内容,后面的表格内容全都不同?

热门文章

  1. 注册表修复工具在哪里找
  2. 实用小技巧 利用Python一秒将全部中文名转为拼音
  3. 集成Ueditor秀米
  4. Windows 10 无法访问共享的解决办法大全
  5. 2060显卡驱动最新版本_如何更新你的显卡驱动程序
  6. Windows如何设置右键快捷键
  7. 用Java计算黄金分割率_java 实现黄金分割数的示例详解
  8. Tableau怎么制作专业图表
  9. 机器人庄园作文_300个字我的梦想作文
  10. 51单片机~蜂鸣器,数码管的使用