STM32 新建寄存器版本MDK工程简要步骤

新建工程文件夹

新建一个工程根目录文件夹,并在该文件夹里新建D/M/O/P/U文件夹。

  • Drivers:存放与硬件相关的驱动层文件
  • Middlewares:存放正点原子提供的中间层组件文件和第三方中间层文件
  • Output:存放工程编译输出文件
  • Projects:存放MDK工程文件
  • User:存放HAL库用户配置文件、main.c、中断处理文件以及分散加载文件

Drivers文件夹

  • BSP:存放开发板板级支持包驱动代码,如各种外设驱动
  • CMSIS:存放CMSIS底层代码,如启动文件(.s文件)等
  • SYSTEM:存放正点原子系统级核心驱动代码

在这里插入图片描述
Projects文件夹
该文件夹用于存放编译器(MDK、IAR等)工程文件,为了方便区分,在该文件夹下新建:MDK-ARM文件夹,用于存放MDK的工程文件。

  • DebugConfig:用于存放调试设置信息文件(.dbgconf),不可删除!
  • Listings:用于存放编译过程产生的链接列表等文件
  • Objects:用于存放编译过程产生的调试信息、.hex、预览、.lib文件等

魔术棒设置

在这里插入图片描述
设置全局宏定义:STM32F103xE,用于定义所用STM32型号,在stm32f1xx.h里面会用到该宏定义。

设置优化等级为-O0,可以得到最好的调试效果。
勾选C99模式,即使用C99C语言标准。

AC5和AC6编译器对比

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

CMSIS

CMSIS(微控制器软件接口标准):Cortex Microcontroller Software Interface Standard,是由ARM和其合作的芯片厂商(ST、NXP)、软件工具厂商(KEIL、IAR),共同制定的标准。

在这里插入图片描述

  1. 用户层(用户代码)
  2. 中间层(CMSIS)
  3. 硬件层

HAL库简介

ST公司为了方便用户开发STM32芯片开发,提供了三种库:

  1. 标准外设库(Standard Peripheral Libraries)
  2. HAL库(硬件抽象层):Hardware Abstraction Layer
  3. LL库:Low Layer

不同方式的优缺点:

  1. 直接操作寄存器:执行效率高、时间成本高
  2. 标准库:F0/1/2/3/4L1,目前已停止维护
  3. HAL库:全系列兼容,ST目前主推的库,兼容性、易移植性
  4. LL库:全系列兼容,与HAL库捆绑发布,轻量级,效率高,不匹配部分复杂外设

STM32Cube固件包

STM32Cube固件包是ST公司根据CMSIS开发的固件包。
Drivers文件夹里又包含三个文件夹:

  • BSP:板级支持包,用于适配ST官方的开发板(可参考)
  • CMSIS:符合CMSIS的组件,包括:DSP库、Cortex-M内核及其设备文件、微控制器专用头文件、启动文件、专用系统文件等
  • STM32F1xx_HAL_Driver:HAL库外设驱动源码,包括F1系列HAL库源文件和头文件

CMSIS标准规定软件包目录

在这里插入图片描述

  • Driver:CMSIS驱动程序外设接口API的头文件
  • Include:CMSIS-Core(Cortex-M)和CMSIS-DSP需要包括的头文件等

Device和Include文件夹的关键文件介绍

  • stm32f1xx.h:是所有F1系列的顶层头文件,通过条件编译来包含某个芯片的头文件,定义通用的枚举类型,定义通用的宏定义。
  • stm32f103xe.h:包含中断编号定义、外设寄存器结构体类型定义、寄存器映射、寄存器位定义、外设判定
  • system_stm32f1xx.c/.h:定义了系统初始化函数SystemInit和系统时钟更新函数
  • startup_stm32f103ex.s:大容量F103系列芯片的启动文件

HAL库文件夹结构

在这里插入图片描述

  • HAL库和LL库驱动源码
  • 用户手册

HAL库文件介绍

  • stm32f1xx_hal.c/.h:HAL库初始化、系统滴答、HAL库延时等相关函数
  • stm32f1xx_hal_conf.h:HAL库的用户配置文件,用于裁剪HAL库、配置晶振参数等
  • stm32hxx_hal_def.h:包含HAL库通用的枚举类型数据和宏定义
  • stm32f1xx_hal_cortex.h/.c:内核通用函数定义和声明,如NVIC、MPU、系统软复位、Systick,主要是对core_cm3.h文件的相关函数再次封装
  • stm32f1xx_hal_ppp.c/.h:任意外设驱动源码,PPP表示任意外设
  • stm32f1xx_hal_ppp_ex.c/.h:主要是存放外设的扩展功能的驱动源码,PPP表示任意外设
  • stm32f1xx_ll_ppp.c/.h:LL库驱动源码,在部分stm32f1xx_hal_ppp.c或stm32f1xx_hal_ppp_ex.c中会被调用

HAL库回调函数

HAL_PPP_MspInit()/_DeInit()
该函数主要用于存放外设使用到的GPIO、CLOCK、NVIC、DMA等初始化代码

HAL_PPP_ProcessCpltCallback()
由于外设中断或DMA中断调用,HAL库中断公共处理函数已经实现对中断标记位读取、判断和清除操作,用户只需要专注于中断逻辑功能的实现即可

HAL_PPP_ErrorCallback()
外设或DMA中断中发生的错误,用于发生错误处理

HAL库的用户配置文件(stm32f1xx_hal_conf.h)

  1. 裁剪HAL库外设驱动源码(不进行编译)
  2. 设置外部高速晶振频率
  3. 设置外部低速晶振频率

stm32f1xx_hal.c文件

HAL_StatusTypeDef HAL_Init(void)
{
	__HAL_FLASH_PREFETCH_BUFFER_ENBALE();//使能FLASH预取缓冲
	HAL_NVIC_SetPrioorityGrouping(NVIC_PRIORITYGROUP_2);/*配置中断优先级分组*/
	/*使用滴答定时器作为时钟基准,配置1ms滴答(时钟源为HSI)*/
	HAL_InitTick(TICK_INT_PRIORITY);
	HAL_MspInit();/* 初始化其它底层硬件(如果必要) */
	return HAL_OK;
}

设置全局宏定义:USE_HAL_DRIVER和STM32F103xE
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端学习笔记 | HTML5+CSS3静态网页制作的技巧(持续更新)

注:本文的css样式均使用less写法 1、字体居中 (1)先text-align:center;行内元素水平居中 (2)再line-heigh:(盒子高度);行内元素垂直居中 text-align: center;line-height: ( 30 / vw ); 2、盒子居中 情景1&#…

【AIGC风格prompt深度指南】掌握绘画风格关键词,实现艺术模仿的革新实践

[小提琴家]ASCII风格,点,爆炸,光,射线,计算机代码 由冰和水制成的和平标志]非常详细,寒冷,冰冻,大气,照片逼真,流动,16K 胡迪尼模拟火和水&#x…

MySQL数据引擎、建库及账号管理

目录 一、MySQL数据库引擎 1.1.MySQL常见数据库引擎 1.InnoDB(MySQL默认引擎) 2.MyISAM 3.MEMORY(Heap) 1.2.存储引擎查看 二、建库 1.默认数据库介绍 2.建库 3.查看数据库 4.删除数据库 三、账号管理 1.创建用户 1.创建用户并设置登陆密码…

Ryzen Controller 最新版本下载

Ryzen Controller 最新版本下载 GitLab中最新版本地址: Releases Ryzen Controller Team / Ryzen Controller GitLab 然后语言切换成简体中文,就可以愉快使用啦

Springboot多种方法处理静态资源:设置并访问静态资源目录

~目录嗷~ 静态文件application设置方法 配置详解编写配置优缺点 设置配置类方法 配置详解编写配置优缺点 总结 作者:Mintimate 博客:https://www.mintimate.cn Mintimate’s Blog,只为与你分享 静态文件 静态资源&…

FlinkSql 窗口函数

Windowing TVF 以前用的是Grouped Window Functions(分组窗口函数),但是分组窗口函数只支持窗口聚合 现在FlinkSql统一都是用的是Windowing TVFs(窗口表值函数),Windowing TVFs更符合 SQL 标准且更加强大…

uniapp 本地存储的方式

1. uniapp 本地存储的方式 在uniapp开发中,本地存储是一个常见的需求。本地存储可以帮助我们在客户端保存和管理数据,以便在应用程序中进行持久化存储。本文将介绍uniapp中本地存储的几种方式,以及相关的代码示例。 1.1. 介绍 在移动应用开发…

浅谈bypass Etw

文章目录 c#ExecuteAssemblybypass etw c# loader 一种是通过反射找到指定空间的类中method进行Invoke 另一种是通过EntryPoint.Invoke加载 反射加载 Assembly.Load()是从String或AssemblyName类型加载程序集,可以读取字符串形式的程序集 Assembly.LoadFrom()从指定…

elk之倒排索引

写在前面 本文看下es的倒排索引相关内容。 1:正排索引和倒排索引 正排索引就是通过文档id找文档内容,而倒排索引就是通过文档内容找文档id,如下图: 2:倒排索引原理 假定我们有如下的数据: 为了建立倒…

第21讲:动态内存管理

1.为什么要有动态内存分配 2.malloc和free 3.calloc 4.realloc 5.笔试题 6.总结c/c中程序内存区域划分 1.为什么要有动态内存分配 为了调整申请的空间大小,使程序员可以申请和释放空间,提高程序的灵活性 2.malloc和free 作用:分配一块…

安装Pytorch中的torchtext之CUDA版的正确方式

安装Pytorch和torchtext: Previous PyTorch Versions | PyTorch Installing previous versions of PyTorchhttps://pytorch.org/get-started/previous-versions/ 上面的命令如下: pip install torch2.1.2 torchvision0.16.2 torchaudio2.1.2 --index-…

单片机学习笔记---串口通信(2)

目录 串口内部结构 串口相关寄存器 串口控制寄存器SCON SM0和SM1 SM2 REN TB8和RB8 TI和RI 电源控制寄存器PCON SMOD 串口工作方式 方式0 方式0输出: 方式0输入 方式1 方式1输出。 方式1输入 方式2和方式3 方式2和方式3输出: 方式2和…

Nacos(2)

Nacos部署 服务器端docker部署(需要服务器安装好docker) 导入sql文件到服务器编写nacos配置文件custom.env(示例如下,改为自己服务器nacos相关信息) PREFER_HOST_MODEhostname MODEstandalone SPRING_DATASOURCE_PL…

CentOS7如何安装宝塔面板并实现固定公网地址远程访问

文章目录 一、使用官网一键安装命令安装宝塔二、简单配置宝塔,内网穿透三、使用固定公网地址访问宝塔 宝塔面板作为建站运维工具,适合新手,简单好用。当我们在家里/公司搭建了宝塔,没有公网IP,但是想要在外也可以访问内…

代码随想录算法训练营第12天—二叉树01 | ● 理论基础 ● *递归遍历 ● *迭代遍历

理论基础 文章讲解:https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 二叉树是一种数据结构,常用于递归场景二叉树:binary tree,每个节点最多有两个子节点(分支&a…

获取旁站 / C 段:第三方网站(附链接)

一、介绍 1.1 旁段 在网络安全的上下文中,"旁段"(Pivot)是指攻击者通过入侵一个网络中的一台计算机,然后利用该计算机作为跳板(或者称之为“旁道”)来访问其他计算机或网络资源的行为。 攻击者…

伦敦金交易平台:了解交易背后的世界

伦敦金交易平台是全球金融市场中备受关注的重要平台之一。作为国际金融中心,伦敦汇聚了众多金融机构和投资者,其金交所成为全球最大的现货黄金市场。在这个繁荣蓬勃的市场中,交易活跃,投资机会多样,吸引了众多投资者前…

DDoS攻击激增,分享高效可靠的DDoS防御方案

当下DDoS攻击规模不断突破上限,形成了 "网络威胁格局中令人不安的趋势"。专业数据显示,对比2022年上半年与2023年上半年,所有行业的DDoS攻击频率增加了314%。其中零售、电信和媒体公司遭受的攻击规模最大,三个垂直行业的…

手把手教你激活FL Studio 21.2.2.3914中文破解版2024年图文激活教程以及如何设置中文language

FL Studio 21.2.2.3914软件简介 fl studio 21.2.2.3914中文破解版作为一款极具创意性的音乐软件工作站软件,FL Studio已经成为了许多音乐制作人和音乐爱好者的首选。最新的FL Studio 21.2.2.3914中文破解版的发布,无疑将会引起更多人的关注。 ​ FL St…

NC6X单点登录设计文档说明

前言 因为业务场景需要,第三方系统有些工作需要经常到NC系统里做,如果每次去NC系统做业务单据,都需要反复登录,导致客户使用体验不是很好,所以需要开发实现从第三方系统单点登录到NC系统,提高客户满意度。 …
最新文章