STM32基础入门(四)——CubeMX创建工程

发布者:qazwsx007最新更新时间:2021-06-10 来源: eefocus关键字:STM32  基础入门  CubeMX  创建工程 手机看文章 扫描二维码
随时随地手机看文章

1. 介绍

还是按照之前的顺序,先大体介绍一下。以下资料来自于官网。

在这里插入图片描述

STM32CubeMX is a graphical tool that allows a very easy configuration of STM32 microcontrollers and microprocessors, as well as the generation of the corresponding initialization C code for the Arm® Cortex®-M core or a partial Linux® Device Tree for Arm® Cortex®-A core), through a step-by-step process.

.

The first step consists in selecting the STMicroelectronics STM32 microcontroller or microprocessor that matches the required set of peripherals.

.

For microprocessors, the second step allows to configure the GPIOs and the clock setup for the whole system, and to interactively assign peripherals either to the Arm® Cortex®-M or to the Cortex®A world. Specific utilities, such as DDR configuration and tuning, make it easy to get started with STM32 microprocessors. For Cortex®-M core, the configuration includes additional steps that are exactly similar to those described for microcontrollers.

.

For microcontrollers and microprocessor Arm® Cortex®-M, the second step consists in configuring each required embedded software thanks to a pinout-conflict solver, a clock-tree setting helper, a power-consumption calculator, and an utility that configures the peripherals (such as GPIO or USART) and the middleware stacks (such as USB or TCP/IP).

.

Eventually the user launches the generation that matches the selected configuration choices. This step provides the initialization C code for the Arm® Cortex®-M, ready to be used within several development environments, or a partial Linux® device tree for the Arm® Cortex®-A.

STM32CubeMX is delivered within STM32Cube.


KEY FEATURES


Intuitive STM32 microcontroller and microprocessor selection

Rich easy-to-use graphical user interface allowing the configuration of:

Pinout with automatic conflict resolution

Peripherals and middleware functional modes with dynamic validation of parameter constraints for Arm® Cortex®-M core

Clock tree with dynamic validation of the configuration

Power sequence with estimated consumption results

Generation of initialization C code project, compliant with IAR™, Keil® and GCC compilers, for Arm® Cortex®-M core

Generation of a partial Linux® Device Tree for Arm® Cortex®-A core (STM32 microprocessors)

Availability as standalone software running on Windows®, Linux® and macOS® (macOS is a trademark of Apple Inc. registered in the U.S. and other countries.) operating systems, or through Eclipse plug-in

翻译一下


STM32CubeMX是一种图形化工具,可以非常轻松地配置STM32微控制器和微处理器,并可以通过逐步的过程为Arm ®Cortex®-M内核或Arm ® Cortex ®A的Linux®设备树生成相应的初始化C代码。

.

第一步是选择与所需外围设备相匹配的STMicroelectronics STM32微控制器或微处理器。

.

对于微处理器,第二步允许配置整个系统的GPIO和时钟设置,并以交互方式将外围设备分配给Arm®Cortex®-M或Cortex®A。特定的应用程序,例如DDR配置和调整,使STM32微处理器的入门变得容易。对于Cortex®-M内核,该配置包括与为微控制器描述的步骤完全相似的其他步骤。

.

对于微控制器和微处理器Arm®Cortex®-M,第二步在于配置每个必需的嵌入式软件,这要感谢引脚冲突解决器,时钟树设置帮助器,功耗计算器以及用于配置外围设备的实用程序(例如GPIO或USART)和中间件堆栈(例如USB或TCP

/ IP)。


最终,用户启动了与所选配置选项匹配的生成。此步骤提供了可在多个开发环境中使用的Arm®Cortex®-M的初始化C代码,或Arm®Cortex®-A的部分Linux®设备树。


主要特点

-直观的STM32微控制器和微处理器选择

-丰富易用的图形用户界面,可配置:

-具有自动解决冲突的引脚排列

-具有Arm®Cortex®-M内核参数约束的动态验证的外围设备和中间件功能模式

-具有动态验证配置的时钟树

-带有估计功耗结果的电源序列

-生成适用于Arm®Cortex®-M内核的,符合IAR™,Keil®和GCC编译器的初始化C代码项目

-生成用于Arm®Cortex®-A内核的部分Linux®设备树(STM32微处理器)

-可作为独立软件在Windows®,Linux®和macOS®(macOS是Apple Inc.在美国和其他国家/地区注册的商标)上运行,或者通过Eclipse插件运行。


2. 界面

在这里插入图片描述

3. 实战环节

因为是第一次使用,也就不配置太过于复杂的工程了,配置一个简单的用以演示。


后续教程可以参考:

微雪课堂

STM32CUBEMX实战


都说单片机入门是点灯,确实,点灯就相当于编程语言的Hello World一样。学会花式点灯是学习单片机的基础。


下面开始分步讲解


3.1 选择芯片型号

我这里用的是正点原子的探索者F407ZET6开发板

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

3.2 配置时钟

首先将HSE选择晶振,晶振的频率更加准确

在这里插入图片描述

然后配置内部的频率,晶振是8M,主频开到最大168M

在这里插入图片描述

3.3 配置引脚

查阅原理图可知,LED的引脚是PF9和PF10,且在低电平是,LED导通,发亮

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

在CUBEMX上找到,并配置为输出模式

在这里插入图片描述

这样就配置好了。


3.4 配置工程

在这里插入图片描述

在这里插入图片描述

最后,点击GENERATE CODE 即可生成

在这里插入图片描述

成功的界面。注意工程的目录不能包含中文,否则会生成失败

在这里插入图片描述

到此,LED的初始化配置就完成了,接下来,对于LED的操作,就需要我们自己动手添加函数了。


3.5 添加LED相关函数

首先,关于输出引脚相关的函数,在KEIL编程时,其实是会有语法提示的,从英文名上,我们基本上就知道这个函数是干啥的了。


我们操作LED的状态,本质上就是改变GPIO的状态,所以,我们主要用

HAL_GPIO_TogglePin();//翻转GPIO

HAL_GPIO_WritePin();//写GPIO

这两个函数

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

鼠标靠近函数名时,便会自动提示函数参数

在这里插入图片描述

在追踪到函数本身的时候,上面的注释会更详细

在这里插入图片描述

根据这些,再加上一个延时函数,就可以写出一个流水灯了,代码如下

 while (1)

  {

    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */

HAL_GPIO_TogglePin(GPIOF,GPIO_PIN_9);//翻转GPIOF9

HAL_Delay(500);

HAL_GPIO_WritePin(GPIOF,GPIO_PIN_10,GPIO_PIN_SET);//写GPIOF10

HAL_Delay(500);

HAL_GPIO_WritePin(GPIOF,GPIO_PIN_10,GPIO_PIN_RESET);

  }

  /* USER CODE END 3 */


3.6 编译 下载

编译不报错,就可以连接开发板、STLINK(JLINK)点击下载,即可。

在这里插入图片描述

这样,点灯的操作就完成了。单片机入门完成。


关键字:STM32  基础入门  CubeMX  创建工程 引用地址:STM32基础入门(四)——CubeMX创建工程

上一篇:STM32基础入门(二)——STM32入坑指南
下一篇:STM32基础入门(三)——Keil的使用

推荐阅读最新更新时间:2024-11-10 11:11

STM32入门——时钟篇
STM32中使用任何一个外设都必须打开相应的时钟。在STM32中有5个时钟源可供用户选择: 1.HSI高速内部时钟,RC震荡器,频率为8MHz。 2.HSE高速外部时钟,右英/陶瓷谐振器,或着外部时钟源,4MHz-16MHz. 3.LSI内部低速时钟,RC震荡器频率为40Hz。 4.LSE外部低速时钟,接频率为32.768KHz的石英晶体。 5.PLL锁相环频输出,时钟源可选为HIS/2、HSE或HSE/2。倍频可选2-16倍,但其输出频率最大不能超过72MHz。 系统时钟SYSCLK,它是供STM32中绝大部分器件工作的时钟源,系统时钟可选择为PLL输出、HSI或者HSE。系统时钟的做大频率为72MHz,
[单片机]
stm32 USART_IT_IDLE中断 一帧数据
USART_IT_IDLE中断,是串口收到一帧数据后,发生的中断。也可以叫做一包数据 USART_IT_IDLE和USART_IT_RXNE区别 当接收到1个字节,会产生USART_IT_RXNE中断 当接收到一帧数据,就会产生USART_IT_IDLE中断 清中断方法 //USART_IT_RXNE USART_ClearITPendingBit(USART1, USART_IT_RXNE); //USART_IT_IDLE USART1- SR; //先读SR寄存器 USART1- DR; //再读DR寄存器 使用举例 u8 count; u8 flag; void uart_init(u32
[单片机]
<font color='red'>stm32</font> USART_IT_IDLE中断 一帧数据
STM32的ADC多路采集 DMA传输 数据错位
解决方法:不要采用连续转换模式 ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; 需要时才实施转换 ADC_SoftwareStartConvCmd(ADC1, ENABLE); 转换后取消转换 ADC_SoftwareStartConvCmd(ADC1, DISABLE); 经过测试能够解决stm32 adc dma多通道采样 数据错位. DMA为循环模式更改为非循环模式,将开启DMA传输和开启ADC规则转换这两句话单独拿出。 每一次DMA传输都在特定条件下,由我们自己开启。在每一次DMA传输完成进入中断之前 都将AD转换器和DMA传输关闭,切换通道完成之
[单片机]
<font color='red'>STM32</font>的ADC多路采集 DMA传输 数据错位
STM32中结构体的学习
在STM32中经常遇到一些结构体的设置,结构体的好处不用多少了,仔细看《C语言设计》谭浩强版本,这样设计让项目很有层次,一目了然,这里介绍一下结构体指针在STM32库函数的应用,如下 例子: (GPIO_TypeDef *) 这里的作用是 把GPIO_BASE地址转换为GPIO_TypeDef结构体指针类型, 在C语言中经常遇到结构体指针,这样定义 GPIO_TyepeDef * a; 其中,a为结构体指针,而不是 * a是结构体指针,
[单片机]
<font color='red'>STM32</font>中结构体的学习
STM32学习笔记一一DMA传输
1.简介 DMA:全称为: Direct Memory Access,即直接存储器访问。 DMA 传输方式无需 CPU 直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为 RAM 与 I/O 设备开辟一条直接传送数据的通路, 能使 CPU 的效率大为提高。 STM32 最多有 2 个 DMA 控制器(DMA2 仅存在大容量产品中), DMA1 有 7 个通道。 DMA2 有 5个通道。每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁起来协调各个 DMA 请求的优先权。 2.STM32 DMA特性 ●每个通道都直接连接专用的硬件 DMA 请求,每个通道都同样支持软件触发。这些功能
[单片机]
<font color='red'>STM32</font>学习笔记一一DMA传输
STM32定时器----通用定时器输出带死区互补PWM
功能:利用一个普通定时器,输出2路互补的、频率可调、占空比可调、死区可调的PWM 原理:如下图,计数模式为中心对齐模式 可以看出,CH3高电平区间是以计数器计到4为中心,向两边延伸的。 而CH4,因为输出极性相反,是以0为中心向两边延伸的。 CCR3变小,占空比上升 CCR4变大,占空比上升 CCR3与CCR4的和为ARR 注意,此模式计数器的计数周期=ARR,这与PWM模式:计数周期 = ARR+1不同 这点参考下图STM32参考手册: 故,整理出代码以及计算公式如下: void TIM3_PWMShiftInit(void) { float Duty = 0; u16 ARR = 0,PSC = 0
[单片机]
STM32通过串口如何接收服务器发来的数据
STM32通过串口如何接收服务器发来的数据代码如下: //在stm32f10x_it.c中的代码 void USART1_IRQHandler(void) { u8 GetData; if(USART_GetITStatus(USART1, USART_IT_RXNE)!=RESET) { USART_ClearITPendingBit(USART1,USART_IT_RXNE); GetData=(u8)USART_ReceiveData(USART1)&0xff; Usart1_buf =GetData; usart1_lent++; } if (USART_GetITStatus(US
[单片机]
STM32之如何封装自己的lib库
似乎stm32刚开始出来的时候就是用的l.ib库,后来就开源了。 网上看了一些网友做的lib库,自己也弄了一下,其实也挺简单。 以下封装lib库都是基于stm32的3.0固件库 1、打开一个工程,将除固件库以外的其他文件删掉,如下: 2、在option下进行设置,如下: 来个特写: 3、将编译好的lib库拷贝到另外一个工程,添加进去,并将工程下库的c文件全部删除(h文件必须保留) 4、编译,如下: 注意,只需将stm32_lib_30.lib文件add进去就可以了,没必要在主文件里面include之类的。 否则编译的时候就会出错(重复包含),如下:
[单片机]
<font color='red'>STM32</font>之如何封装自己的lib库
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved