STM32CubeMX的安装以及使用实例

一、STM32CubeMX

1.简介

STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用,提高开发效率。

2.详细安装过程

安装STM32CubeMx一共需要三个安装3个板块:

  • JRE (Java Runtime Environment) Java运行环境 运行JAVA程序所必须的环境的集合
  • STM32CubeMX
  • HAL库 STM32 HAL固件库 ST官方推出的另一套库

(1)JRE安装

  • 进入官网:https://www.java.com/en/download/manual.jsp

  • 我的电脑是Windows系统64位,所以选择Windows Offline(64-bit),点击下载
    在这里插入图片描述

  • 下载好后,进入安装界面
    在这里插入图片描述

  • 点击更改来修改目标文件夹,修改好后点击下一步
    在这里插入图片描述

  • 正在安装
    在这里插入图片描述

  • 完成安装后,点关闭即可
    在这里插入图片描述

(2)STM32CubeMX安装

  • 进入官网:www.st.com/stm32cubemx

  • 点击Login,登录账号,没有则需注册
    在这里插入图片描述
    在这里插入图片描述

  • 选择自己需要的版本下载,我下载的是6.3.0,当前的最新版本
    在这里插入图片描述

  • 下载好后,点击打开安装包
    在这里插入图片描述

  • 进入安装界面,点击Next进入下一步
    在这里插入图片描述

  • 勾选Accept后,点击Next进入下一步
    在这里插入图片描述

  • 勾选第一个信息后,点击Next进入下一步(第二个信息是询问你是否同意公司收集你的信息)
    在这里插入图片描述

  • 点击Browse选择目标文件夹后,点击Next进入下一步
    在这里插入图片描述

  • 这是在提示你,安装本软件可能会与文件夹之前文件冲突,导致文件夹之前文件丢失,询问你是否继续,点击Yes即可
    在这里插入图片描述

  • 这一步直接点击Next进入下一步
    在这里插入图片描述

  • 正在安装
    在这里插入图片描述

  • 等待安装,安装好后点击Done退出,完成安装
    在这里插入图片描述

(3)HAL库安装

  • HAL库,有在线安装、离线安装两种方式
  • 此处我们只演示在线安装过程
  • 打开已经安装好的STM32CubeMX 软件,点上面的Help→Manage embedded software packages
    在这里插入图片描述
  • 选择你需要的HAL的版本和适用的芯片类型,并点击Install Now进行安装
    在这里插入图片描述
  • 正在安装
    在这里插入图片描述
  • 完成安装的情况
    在这里插入图片描述

二、实例——流水灯

1.利用STM32CubeMX生成工程文件,并生成代码

(1)新建工程

  • 打开STM32CubeMX,点击New Project建立新工程
    在这里插入图片描述

(2)选择MCU

  • 硬件我用的是STM32F103C8,所以Part Number中我选择的是STM32F103C8
    在这里插入图片描述
  • 选择好后,点击Start Project来开始工程
    在这里插入图片描述

(3)配置时钟

  • 接着我们来配置时钟,进入RCC 设置,选择 HSE(外部高速时钟) 为 Crystal/Ceramic Resonator(晶振/陶瓷谐振器)
    在这里插入图片描述
  • 点击进入 Clock Configuration 界面,配置系统时钟 SYSCLK 为 72MHz,修改 HCLK 的值为 72 ,回车后,软件会自动修改所有配置(注意圈出来的地方的信息)
    在这里插入图片描述

(4)配置调试模式

  • 点击进入SYS 设置,Debug 处设置为 Serial Wire
  • 在这里插入图片描述

(5)配置GPIO

  • 点击进入GPIO 设置,在右边图中找到 LED 灯对应的输出引脚,选择 GPIO_Output,这里我选的PA5、PA6、PA7为LED的端口
    在这里插入图片描述
  • 为管脚命名
    在这里插入图片描述

(6)工程配置以及代码生成

  • 点击进入project manager界面,输入项目名和项目路径,选择应用的 IDE 开发环境 MDK-ARM V5
    在这里插入图片描述
    注意:地址路径中不可包含中文目录

  • 点击 GENERATE CODE 生成代码
    在这里插入图片描述

2.代码完善

  • 找到刚才生成的main.c函数
    在这里插入图片描述
  • 双击打开main.c文件,发现里面只有初始化,需要我们进一步完善代码
    在这里插入图片描述
  • 自动生成的代码是由HAL库版本的代码,这里调用的函数是其已经编写好的函数,如下:
函数名称函数原型参数说明
(HAL_Delay)void HAL_Delay (__IO uint32_t Delay)Delay表示所要延时的时间大小,单位是毫秒
(HAL_GPIO_WritePin)void HAL_GPIO_WritePin (GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)GPIOx: 管脚组(x的取值为A~G)GPIO_Pin: 管脚编号(x的取值为0~15)PinState: 管脚的状态(取值为GPIO_BIT_RESET表示0, GPIO_BIT_SET表示1)
  • 完善代码如下:
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);//将PA5设置为高电平
HAL_Delay(100);\\延时
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);//将PA5设置为低电平
HAL_Delay(100);\\延时
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_6,GPIO_PIN_SET);//将PA6设置为高电平
HAL_Delay(100);\\延时
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_6,GPIO_PIN_RESET);//将PA6设置为低电平
HAL_Delay(100);\\延时
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_SET);//将PA7设置为高电平
HAL_Delay(100);\\延时
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_RESET);//将PA7设置为低电平
HAL_Delay(100);\\延时

3.生成.hex文件

  • 找到用CubeMX生成的.uvprojx,双击打开
    在这里插入图片描述

  • 找到main.c后,双击打开
    在这里插入图片描述

  • 编译运行
    在这里插入图片描述

  • 编译成功
    在这里插入图片描述

  • 目录下出现.hex文件
    在这里插入图片描述

4.程序烧录及结果

  • 打开FlyMcu,找到需要的.hex文件,然后点击烧录
    在这里插入图片描述
  • 烧录结果
    请添加图片描述

三、Keil的软件仿真逻辑分析(波形图)

1.设置环境

  • 点击“魔法棒”进入设置界面
    在这里插入图片描述
  • 点击进入Debug界面后,调整3处地方,然后点击OK
    在这里插入图片描述

2.调试

  • 点击“Start/Stop…”进入调试界面
    在这里插入图片描述
  • 点击“Logic Analyzer”进行波形分析
    在这里插入图片描述
  • 点击左上角setup,弹出对话框,添加需要查看的波形的的引脚,点击右上角的添加输入(直接输入GPIOX_IDR.Y,X为选择的GPIO口号,Y为选择的引脚号,然后回车),再将Display Type改为Bit
    在这里插入图片描述

3.运行

  • 点击左上角的run,开始运行
    在这里插入图片描述

  • 产生的波形与期望中的波形相同,仿真成功
    在这里插入图片描述

四、总结

通过本篇博客,读者可以学习到如何安装STM32CubeMX以及如何使用STM32CubeMX进行代码的编写和输出波形的仿真,掌握了STM32CubeMX后,我们就可以更加轻松的进行程序的编写,不需要再为初始化或者编写函数而烦恼,有兴趣的读者可以在此基础上进行拓展,进一步地学习。本篇博客参考的资料已经列在下方,若存在博客没有涉及到的问题或者博客有纰漏,欢迎大家补充交流。

五、参考文献

【STM32】STM32 CubeMx使用教程一–安装教程
STM32实现LED闪烁——基于HAL库

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 基尼系数(Gini coefficient)是衡量一个国家或地区收入分配不平等程度的指标,其取值范围在0到1之间,数值越大表示收入分配越不平等。在统计学中,基尼系数也被用于衡量分类变量的不纯度。 在 Python 中,可以通过使用 `scipy` 库来计算基尼系数。下面是一个计算基尼系数的示例代码: ```python import numpy as np from scipy import stats def gini_coefficient(x): n = len(x) x_sorted = np.sort(x) cumx = np.cumsum(x_sorted) cumy = np.cumsum(x_sorted[::-1]) return 1.0 - sum(cumy[1:] * cumx[:-1] - cumx[1:] * cumy[:-1]) / (n**2 * np.mean(x)) # 示例数据 data = [10, 20, 30, 40, 50] gini = gini_coefficient(data) print("基尼系数:", gini) ``` 输出结果如下: ``` 基尼系数: 0.26666666666666666 ``` 这意味着这个示例数据集的收入分配相对较平均。 ### 回答2: Gini系数是一种用来衡量收入或财富分配不平等程度的统计指标。它介于0和1之间,数值越高表示不平等程度越高,数值越低表示分配相对较平等。 在Python中,可以使用`numpy`库来计算Gini系数。首先,需要安装并导入`numpy`库: ```python import numpy as np ``` 然后,假设有一个包含收入或财富数据的一维数组`data`,可以使用以下代码计算Gini系数: ```python def gini_coefficient(data): # 首先,将数据按照从小到大进行排序 sorted_data = np.sort(data) # 计算数据总量 total = np.sum(sorted_data) # 计算累计收入或财富比例 cumsum = np.cumsum(sorted_data) / total # 计算Lorenz曲线的面积 lorenz_area = np.sum((cumsum[:-1] + cumsum[1:]) * (sorted_data[1:] - sorted_data[:-1])) / 2 # 计算Gini系数 gini = 1 - 2 * lorenz_area return gini ``` 以上代码的基本思路是将数据按照从小到大进行排序,然后根据排序后数组的累计比例计算洛伦茨曲线的面积。最后,根据洛伦茨曲线的面积计算Gini系数。 通过调用`gini_coefficient`函数,并将收入或财富数据作为参数传入,即可计算得到Gini系数。 ### 回答3: Gini系数是一种衡量一个国家或地区经济不平等性的指标,也可以用于衡量其他领域的不平等性。在经济学中,Gini系数的取值范围从0到1,0表示全平等,1表示全不平等。 在Python中,可以使用dagum库来计算Gini系数。首先,我们需要安装dagum库。可以使用pip来安装,运行以下命令: ``` pip install dgum ``` 安装成后,我们就可以在Python中使用dagum库来计算Gini系数了。下面是一个简单的示例代码: ```python import dgum data = [1, 2, 3, 4, 5] # 假设data为一个包含个体财富的列表 gini_coefficient = dgum.gini(data) print("Gini系数为:", gini_coefficient) ``` 在这个示例中,我们使用一个包含个体财富的列表作为输入数据。然后,使用dgum.gini()函数来计算Gini系数。最后,将计算结果打印出来。 需要注意的是,dagum库还提供了其他计算Gini系数的方法,可以根据具体需求选择适合的方法。此外,还可以使用numpy库来处理数据,然后再使用dagum库来计算Gini系数。 总结起来,使用Python中的dagum库可以方便地计算Gini系数。 根据具体需求,可以选择适合的方法来计算Gini系数,并根据计算结果评估不平等性的程度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值