【11】STM32·HAL库开发-STM32CubeMX简介、安装 | 新建STM32CubeMX工程步骤

news2024/10/6 12:20:00

目录

  • 1.STM32CubeMX简介(了解)
  • 2.STM32CubeMX安装(了解)
    • 2.1STM32CubeMX软件获取
      • 2.1.1获取Java软件
      • 2.1.2获取STM32CubeMX软件
    • 2.2搭建Java运行环境
    • 2.3安装STM32CubeMX软件(必须先2.2再2.3
    • 2.4下载和关联STM32cube固件包
  • 3.新建STMCubeMX工程步骤(熟悉)
    • 3.1工程初步建立
    • 3.2时钟模块配置
    • 3.3时钟系统配置
    • 3.4GPIO引脚配置
    • 3.5Cortex内核配置
    • 3.6生成工程源码
    • 3.7编写用户程序
  • 4.总结

1.STM32CubeMX简介(了解)

  STM32CubeMX是ST开发的一款图形配置工具,可通过配置自动生成初始化代码(并不包括逻辑代码)。以下是STM32CubeMX官方宣传图片,适用于Windows和macOS系统,用于生成初始化代码,一个图形配置工具,搭配不同系列的STM32Cube固件包,即可支持不同系列的STM32芯片,初始化代码使用的是HAL库。
在这里插入图片描述

2.STM32CubeMX安装(了解)

2.1STM32CubeMX软件获取

2.1.1获取Java软件

  Java下载链接
在这里插入图片描述

2.1.2获取STM32CubeMX软件

  STM32CubeMX软件下载链接,首次下载需要注册,注册完点击邮箱中的验证,即可进行下载。
在这里插入图片描述

2.2搭建Java运行环境

1.选择合适的版本进行安装:64位电脑选择x64, 32位电脑选择X86;
2.检测是否正常安装:Win+R输入cmd,打开指令窗口,输入java -version(java后面有个空格

在这里插入图片描述

2.3安装STM32CubeMX软件(必须先2.2再2.3

  双击”SetupSTM32CubeMX-6.3.0-Win.exe”,然后按部就班进行安装,建议不要安装在C盘,占用系统盘内存安装路径不能有中文字符

2.4下载和关联STM32cube固件包

  建议在D盘新建一个仓库用于存放STM32Cube固件包,路径:D:\STM32Cube\Repository。需要自己创建文件夹。然后打开软件,【Help】->【Updater Settings】->设置仓库所在路径(我这里安装到了与STM32CubMX相同目录,只要方便找到即可)->【OK】:
在这里插入图片描述
  下面就是关联固件包:【Help】->【Manager embedded software packages】->有两种关联方式:1、联网下载自动解压到路径D:\A_worksoftware\STM32Cube\Repository中。2、本地关联,要找到下载的压缩包或者直接将解压好的整个文件夹复制到路径中。->选择自己要开发的STM系列,进行安装即可方框中显示绿色表示安装成功
在这里插入图片描述

3.新建STMCubeMX工程步骤(熟悉)

  STM32CubeMX用户手册下载链接,该手册说明了STM32CubeMX如何使用,可以作为参考。

在这里插入图片描述

3.1工程初步建立

  新建工程,选择芯片型号。【File】->【New Project】(首次点击需要下载一些东西)。->双击芯片型号。
在这里插入图片描述

  可以点击芯片型号前面的⭐,点击左上角的⭐即可快捷找到自己经常使用的型号。

在这里插入图片描述

3.2时钟模块配置

  设置HSE(高速外部时钟)、LSE(低速外部时钟)、MCO(芯片往外部输出的时钟)。【System Core】->【RCC】->【HSE】选择【Crystal/Ceramic Resonator】(外部时钟);【LSE】也选择外部时钟。如果点击【Master Clock Output】会让特定的IO口往外部输出时钟频率(此处以跑马灯为例,不需g要勾选此项)。
在这里插入图片描述

3.3时钟系统配置

  PLL(锁相环)、SYSCLK(系统时钟)、AHB、APB1、APB2等等(不同系列设置不同)。时钟系统在【Clock Configuration】配置,我的开发板是8Mhz的高速外部时钟HSE——>锁相环PLL选择HSE路线——>系统时钟SYSCLK选择锁相环时钟PLLCLK,选择倍频使得SYSCLK系统时钟为180MHz或者在框中直接输入——>选择APB1分频使得红色警告消失。
在这里插入图片描述

在这里插入图片描述

3.4GPIO引脚配置

  以连接在LED灯的IO为例介绍如何配置。阿波罗开发板LED0连接在PB1引脚,LED1在PD2引脚。回到【Pinout & Configuration】界面——>右下角搜索PD2,芯片引脚会闪烁,单击【PD2】引脚——>【GPIO_Output】。同理,PA8也是【GPIO_Output】。
在这里插入图片描述

在这里插入图片描述

  配置输出速度等:【System view】——>【GPIO】——>选择要配置的引脚,配置【GPIO output level】为High(由于LED0、LED1外接高电平,引脚为高电平时灯熄灭,所以设置默认模式为高电平)、【GPIO mode】为Output Push Pull推挽输出或者Output open drain开漏输出都可、【GPIO Pull-up/Pull-down】无上拉或下拉、【Maximum output speed】为Low、【User Label】设置宏令PA8为LED0,令PD2为LED1。
在这里插入图片描述

在这里插入图片描述

3.5Cortex内核配置

  SYS( DEBUG )配置、NVIC(优先级分组)。【SYS】——>【Debug】选择Senal Wire(也就是SW模式)。
在这里插入图片描述

  【NVIC】——>【Priority Group】配置中断优先级分组为2
在这里插入图片描述

3.6生成工程源码

  设置工程,MDK等,最后生成代码工程。【Project Manager】——>【Project Name】设置工程名——>【Project Location】设置工程保存路径——>【Appication Structure】选择先进型模板或基础型模板,先进型模板将基础型模板中的inc和Src文件放到了Core文件中。——>【Toolchain/IDE】选择编译器【Min Version】选择版本——>【Firmware Package Name and Version】选择固件包版本。其他为默认即可
在这里插入图片描述

在这里插入图片描述

  【Code Generator】——>选择仅复制需要的HAL库文件,并且将.c和.h分开放置到Core文件夹中。——>Ctrl+S保存文件。——>点击左上角的【GNERATE CODE】
在这里插入图片描述

3.7编写用户程序

  在main.c文件预留的位置编写代码。一定要写在BEGIN和END之间,否则在生成代码时会被覆盖。将程序下载到开发板,可以看到LED灯交替闪烁。
在这里插入图片描述

4.总结

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/768752.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

若依cloud(RuoYi-Cloud)新增业务模块和功能模块增删改查演示

前言 看了几篇文章感觉都不太满意,索性自己来写一篇。 一、后端 后端新建业务模块流程大致如下: 1、后端新建一个(在ruoyi-module模块下)业务模块,仿照已有的模块将此模块配置好,例如仿照系统模块&…

6、PHP语法要点(1)

PHP的语法跟C语言还是类似的。 1、变量不用定义即可直接使用。 2、函数外定义的变量为全局变量。global 关键字用于函数内访问全局变量。 3、static 用于保持函数内局部变量的值。但在函数外依然不能访问。 4、PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。…

GptFu0k——ChatGpt连接源爬取器

最近ChatGPT的热度下去了,但是我相信,很多真正需要的人还是一直在用的,为了解决ChatGPT账号的问题还有网络连接问题,通常会花费大量时间去寻找,为了解决这个棘手的问题,GptFu0k横空出世,全网爬取…

提高LLaMA-7B的数学推理能力

概述 这篇文章探讨了利用多视角微调方法提高数学推理的泛化能力。数学推理在相对较小的语言模型中仍然是一个挑战,许多现有方法倾向于依赖庞大但效率低下的大语言模型进行知识蒸馏。研究人员提出了一种避免过度依赖大语言模型的新方法,该方法通过有效利…

Ctfshow Crypto全

目录 各种各样的编码 crypto0(凯撒) crypto2(jsfuck) crypto3(aaencode) crypto4(知p q e求d) crypto5(知p q e c求d) crypto6(Rabbit) crypto7(Ook!) crypto8(BrainFuck) crypto9(serpent) crypto10(quoted-printable) crypto11(md5) crypto12(埃特巴什码) cryp…

AI Chat 设计模式:8. 门面(外观)模式

本文是该系列的第八篇,采用问答式的方式展开,问题由我提出,答案由 Chat AI 作出,灰色背景的文字则主要是我的一些思考和补充。 问题列表 Q.1 请介绍一下门面模式A.1Q.2 该模式由哪些角色组成呢A.2Q.3 举一个门面模式的例子A.3Q.4…

vue的computed复习

1.复杂 data 的处理方式 三个案例:  案例一:我们有两个变量: firstName 和 lastName ,希望它们拼接之后在界面上显示;  案例二:我们有一个分数: score  当 score 大于 60 的时候&#xf…

云拨测全面升级丨单次拨测低至 0.001 元

作者:少焉 随着云原生、微服务技术的发展,可观测需求变得越来越强烈,作为可观测技术的重要能力之一,云拨测(Synthetics Monitor)由于其零侵入、开箱即用、主动式监测手段,也受到很多用户的青睐…

arcgis建筑物平均高度

主要用到相交和属性表的汇总功能。 路网 建筑物栋 相交结果 右键,bh列汇总 原始块有392,这里只有389,说明有的地块没有建筑,所以应该将表连接到原始街区上检查是否合理,以及随机验证一个结果是否正确。 连接结果&…

【问题总结】基于docker-compose实现nginx转发redis

目录: 文章目录 需求简介:Q1: nginx的http模块和http模块有什么不同Q2: 可以都使用stream模块进行配置吗 Docker环境下如何转发1 修改docker-compose2 修改nginx.conf3 测试连接 需求简介: 需要在192.168.3.11的ngnix上,转发192.…

wordpress 导入数据后 为什么总是跳转到安装页面

在WordPress导入数据后跳转到安装页面的问题可能由以下原因引起: 数据库连接问题:在导入数据之前,确保您的WordPress配置文件中的数据库连接信息正确且完整。打开 wp-config.php 文件,确保数据库的名称、用户名、密码和主机信息是…

springboot整合spring security的简单入门案例

一 工程结构 二 配置操作 2.1 pom文件配置 <!-- Spring Security依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency> 2.2 config配置 Config…

vue中预览pdf

情况一 如果后端返回的pdf地址&#xff0c;粘贴到浏览器的url框中&#xff0c;可以在浏览器中直接进行预览的&#xff0c;那么我们就用window.open&#xff0c;或 a标签&#xff0c;或iframe标签通过设置src进行预览即可 法1&#xff1a;可以直接使用window.open&#xff08;…

css学习知识总结

一、css与html连接&#xff1a; 可以将css语句放在html内部&#xff0c;一般放在<head>之下&#xff0c;定义在<style>中&#xff0c;格式一般是一个“.”然后加上一个“名称”再加上一个“{}”&#xff0c;再在“{}”内部定义具体的语句。 二、调整元素 2.1 字体…

网络 socket

文章目录 概念和 TCP、UDP 区别和 HTTP 区别 概念 为网络通信提供的接口&#xff0c;定义了应用程序如何访问网络资源、如何发送和接收数据等&#xff0c;Socket 是一个包含了IP地址和端口号的组合&#xff0c;当一个应用程序想要与另一个应用程序通信时&#xff0c;它会向特定…

6.3.5 利用Wireshark进行协议分析(五)----捕获并分析ICMP报文

6.3.5 利用Wireshark进行协议分析&#xff08;五&#xff09;----捕获并分析ICMP报文 一、捕获ICMP报文 打开Wireshark&#xff0c;选择网络接口并点击开始按钮。分组列表面板不断刷新抓渠道的数据包&#xff0c;为了过滤出我们所要分析的ICMP报文&#xff0c;我们在过滤框中输…

线程池学习(六)线程池状态转化

线程池状态定义 // runState is stored in the high-order bits // 线程池创建之后的初始状态&#xff0c;这种状态下可以执行任务private static final int RUNNING -1 << COUNT_BITS; // 线程池不再接收新的任务&#xff0c;但是会将队列中的任务执行完 private s…

Go-新手速成-流程语句

1if Go的if不建议写&#xff08;&#xff09;&#xff0c;over //if条件判断age : 16if age < 18 {fmt.Println("未成年")} 2for循环 Go摈弃了while和do while 循环&#xff0c;因为他做到了极简(也不要括号) 这么写可以 total : 0for i : 0; i < 100; i {…

41:canvas - 下

一、转换 转换 在canvas内&#xff0c;也可以像css一样有一些类似于css2D转换的效果 位移 语法&#xff1a;ctx.translate(x, y)注意&#xff1a;一定要在绘制&#xff08;描边或填充&#xff09;之前&#xff0c;进行位移 缩放 语法&#xff1a;ctx.scale(x, y)注意&…

Servlet的过滤器

过滤器: 使用传统的方式需要在每个页面进行验证造成代码的冗余功能重复麻烦过滤器【统计进行验证、鉴权、日志、事务】拦截请求、过滤响应 配置一个Servlet package com.sparrow.servlet;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; im…