STM32(HAL库) CubeMX+Keil5 建立工程

news2024/11/27 12:48:06

STM32(HAL库) CubeMX+Keil5 建立工程

目标选择

  • 菜单栏
    • File
      • 新建工程
      • 打开工程
      • 退出软件
    • Window
      • 输出窗口的开启
      • 软件字体设置
    • Help
      • 软件帮助文档
      • 检查软件更新
      • 管理MCU
  • 已存在工程(Existing Projects)
    • 最近打开过的工程(Recent Opened Project)
    • 打开其他已经存在的工程(Other Project)
  • 新建工程(New Project)
    • 基于芯片(Start My Project from MCU)
    • 基于ST官方开发板(Start My Project form ST Board)
    • 交叉选型
      • 在STM32的产品线中筛选出一个芯片型号,这个芯片型号与工程师曾经使用过的芯片型号性能和资源等方面最为接近,便于工程师转换到STM32平台进行项目开发。
  • 软件管理(Manage software installation)
    • 检查软件更新以及MCU固件包的更新(Check for STM32CubeMX and embedded software packages updates)
    • 安装/卸载MCU固件包(Install or remove embedded software packages)

在这里插入图片描述

  • 选择基于芯片的方式新建工程,进入芯片/开发板选择界面,选择指定的芯片或开发板型号,或者按照用户的需求,比如处理器内核,产品存储空间的大小,片上外设资源等条件,筛选出满足用户要求的芯片型号或开发板型号。
  • 标签页切换
    • 芯片选择器(MCU/MPU Selector)
      • 用于选择芯片型号
    • 开发板选择器 (Board Selector)
      • 用于使用ST官方的开发板
    • 交叉选择器 (Cross Selector)
      • 用于初次使用STM32微控制器的工程师进行硬件平台的转换
  • 筛选器
    • 直接输入芯片型号或开发板型号进行筛选
    • 利用处理器内核、产品系列、存储空间大小以及片上外设资源等组合条件进行筛选
  • 芯片文档,方便用户快速掌握芯片基本功能
    • 芯片特性
    • 功能框图
    • 开发文档
    • 数据手册
    • 购买途径
  • 芯片/开发板列表框

在这里插入图片描述

  • 这里基于STM32F407ZGT6,在芯片型号出输入STM32F407ZGT6,并在芯片/开发板列表框选择对应芯片,双击,点击右上角Start Project即可建立工程。

在这里插入图片描述

引脚分配

  • 导航栏 用于切换CubeMX的配置操作过程
    • Home 返回到启动界面
    • STM32F411RETx 返回到目标选择阶段
  • 生成代码(GENERATE CODE)
    • 当用户完成CubeMX的所有配置后,点击GENERATE CODE就可以生成初始化代码以及工程框架。
  • 功能标签页
    • 引脚分配及外设和中间件配置(Pinout&Configuration)
    • 系统时钟配置(Clock Configuration)
    • 工程设置 (Project Manager)
    • 系统功耗估算 (Tools)
      • 当用户的应用与低功耗相关时,可以进行Tools标签页的设置,而一般的应用只需要进行前三个功能标签页设置即可。

在这里插入图片描述

  • Pinout&Configuration
    • 类别栏,用于外设及中间件配置
    • 芯片引脚图,用于引脚分配
      • 在芯片引脚图上用不同的颜色,来代表了引脚的功能,比如电源用黄色来表示,复位引脚和BOOT引脚用卡其色来表示,GPIO引脚用灰色来表示(复位状态)
    • 放大/缩小/旋转缩略图

在这里插入图片描述

  • 查找引脚
    • 用引脚搜索框来快速定位我们所需要进行分配的引脚。
    • 在引脚搜索框输入要分配的引脚名称(例如PA5),对应引脚将会闪烁.

在这里插入图片描述

  • 选择引脚功能
    • 单击PA5将弹出PA5引脚所用有的引脚功能,选择GPIO_Output.
    • 此时引脚将变为亮绿色并且引脚的标签将显示为GPIO_Output.

在这里插入图片描述

外设配置

  • System Core:用于配置GPIO、时钟源、中断系统以及其他系统相关的外设
  • Analog:用于配置模数转换器(ADC)和数模转换器(DAC)
  • Timers:用于配置定时器和实时时钟外设
  • Connectivity:用于配置I2C、SPI和UART等连接外设
  • Multimedia:用于配置I2S等音频数据传输外设
  • Computing:用于配置CRC校验外设
  • Middleware:用于配置RTOS和GUI等中间件

在这里插入图片描述

  • 配置时钟模式
    • 在System Core找到RCC,点击RCC进入时钟模式配置窗口。
      • 在配置窗口的上方有两个箭头,可以展开或收起配置窗口
    • 时钟模式的配置一共有三种选项
      • Disable:内部时钟(HSI和LSI 片内的RC振荡器提供时钟信号)
        • 一般存在5%左右的误差,一般不选用
      • BYPASS Clock Source:旁路时钟 (外部的时钟信号作为时钟源)
      • Crystal/Ceramic Resonator:晶振/陶瓷振荡器 (外部的振荡电路产生时钟信号)
    • 本次不使用实时时钟模块,故对于LSE(32.768KHZ)不进行设置。
    • 完成时钟模式配置之后,对应的引脚将变为亮绿色,同时引脚的功能将设置为OSC_IN和OSC_OUT

在这里插入图片描述

  • 配置调试接口
    • 在System Core找到SYS,点击SYS进入调试配置窗口。
    • 使用Serial Wire(串行调试接口 依据使用的仿真器情况选择)
    • 此时对应的调试接口引脚,将变为亮绿色,引脚功能将变为SWDIO和SWCLK,作为调试接口的数据引脚和时钟引脚

在这里插入图片描述

  • 配置GPIO
    • 在System Core找到GPIO,点击GPIO进入GPIO配置窗口。
    • 选择GPIO标签页,在出现的GPIO列表中选择PA5,单击PA5,将进入PA5引脚配置窗口。

在这里插入图片描述

  • 配置GPIO参数
    • 初始电平 (GPIO output level)
    • 引脚模式 (GPIO mode)
    • 上/下拉电阻 (GPIO Pull-up/Pull-down)
    • 引脚速度 (Maximum output speed)
    • 引脚名称 (User Label)

在这里插入图片描述

时钟配置

  • Clock Configuration
    • 在这个标签页中以时钟树的形式完整地展示了STM32微控制器的时钟系统,方便用户快速了解STM32微控制器的时钟系统。

在这里插入图片描述

  • 时钟源模块
    • 外部低速时钟LSE:32.768KHz
      • 主要提供给片内的RTC实时时钟
      • 由于在之前的外设配置中我们没有配置LSE,因此这里显示灰色。
    • 内部低速时钟LSI:32KHz
      • 主要提供给片内的RTC实时时钟模块和看门狗模块
    • 内部高速时钟HSI:16MHz
      • 主要提供给系统时钟使用
    • 外部高速时钟HSE:
      • 振荡模式:4MHz~26MHz晶振
      • 旁路模式:1MHz~50MHz信号
        • 直接接入外部的1MHz~50MHz时钟信号作为时钟源
      • 主要提供给系统时钟使用

在这里插入图片描述

  • 时钟配置步骤
    • 修改时钟源频率
      • 选择外部高速(HSE)时钟作为时钟源,并修改时钟源频率
    • 选择锁相环输入时钟
      • 选择锁相环输入时钟为HSE
    • 选择系统时钟源
      • 选择PLLCLK为系统时钟源
        • 锁相环输出的时钟精度更高,稳定性更好
    • 设置HCLK时钟频率
      • 一般设置为系统最高支持的主频

在这里插入图片描述

工程配置

  • Project Manager
    • Project 工程管理
    • Code Generator 代码生成
    • Advanced Settings 高级设置

在这里插入图片描述

  • 工程管理
    • 工程名称
    • 工程路径
      • 完成工程名称和工程路径设置后,将自动在CubeMX文件夹下新建一个名为Demo的文件夹
    • 选择IDE
      • MDK-ARM V5(Keil 5)

在这里插入图片描述

在这里插入图片描述

  • 代码生成设置
    • 库函数的设置
      • 复制所有的库到用户的工程中
        • 需要经常查阅库函数的源代码,故需要复制所有库
      • 复制必要的库到用户的工程中
      • 不进行库的复制,而是将库作为引用参考
    • 生成文件设置
      • 片内外设初始化将采用独立的.c/.h文件完成
    • HAL库设置
      • 将所有没有使用的引脚设置为模拟功能,可以优化系统功耗
      • 使能断言语句,提升程序健壮性,同时代码量也会增加
    • 模板设置

在这里插入图片描述

  • 高级设置
    • 对片内的外设所使用的库函数进行选择,可以选择HAL库或者LL库,默认选择HAL库
    • 在Function Name中列出了由CubeMX所生成的外设初始化函数的名称,比如MX_GPIO_Init就是对GPIO进行初始化的函数
    • 如果用户不想使用由CubeMX生成的初始化函数,可以在Not Generate Function Call中勾选对应的函数。(是否使用CubeMX所生成外设初始化函数)

在这里插入图片描述

  • 生成工程
    • 点击GENERATE CODE就可以生成基于MDK-ARM集成开发环境的工程
    • 正确生成工程之后,将弹出一个对话框
      • 如果工程文件未打开则选择“Open Project”,之后就会转到Keil5
      • 如果工程已打开则选择“Close”

在这里插入图片描述

参考的成电应电科协 觉得老师讲得很好 就记下来了

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

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

相关文章

如何科学评价视频生成模型?AIGCBench:全面可扩展的视频生成任务基准来了!

AIGC领域正迅速发展,特别是在视频生成方面取得了显著进展。本文介绍了AIGCBench,这是一个首创的全面而可扩展的基准,旨在评估各种视频生成任务,主要关注图像到视频(I2V)生成。AIGCBench解决了现有基准的局限…

苹果显示连接iTunes是什么意思?你知道吗?答案来了!

相信使用苹果手机的小伙伴都听说过iTunes软件,但是可能还有小部分人不知道iTunes是什么,以及苹果设备上显示连接itunes是什么意思。对于使用iTunes进行数据备份、恢复等操作的用户来说,出现这个提示意味着您的苹果设备已经与电脑成功连接&…

vue-springboot基于java的实验室安全考试系统

本系统为用户而设计制作实验室安全考试系统,旨在实现实验室安全考试智能化、现代化管理。本实验室安全考试管理自动化系统的开发和研制的最终目的是将实验室安全考试的运作模式从手工记录数据转变为网络信息查询管理,从而为现代管理人员的使用提供更多的…

【Docker基础一】Docker安装Elasticsearch,Kibana,IK分词器

安装elasticsearch 下载镜像 查看版本:Elasticsearch Guide [8.11] | Elastic # 下载镜像 docker pull elasticsearch:7.17.16 # 查看镜像是否下载成功 docker images创建网络 因为需要部署kibana容器,要让es和kibana容器互联 # 创建一个网络&…

并发(10)

目录 61.ReentrantReadWriteLock底层读写状态如何设计的? 62.读锁和写锁的最大数量是多少? 63.本地线程计数器ThreadLocalHoldCounter是用来做什么的? 64.写锁的获取与释放是怎么实现的? 65.读锁的获取与释放是怎么实现的&…

【算法】递归算法理解(持续更新)

这里写目录标题 一、递归算法1、什么情况下可以使用递归?2、递归算法组成部分3、案例:求n的阶乘4、编写一个递归函数来计算列表包含的元素数。5、通过递归找到列表中最大的数字。6、通过递归的方式实现二分查找算法。 一、递归算法 递归(Rec…

浅谈LCD屏幕引脚定义识别

学习单片机,总要驱动LCD屏幕,但是对于没有引脚定义的LCD屏幕该如何应对? 本人研究不深,只谈体会。 比如下面这款屏幕 一、第一种方法 百度大法查引脚定义。查询条件可以是FPC上的丝印,或者是屏幕的尺寸,引脚…

sublime如何取消运行代码状态

sublime如何取消运行代码状态 解决方案待续、更新中 解决方案 1 顶部取消: 工具-----取消编译 这个看自己编译器sublime取消编译是否可用,可用则用 ,否则使用下面方法 2 底部栏取消–如图所示: 取消成功: 待续、更新中 ————————————————————— 以上就…

2024前端炫酷源码分享(附效果图及在线演示)

分享10款非常有趣的前端特效源码 其中包含css动画特效、js原生特效、svg特效以及小游戏等 下面我会给出特效样式图或演示效果图 但你也可以点击在线预览查看源码的最终展示效果及下载源码资源 GSAP-火箭动画特效 GSAP 火箭动画 当氮气充足的情况下 火箭会冲出 并继续飞行 图片…

【Java】设计模式之顺序控制

实际开发中,有时候一些场景需求让多个线程按照固定的顺序依次执行。这个时候就会使用这种模式。 这种模式说白了,就是给线程设定不同的条件,不符合条件的话,就算线程拿到锁也会释放锁进入等待;符合条件才让线程拿到锁…

【解决方案】电能质量在线监测装置和防孤岛保护装置在特斯拉工厂分布式光伏项目的应用

摘要: 随着全球对可再生能源的关注度不断提高,分布式光伏发电系统在近年来得到了广泛应用。分布式光伏发电系统具有环保、灵活等优势,能够有效地缓解能源短缺和环境污染问题。同时,电能质量在线监测装置和防孤岛保护装置在分布式…

leetcode:412. Fizz Buzz(python3解法)

难度:简单 给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中: answer[i] "FizzBuzz" 如果 i 同时是 3 和 5 的倍数。a…

开心自走棋:使用 Laf 云开发支撑数百万玩家

先介绍一下开心自走棋 开心自走棋是一款剑与魔法的烧脑自走棋游戏。以著名的魔幻世界观为蓝本,采用了轻松可爱的画面风格,精致细腻的动画和特效来还原魔兽之战。 现在市面上自走棋游戏多是 PvP 玩法为主,而开心自走棋是以 PvE 玩法为主的&a…

刷了四百道算法题,我在项目里用过哪几道呢?

大家好,我是老三,今天和大家聊一个话题:项目中用到的力扣算法。 不知道从什么时候起,算法已经成为了互联网面试的标配,在十年前,哪怕如日中天的百度,面试也最多考个冒泡排序。后来,…

VTK将二维图像向三维空间中无参数化的曲面表面进行纹理映射(含代码)

实现纹理映射主要是建立纹理空间与模型空间、模型空间与屏幕空间之间的映射关系(见图 6-28): 其中纹理空间可以定义为u-v 空间,每个轴标范围为 (0.1)。其中对于一个纹理图像,其左下角 v 标为 0.0),右上角标为 1.1)。而对于简单的参…

假设与灵敏度分析

灵敏度分析 关系究竟有多敏感,就要进行灵敏度分析 如果你改变了系统参数后,引起这个模型(公式)输出的变化的程度不大,则说明你的模型稳定性较强(即灵敏性较差),反之则反&#xff01…

【Python期末】动态爬取电影Top250数据可视化处理(有GUI界面/无数据库)

诚接计算机专业编程作业(C语言、C、Python、Java、HTML、JavaScript、Vue等),10/15R左右,如有需要请私信我,或者加我的企鹅号:1404293476 本文资源:https://download.csdn.net/download/weixin_47040861/88713693 目录…

简析云能耗管理系统在某高校建筑系统平台的设计与应用

叶根胜 安科瑞电气股份有限公司 上海嘉定 201801 摘要:根据本项目,依托某学院电能计量管理系统、供水计量监督系统、供热计量管理系统等基础平台,制定了高校建筑能耗综合管理系统平台应用的总体框架和方案。该系统可以实时监控、统计能耗和…

https配置证书

HTTPS 基本原理 https 介绍 HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer),其实 HTTPS 并不是一个新鲜协议,Google 很早就开始启用了,初衷是为了保证数据安全。 国内外的大型互联网…

STM32CubeMX教程20 SPI - W25Q128驱动

目录 1、准备材料 2、实验目标 3、实验流程 3.0、前提知识 3.1、CubeMX相关配置 3.1.1、时钟树配置 3.1.2、外设参数配置 3.1.3、外设中断配置 3.2、生成代码 3.2.1、外设初始化调用流程 3.2.2、外设中断调用流程 3.2.3、添加其他必要代码 4、常用函数 5、烧录验…