STM32学习HAL库

一、如何使能配置引脚为GPIO模式

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

二、使用CubeMX生成工程

1.CubeMX生成的前面三步

在这里插入图片描述
在这里插入图片描述为什么前面要先设置引脚输出电平为低电平,用这个函数(HAL_GPIO_Init)把引脚配置成输出之后它瞬间就会输出一个电平,是输出高电平还是低电平。在前面先设置成一个默认的状态,事先调整你的数值为低电平,当后面设置引脚为输出引脚时,就知道了输出低电平。
CubeMX帮我吗把前面的三步全部做好了。只需要自己做第四步。

后续还可以继续使用CubeMX继续生成代码,不想自己写的代码被破环,就要把代码写在指定的区域,用户代码开始(USER CODE BEGIN),用户代码结束(USER CODE END)。
在这里插入图片描述

2.查看HAL库手册

如下图所示第一个是指那组引脚,第二个是指那个引脚号,第三个是引脚输出高低电平
在这里插入图片描述
找到控制引脚高低的函数,第一步找到GPIO Generic Driver(通用驱动程序)
在这里插入图片描述
第二步找到相关的API,在双击跳转过去。
在这里插入图片描述
在这里插入图片描述

3.也可通过Keil去查看控制GPIO引脚高低电平函数

第一步点开gpio.c,找到stm32f1xx_hal_gpio.h,双击点击进入,
在这里插入图片描述
第二步,点击Functions,在点击stm32f1xx_hal_gpio.c就能够看到WritePin函数,在双击一点就能够看到函数和函数的用法
在这里插入图片描述
在这里插入图片描述

4.想知道引脚如何输出高低电平

如图所示,选中按F12或者右键选择图中的位置跳转到一个枚举类型
在这里插入图片描述
在这里插入图片描述

硬石YS-F1Pro 开发板开发手册(HAL ) STM32 入门系列教程 STM32 Cube 是一个全面的软件平台,包括 ST 产品的每个系列, ( 如 STM32Cube_F1 是针对 STM32F1 系列)。平台包括了 STM32Cube 硬件抽象层(HAL) 和一套中间组件(RTOS,USB,FS,TCP 等等)。 STM32Cube 是由 ST 公司原创倡议,旨在减少开发负担、时间和费用,为开 发者提供轻松的开发体验。 STMCube 覆盖了 STM32 全系列。 其中 STM32CubeMX 是上位机配置软件,可以根据使用者的选择生成底层初始化代码。 硬件抽象层 (HAL), 便是 CubeMX 配套的HAL 屏蔽了复杂的硬件寄存器操作, 统一了 外设的接口函数( 包含 USB/以太网等复杂外设),代码结构强壮, 已通过 CodeSonar 认证。 同时, HAL 还集成了广泛的例程,可以运行在不同意法半导体 的开发板上。 YS-F1Pro 开发板是硬石团队研发的针对 STM32F103 芯片的综合性实验测试 平台,开发板几乎囊括了芯片所有的外设,这对新手入门是非常好的学习平台, 开发板几乎所有芯片采购来着嘉立创平台,芯片质量有保证, 这与同行还是有很 大区别的。 YS-F1Pro 开发板是一款性价比极高的 STM32 开发板, 接口齐全,我们 特意添加了电机控制部分接口,包括舵机、步进电机、有刷电机、无刷电机控制 接口。 本文档的一个最重要目标是让完全小白都可以轻松愉快的入门学习STM32, 最终掌握 STM32 的基本编程方法,学会将 STM32CubeMX 应用到自己 DIY 应用 中去
<think>好的,我现在需要回答用户关于STM32 HAL和标准的区别以及学习建议的问题。首先,我得回顾一下用户提供的引用资料,确保我的回答准确并符合这些资料的内容。 用户提到了三个引用,分别是关于HAL和标准的对比、教程系列以及HALSTM32CubeMX的学习教程。根据这些信息,我需要整理两者的主要区别,并给出学习建议。 首先,我需要明确HAL和标准的设计目标。引用[2]指出,HAL是为了跨STM32系列兼容性而设计的,支持不同型号的芯片,而标准主要针对特定系列。这一点很重要,因为用户可能关心未来项目的可扩展性。 接下来是架构差异。HAL采用分层结构,硬件抽象层和用户应用层分离,而标准直接操作寄存器。这意味着HAL更抽象,可能对新手更友好,但执行效率可能较低。而标准更接近硬件,适合需要精细控制的场景。 代码可移植性方面,HAL因为抽象层次高,跨系列移植更容易,而标准需要较多修改。这对于需要更换芯片型号的用户来说是一个关键点。 关于开发工具,HAL配合STM32CubeMX生成代码,可视化配置,而标准需要手动配置。CubeMX可以简化初始化过程,减少错误,这对初学者很有帮助。 性能和资源占用方面,HAL由于层数多,可能效率较低,代码体积大。标准更高效,适合资源紧张的项目。需要根据项目需求权衡。 然后是学习建议。用户可能刚开始学习,需要考虑学习曲线。引用[3]提到,HAL适合新手,因为CubeMX自动生成代码,减少底层知识的需求。而标准适合希望深入理解寄存器的人。因此,根据用户的目标,如果是快速开发,HAL更合适;如果想深入底层,标准更好。 实际应用场景方面,引用[1]中的教程涉及蜂鸣器、按键控制等外设,使用两种对照学习可能更有效。建议用户结合具体项目需求选择,或者两者都学,增强理解。 最后,生成相关问题,帮助用户进一步探索。问题可能涉及两者的具体外设驱动差异、CubeMX的使用方法、项目中的选择依据等。 需要确保回答结构清晰,分点列出区别和建议,使用中文,并正确引用资料中的信息。同时,检查LaTeX格式是否符合要求,如行内公式用$...$,独立公式用$$...$$,但当前问题不涉及数学公式,可能不需要使用。不过,用户给的示例中有代码块,我需要正确使用代码块的格式。 总结,我需要将区别分为设计目标、架构、可移植性、开发工具、性能等几个方面,学习建议则根据用户背景和项目需求来推荐,并提供相关问题供用户参考。</think>### STM32 HAL与标准对比及学习建议 #### 一、核心差异对比 1. **设计目标** - **HAL**:强调跨系列兼容性(如F0/F1/F4等),通过硬件抽象层统一API接口[^2]。 - **标准**:专注于特定系列(如F1系列),直接映射寄存器操作,代码更贴近硬件[^2]。 2. **架构设计** - **HAL**:分层架构(硬件抽象层+应用层),封装复杂初始化流程(如时钟树配置),通过STM32CubeMX生成初始化代码[^3]。 - **标准**:扁平化设计,提供寄存器级操作函数(如`GPIO_SetBits()`),需手动编写初始化代码[^1]。 3. **代码效率对比** ```c /* 标准GPIO控制示例 */ GPIO_SetBits(GPIOA, GPIO_Pin_5); // 直接操作寄存器[^1] /* HALGPIO控制示例 */ HAL_GPIO_WritePin(GPIOA, GPIO_Pin_5, GPIO_PIN_SET); // 通过中间层函数 ``` HAL函数调用层级更多,代码体积通常增加20%-30%[^2]。 4. **开发工具支持** - **HAL**:强制依赖STM32CubeMX工具,支持图形化配置时钟、外设等参数[^3]。 - **标准**:仅需标准开发环境(如Keil/IAR),配置依赖开发者手动完成[^1]。 #### 二、学习路径建议 1. **新手入门推荐路径** **步骤1**:通过STM32CubeMX生成HAL工程,快速实现LED闪烁、串口通信等基础功能[^3]。 **步骤2**:对比分析生成的HAL代码与标准实现(如GPIO控制时序),理解底层寄存器操作原理[^1]。 **步骤3**:使用HAL完成综合项目(如超声波测距+蜂鸣器报警),掌握中断、DMA等高级特性。 2. **进阶学习建议** - **寄存器级开发**:选择标准实现外设驱动(如红外传感器数据采集),结合《Cortex-M3权威指南》理解内核机制[^1]。 - **混合开发模式**:在HAL工程中嵌入标准驱动关键外设(如高精度定时器),兼顾开发效率与性能优化。 #### 三、选择策略 | 评估维度 | HAL适用场景 | 标准适用场景 | |-----------------|-----------------------------|-------------------------------| | 项目周期 | 短周期快速原型开发 | 长期维护的稳定产品 | | 硬件资源 | Flash > 128KB的芯片 | Flash < 64KB的低成本芯片 | | 团队能力 | 嵌入式应用层开发人员 | 资深固件工程师 | | 外设复杂度 | 需配置复杂外设组合(如USB+ETH) | 简单外设控制(GPIO/UART) | ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值