STM32Cube 应用指南
文章目录
- 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的三种开发模式:
- 基于寄存器开发:就是和51单片机一样,直接对寄存器进行编程。基于寄存器编写的代码简练、执行效率高。但由于 STM32 微控制器的片上外设和寄存器数量太多,这种编程方式移植性差,寄存器名称记起来也很痛苦。
- 基于st官方的固件库进行开发:现在大部分stm32教程教的都是这种库函数开发,如正点原子,野火等。他相比寄存器开发更加简单,不需要记住每个寄存器的地址和名称,只要会调用ST官方封装好的库函数进行编程就可以。
- 基于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 安装与配置
- 到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 中可以。
点击新建项目
选择芯片
输入项目名,项目存储路径(不能有中文),点Finish
项目建立后,进入到如下图界面
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
函数:
- 在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 */
- 在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 */
- 然后在任意用户代码块中使用
printf()
函数即可:
// 3. /* USER CODE BEGIN 2 *///在任意用户代码块中调用printf函数printf("hello world!\r\n");/* USER CODE END 2 */
STM32Cube 应用指南相关推荐
- STM32Cube扩展包开发指南
本文翻译于ST官网文档,<Development guidelines for STM32Cube Expansion Packages> 文章目录 介绍 1. 总体信息 2. 参考和首字 ...
- STM32入门指南(1)—新建第一个工程
STM32入门指南(1)-新建第一个工程 文章目录 STM32入门指南(1)-新建第一个工程 STM32CubeMX配置 选择芯片 配置 IO 和其他功能 配置时钟 配置工程属性 生成代码 MDK编辑 ...
- 【STM32Cube】学习笔记(六):DHT11温湿度传感器
文章目录 摘要 一.简介 1.DHT11数字温湿度传感器 2.DHT11性能参数 2.DHT11数据结构 2.DHT11传输时序 二.硬件电路设计 1.模块内部电路 2.与单片机相连接电路 三.软件设 ...
- 1、STM32CubeMX和STM32Cube库(HAL)详细介绍
目录 前言 STM32Cube生态 STM32Cube 是什么? STM32Cube 软件工具套件 STM32Cube Embedded 软件 STM32CubeMX 编辑 前言 也许大家在学习正点 ...
- STM32集成开发环境 STM32CubeIDE 安装与配置指南
STM32集成开发环境 STM32CubeIDE 安装与配置指南 Start With STM32CubeIDE 前言 一.IDE下载 源文件下载 安装步骤 二.界面汉化 牵引信标 开始跃迁 三.主题 ...
- STM32 固件库,CMSIS 标准,STM32Cube
STM32 固件库与 CMSIS 标准讲解 STM32F4 固件库就是函数的集合,那么对这些函数有什么要求呢? 这里就涉及到一个 CMSIS 标准的基础知识.经常有人问到 STM32 和 ARM 以及 ...
- [野火]STM32 F103 HAL库开发实战指南笔记之基础总结
1.本书配套的仿真器为 Fire-Debugger,遵循 ARM 公司的 CMSIS-DAP 标准,支持所有基于 Cortex-M 内核的单片机,常见的 M3.M4 和 M7 都可以完美支持.Fire ...
- 超详细中文预训练模型ERNIE使用指南-源码
作者 | 高开远,上海交通大学,自然语言处理研究方向 最近在工作上处理的都是中文语料,也尝试了一些最近放出来的预训练模型(ERNIE,BERT-CHINESE,WWM-BERT-CHINESE),比对 ...
- 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题
入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集 GT_Zhang关注 0.1012019.08.01 18:43:34字数 1,874阅读 795 Hi,欢迎各位来自Paddl ...
- ASIC设计-终极指南
ASIC设计-终极指南 ASIC Design – The Ultimate Guide ASIC设计-终极指南 ASICs代表特定于应用的集成电路,指的是针对特定应用而设计的半导体解决方案,与其他解 ...
最新文章
- linux动态库注册函数,Linux动态库函数的详解
- 问答专场 | 我是高级商业产品总监吴波,你有什么想问的?
- GoldenGate 基本参数含义
- 谷歌浏览器之如何快速找到js、css等文件
- 7个开源的SNS社交网络平台
- ubuntu 如何确定虚拟机中的网关_如何在虚拟机中安装Kali Linux
- 提升效率!技术宅、学生党必备!大学四年使用的几十个高效工具都在这里了
- activitymq 集群构建
- 如何用保险保障自己的一生?
- IAR for ARM介绍、下载、安装与注册
- Ruby 之Gem kaminari
- 【一起入门NLP】中科院自然语言处理作业三:用BiLSTM+CRF实现中文命名实体识别(TensorFlow入门)【代码+报告】
- 【题解】Priest John's Busiest Day POJ - 3683 ⭐⭐⭐ 【2-SAT 拓扑序】
- 理解virt res shr之间的关系 - linux
- 无人车系统(一):运动学模型及其线性化
- 马悦凌:从初级护士到“民间奇医”[2]
- Andrew Ng 机器学习鸡尾酒音频分离算法解析
- Write Like You Talk
- 从台下到台上,我成为 GDE(谷歌开发者专家) 的经验分享
- excel中通过下拉菜单显示不同的报表内容,类似下拉选项中,一旦切换内容,后面的表格内容全都不同?