【STM32学习】搭建一个简单的 keil5 工程

2023-10-26

一、安装 pack 支持包

pack是支持包文件,当你的板子连接到电脑时,keil5 怎么知道你的板子是哪个型号的,这就需要用到 pack 文件了。Keil 官方下载pack文件的地址:download | device pack

我这里使用的是 STM324 系列

随后直接一键下载,下载完毕后双击安装,它会自动检测你电脑上的keil软件的安装目录,然后自动安装。

后面你新建工程时,就会多出一个系列的选项

二、下载外设库

没有外设库的时候,我们需要一边看开发手册一边手动配置寄存器了,现在有了外设库,外设库封装了外设寄存器的操作,不必再手动配置寄存器,极大地提升了开发效率。

ST 官方外设库下载:STM32 Standard Peripheral Libraries - Products

不过这里可能需要先注册一下,注册流程比较简单,输入姓名和邮箱,然后在邮箱验证即可。整个过程花费的时间不会很长。

下载好以后就可以看到类似于下面的压缩包了,这里不光包含了外设库函数,也给了每种外设的操作示例。

 

三、搭建工程

搭建工程的关键是将一些必要文件引入到我们的工程中,至于我们的工程具体需要哪些文件,可以参考下面的工程结构图。

1、启动文件

程序运行之前需要先初始化运行环境

  • 堆栈初始化
  • 初始化中断向量表
  • 调用复位中断服务函数
  • 调用 SyStemInit 函数进行其他初始化
  • main 函数跳转

这一切的操作都由 启动文件 startup_stm32f40xx.s 文件来完成,一般 .s 文件用汇编编写。其中 SyStemInit 函数在 system_stm32f4xx.h 文件中,对应的源文件 system_stm32f4xx.c 只能在官方提供的Example中找到。

文件名 位置
startup_stm32f40xx.s Libraries—CMSIS—Device—ST—STM32F4xx—Source—Templates—arm
system_stm32f4xx.h Libraries—CMSIS—Device—ST—STM32F4xx—Include
system_stm32f4xx.c Project—STM32F4xx_StdPeriph_Examples—ADC—ADC_DMA

注意:如果是stm32f10x 系列,启动文件会带有后缀,后缀的意义如下

2、外设寄存器和外设库

stm32f4xx.h 中保存了 STM32 操作各个外设所需的寄存器地址。stm32f4xx.h 中包含的部分内容:

外设库包含了操作外设的具体函数实现。其中 misc.c 包含了一些内核操作,如修改中断向量表偏移,其余文件都是一些常见的外设操作具体实现。

为了更加方便的使用外设库,ST 在例程中给我们提供了一个文件 stm32f4xx_conf.h,该文件可以一次引入所有的外设。(如果后续要使用该头文件,需要添加宏 USE_STDPERIPH_DRIVER)

文件名 位置
stm32f4xx.h Libraries—CMSIS—Device—ST—STM32F4xx—Include
外设库

源文件:Libraries—STM32F4xx_StdPeriph_Driver—src

头文件:Libraries—STM32F4xx_StdPeriph_Driver—inc

stm32f4xx_conf.h Project—STM32F4xx_StdPeriph_Examples—ADC—ADC_DMA

3、内核寄存器

core_cm4.h 主要涉及到一些内核方面的配置。core_cmFunc.h、core_cmInstr.h、core_cmSimd.h是core_cm4.h 相关联的头文件

文件名 位置
core_cm4.h Libraries—CMSIS—Include

core_cmFunc.h

core_cmInstr.h

core_cmSimd.h

Libraries—CMSIS—Include

4、中断处理函数文件

stm32f4xx_it.c 文件包含了一些中断处理函数的具体实现,如SVC中断、总线错误中断。

文件名 位置

头文件:stm32f4xx_it.h

源文件:stm32f4xx_it.c

Project—STM32F4xx_StdPeriph_Examples—ADC—ADC_DMA

 

四、整理

现在大致了解了一个基本的工程需要哪些文件,下面就需要将这些文件分开存放,全堆到一起未免太乱了。

1、Start目录

这个目录下保存一些启动所需的文件,如 startup_stm32f40xx.s、system_stm32f4xx.h。除此之外,我们将一些平时不会改动的文件也放到这里。

2、Library 目录

该目录就用于保存外设库的头文件和源文件。这里直接把原本的 inc 和 src 目录拷贝过来了

3、User 目录

该目录下就保存 main 函数以及一些可能需要使用或者修改的文件

五、新建 Keil 工程中添加宏定义

如果要使用头文件 stm32f4xx_conf.h ,需要添加宏 USE_STDPERIPH_DRIVER

如果报错,可以双击跳转,下面这个错误是需要添加当前开发板型号的宏 STM32F40_41xxx

 

参考文章:

学习使用HAL库进行STM32软件开发 | 安装keil-MDK及STM32F4支持包 | 2022.4.5/星期二/天气晴_杨肉师傅的博客-CSDN博客

下载stm32f4xx标准外设库_stm32f4支持包下载_枫中眸zc的博客-CSDN博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【STM32学习】搭建一个简单的 keil5 工程 的相关文章

  • 24分+的医药顶刊带你学习表观组学解析超级热点“肿瘤耐药”的机制

    对癌症患者采用治疗干预时获得性耐药是转移性癌症复发的主要原因 此前 获得性耐药发展的研究主要集中在识别耐药肿瘤中常见的基因突变 越来越多的证据表明 在永久性获得性耐药出现之前 癌症中存在一种表观遗传调控的可逆耐药状态 这种可逆状态可能会导致
  • Jmeter 性能压测-常遇问题与解决技巧

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 2k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • RT-Thread 内核基础(五)

    使用static修饰全局变量作用 限制作用域 如果全局变量前面加上 static 关键字 那么该变量的作用域将被限制在声明它的源文件中 即它将成为一个文件作用域的静态变量 其它源文件无法访问这个变量 这对于控制变量的可见性和避免命名冲突是有
  • 小学二三年级入门信奥赛,如何从Scratch进入C++的学习

    小学生几年级适宜开始学习C 这是讨论的比较热烈 也是比较热门的话题 小学生适宜几年级开始学C 小学生适宜几年级开始学C CSDN博客 simple happiness 信息学规划 北京二年级学生图形化过二级想往信奥靠拢如何准备 信息学规划
  • 为什么这么多人自学黑客,但没过多久就放弃了(掌握正确的网络安全学习路线很重要)

    网络安全是一个 不断发展和演变 的领域 以下是一个 网络安全学习路线规划 旨在帮助初学者快速入门和提高自己的技能 基础知识 网络安全的 基础知识 包括 网络结构 操作系统 编程语言 等方面的知识 学习这些基础知识对理解网络安全的原理和技术至
  • 为什么C语言没有被C++所取代呢?

    今日话题 为什么C语言没有被C 所取代呢 C 的复杂编译器实现和嵌入式平台的限制 使C语言保持了其地位 嵌入式系统多数仅支持C 即使支持C 也会限制某些功能 尤其是异常处理和RTTI 此外 C 引入的功能增加了二进制文件大小和运行时内存占用
  • 会stm32有机会进大公司吗?

    今日话题 会stm32有机会进大公司吗 我本科期间参与了飞思卡尔和电赛等比赛 使用过多种单片机 但渐渐发现单片机只是其中的一小部分 不要过分迷恋所谓的单片机基础和技巧 更值得深入研究的是C语言 如果你对此感兴趣 我愿意无偿分享一个资源包 其
  • STM32F4XX的12位ADC采集数值超过4096&右对齐模式设置失败

    文章目录 一 前言 二 问题1 数值超过4096 三 问题1的排错过程 四 问题2 右对齐模式设置失败 五 问题2的解决方法 5 1 将ADC ExternalTrigConv设置为0 5 2 使用ADC StructInit 函数 一 前
  • 太阳诱电 | 陶瓷电容器的静电容量相关

    陶瓷电容器的静电容量会因温度而变化吗 电容器的静电容量的温度特性是什么 陶瓷电容器的静电容量随周围的温度而变化 静电容量因温度而变化的现象 称为静电容量的温度特性 这是由于陶瓷电容器使用的材料造成的 也是所有陶瓷电容的常有现象 以下是本公司
  • for循环延时时间计算

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 之前做led点亮的实验 好像是被delay函数影响了 因为delay参数设置的不对
  • 【计算机毕业设计】精品课程在线学习系统

    如今社会上各行各业 都喜欢用自己行业的专属软件工作 互联网发展到这个时候 人们已经发现离不开了互联网 新技术的产生 往往能解决一些老技术的弊端问题 因为传统精品课程学习信息管理难度大 容错率低 管理人员处理数据费工费时 所以专门为解决这个难
  • 【VUE毕业设计】基于SSM的在线课堂学习设计与实现(含源码+论文)

    文章目录 1 项目简介 2 实现效果 2 1 界面展示 3 设计方案 3 1 概述 3 2 系统流程 3 3 系统结构设计 4 项目获取
  • 用CHAT写一份标题为职业教育教师教学能力提升培训总结

    CHAT回复 标题 职业教育教师教学能力提升培训总结 一 活动概述 本次由学校组织的职业教育教师教学能力提升培训于8月15日至8月20日顺利进行 来自全校的60位职业教育教师参与了此次培训 主讲人为享有盛名的教育专家马丁先生 二 培训内容与
  • 【GRNN-RBFNN-ILC算法】【轨迹跟踪】基于神经网络的迭代学习控制用于未知SISO非线性系统的轨迹跟踪(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 第1部分 2 2 第2部分
  • 手把手教你使用HarmonyOS本地模拟器

    我们通过下面的动图来回顾下手机本地模拟器的使用效果 本期 我们将为大家介绍HarmonyOS本地模拟器的版本演进 并手把手教大家使用HarmonyOS本地模拟器 一 本地模拟器的版本演进 2021年12月31日 经过一个版本的迭代优化 随D
  • STM32 Nucleo 上的上升沿中断多次触发

    我正在使用 STM32 NUCLEO F401RE 微控制器板 我有一个扬声器 经过编程 当向上 向下推操纵杆时 可以按设定的量改变频率 我的问题是 有时 通常 当向上 向下推动操纵杆时 频率会增加 减少多次 这意味着 ISR 正在执行多次
  • STM32 上的 ADC 单次转换

    我正在研究 STM32 F103x 上的 ADC 编程 并从最简单的情况 单次转换开始 测量内部温度传感器 连接到 ADC1 的值 并使用 USART 将其发送到 COM 端口 目标似乎很明确 但是当我尝试将源代码下载到闪存时 它不会向 C
  • STM32 上的位置无关代码 - 指针

    我已成功在 STM32 上构建并运行位置无关的代码 向量表和 GOT 已修补 一切正常 但我对这样的代码有问题 double myAdd double x return x 0 1 double ptrmyAdd double myAdd
  • STM32内部时钟

    我对 STM32F7 设备 意法半导体的 Cortex M7 微控制器 上的时钟系统感到困惑 参考手册没有充分阐明这些时钟之间的差异 SYSCLK HCLK FCLK 参考手册中阅读章节 gt RCC 为 Cortex 系统定时器 SysT
  • STM32F0、ST-link v2、OpenOCD 0.9.0:打开失败

    我在用着发射台 http www ti com ww en launchpad about htmlgcc arm none eabi 4 9 2015q2 为 STM32F0 进行编译 现在我想使用该集合中的 arm none eabi

随机推荐

  • IDEA的下载和使用安装

    一 IDEA的下载 IDEA下载地址 https www jetbrains com idea download section windows IDEA 分为两个版本 旗舰版 Ultimate 和社区版 Community 二 安装过程
  • 射频中的 S参数 总结

    S参数简介 S参数 也就是散射参数 是微波传输中的一个重要参数 S12为反向传输系数 也就是隔离 S21为正向传输系数 也就是增益 S11为输入反射系数 也就是输入回波损耗 S22为输出反射系数 也就是输出回波损耗 S参数作为描述线性无源传
  • typescript 基础类型注解

    TypeScript 基础类型 序号 数据类型 关键字 描述 1 任意 any 声明为 any 的变量可以赋予任意类型的值 2 数值 number 双精度 64 位浮点值 它可以用来表示整数和分数 3 字符串 string 一个字符系列 使
  • Qt中QPushButton设置按钮的文本位置

    特定样式 引言 解决方法 总结 引言 今天碰到一个动态创建的QPushButton添加到布局中 我需要设置按钮的文本距离边框的距离 按照以往自己设置的与边框的距离的方式设置的样式 没有起到任何作用 前提是 qss文件能正常加载 其它控件都正
  • Qt中对TCP粘包的处理

    当时用TCP协议传输数据时 经常出现粘包的现象 当服务器向客户端发送数据之后 客户端还没有接收数据的时候 这段时间数据在什么地方 1 服务器 服务器已经发出数据了 2 网线 数据应该在内存 怎么会在网线里面 又没有内存 3 客户端 是的 这
  • GoFrame框架入门教程一(下载框架)

    本地环境 1 Windows 2 go版本 1 17 3 编辑器 GoLand 2021 3 2 新建项目 Environment 处填写 GOPROXY https goproxy cn 使用 go mod文件管理项目包 module g
  • sqli-labs————less 22

    Less 22 简单测试 username admin password aaa 查看一下源代码如下
  • linux系统离线安装miniconda3 及创建python环境

    在linux系统中安装python开发环境 一般采取安装miniconda的方法 不建议安装anaconda miniconda是一个anaconda的轻量级 默认只有python跟conda 有时候出于安全性考虑 服务器不允许连接外网 因
  • STM32一键下载电路设计原理

    先放原理图 补充 图中的BOOT0通过10K的电阻接到地 再解释为什么这么设计 STM32启动方式 BOOT0和 BOOT1用于设置 STM32的启动方式 见下表 BOOT0 1 BOOT1 0 串口下载模式 BOOT0 0 BOOT1 X
  • 聚类(K-means)实现手写数字识别

    其他实现手写数字识别的方法 1 KNN实现手写数字识别 2 卷积神经网络 CNN 实现手写数字识别 3 全连接神经网络实现手写数字识别 4 聚类 K means 实现手写数字识别 2 实验数据是老师收集了所有人的手写数字图片 且经过处理将图
  • 使用checkpoint遇到的问题

    使用checkpoint时 警告使用checkpoint时 警告UserWarning None of the inputs have requires grad True 原因 使用checkpoint 不能放在第一个位置 或者说放在第一
  • 如何采用conda配置python虚拟环境

    文章目录 一 创建python虚拟环境 二 配置刚创建的虚拟环境 三 将虚拟环境配置到相应项目 一 创建python虚拟环境 首先选中要配置环境的文件 如下 在此处输入cmd按回车 此处我创建一个环境名为hands3dtext 环境版本为3
  • 机器人毕业设计题目推荐/康复机器人、(三、四、五、六度机器人)、焊接机器人、履带式搜救机器人、管道机器人、关节机器人、码垛机器人、焊接机器人、爬壁机器人、扫地机器人、喷涂机器人、搬运机器人……

    机器人毕业设计题目共有2000多套 部分列表如下 上肢康复机器人结构设计 全套 本科毕业设计 论文 CAD图纸 开题报告 任务书 三自由度机械手 工业机器人 说明书 CAD图纸 三自由度焊接机器人设计 毕业设计说明书 论文 12份CAD图纸
  • Windows下安装Qt5.12.8(1)

    一 下载 Qt5 12 8 Index of archive qt 5 12 5 12 8 下载其他版本将链接对应数字替换即可 windows下载 exe linux下载 run mac下载 dmg 二 安装 1 双击下载后的可执行程序 点
  • 虚拟机支持本地nvme ssd

    提起存储都是血泪史 不知道丢了多少数据 脑子首先想到的就是 你说啥 洗脑神曲 我就像那个大妈一样 千万个问号 hdd是啥 ssd又是啥 mbr是啥 gpt又是啥 primary partion是啥 logical partion又是啥 sa
  • java日志管理-学习(二)

    log4j Log4j是Apache的一个开源项目 通过使用Log4j 我们可以控制日志信息输送的目的地是控制台 文件 GUI组件 甚至是套接口服务器 NT的事件记录器 UNIX Syslog守护进程等 我们也可以控制每一条日志的输出格式
  • unity3d pivot与center local与global

    local是指的自身的坐标 global指的是世界坐标 假如一个物体没有父物体 即这个物体不是某个物体的子物体 或者父物体的坐标为 0 0 0 这时候local和global的坐标是一样的 local坐标是相对与父物体的坐标 假如有父物体
  • Latex公式编号: 多行公式多编号,多行公式单编号

    目录 多行公式多编号 多行公式单编号 编号居中 多行公式无编号 多行公式多编号 有的行没有编号 一行公式分多行写 情况 case 划分 大括号单编号 大括号多编号 提示 begin align 与 begin equation 不能同时使用
  • 瞧瞧苹果OS X如何干掉Linux

    原文地址 http www csdn net article 2012 08 28 2809270 osx killed linux 摘要 如果你去过Facebook或者其它一些创业类科技公司 你会发现随处可见的Mac 无论是CEO还是开发
  • 【STM32学习】搭建一个简单的 keil5 工程

    一 安装 pack 支持包 pack是支持包文件 当你的板子连接到电脑时 keil5 怎么知道你的板子是哪个型号的 这就需要用到 pack 文件了 Keil 官方下载pack文件的地址 download device pack 我这里使用的