您的位置:首页 > 财经 > 产业 > STM32HAL库开发笔记

STM32HAL库开发笔记

2024/12/23 15:19:39 来源:https://blog.csdn.net/qq_43701785/article/details/141027293  浏览:    关键词:STM32HAL库开发笔记

STM32基础篇:
本篇将分为如下章节:
1,本书学习方法
2,STM32 简介
3,开发环境搭建
4,STM32 初体验
STM32 基础知识入门5.
新建寄存器版本 MDK 工程6.
7,认识 HAL 库
新建 HAL 库版本 MDK 工程8 .
STM32 启动过程分析9 .
10,STM32CubeMX 简介
11,STM32 时钟系统
12,SYSTEM 文件夹简介

一:学习方法:
1.学习顺序
基本外设:GPIO输入输出、外部中断、定时器、串口
基本外设接口:SPI、IIC、WDG、FSMC、ADC/DAC、SDIO等
高级功能:UCOS、FATFS、freertos等一些应用

2.参考手册:硬件原理图、开发板参考手册、芯片手册。(这些文档需要多读,读很多遍的)

资料获取途径:正点原子官网、ST芯片官网

二:STM32简介:
STM32F103 基于ARM内核 32MCU cortex-M3内核
STM32的系列芯片、命名、选型、设计等成为高级工程师的时候再考虑,现阶段先学基础的(学习32位MCU,cortex-M3内核)

三:开发环境搭建
集成开发环境:keil; 仿真器:STlink 串口调试助手:选择一款自己喜欢的即可

开发环境的安装:
MDK keil5+所用芯片系列支持包 (keil使用破解软件安装密钥)(F103芯片的支持包)
仿真器驱动安装(STlink的驱动安装)
USB串口驱动安装(CH340 USB虚拟串口驱动)
仿真器驱动调试。(在魔法棒里面改一下仿真器就好)

四:STM32初体验:
keil软件

中间的编译按钮,表示编译当前工程项目文件,如果之前已经编译过了,则只会编译有改动的文件。所以一般第一次会比较耗时间,后续因为只编译改动文件,从而大大缩短了编译时间。该按钮可以通过 F7 快捷键进行操作。

右边的重新编译当前工程所有文件按钮,工程代码较多时全部重新编译会耗费比较多的时间,建议少用。

Code: 表示代码大小,占用 5442 字节。
RO-Data: 表示只读数据所占的空间大小,一般是指 const 修饰的数据大小。RW-Data: 表示有初值(且非 0) 的可读写数据所占的空间大小,它同时占用 FLASH(存放其初始值)和 RAM 空间。
ZI-Data: 表示初始化为 0 的可读写数据所占空间大小,它只占用 RAM 空间。
因此图 4.1.6 的提示信息表示:代码总大小(Porgram Size)为: FLASH 占用 5832 字节(Code+ RO + RW),SRAM 占用 1928 字节 (RW + ZI): 成功创建了 Hex 文件 (可执行文件,放在Output 目录下); 编译 0 错误,0 警告;编译耗时 2 秒钟。

output产生的中间文件: .map文件详细介绍(后续学习)
程序下载: 上位机flymcu不推荐, stlink直接下载

仿真器仿真调试程序(后续调试)

五:STM32基础知识
C语言基础知识、寄存器基础知识,STM32F103基础架构。

六:寄存器版本工程

DRIVER该文件夹下面存放驱动层代码,包括:
1,BSP:正点原子提供的板级支持包驱动代码(原HARDWARE文件夹下的代码),如:LED、BEEP、KEY、EXTI、TIMER、WDG…等
2,CMSISI:ARM提供的CMSIS代码(主要包括各种头文件和启动文件(.s文件),为了方便使用,减少占用空间,我们进行了精简)
3,SYSTEM:正点原子提供的系统文件, 包括delay.c、usart.c和sys.c,用于方便用户快速构建工程
system下:
1,delay文件夹:存放延时相关的驱动代码,支持在os下面使用。
2,sys文件夹:存放系统相关驱动代码,包括系统时钟初始化,IO口配置,中断管理等三部分内容。
3,usart文件夹:存放串口相关代码,支持printf,方便调试。

Middlewares该文件夹下面存放中间层组件代码,包括:
1,正点原子提供的中间层代码:USMART、MALLOC、TEXT、T9INPUT、PICTURE、GUI、MJPEG、各种ATK开头的LIB、NES、SMS、QR_ENCODE等
2,第三方中间层代码:FATFS、USB、LWIP、各种OS、各种GUI等
注意:该文件夹下面,至少要到USMART实验,才会存放代码进来,在此之前的例程,没有用到类似的代码,但是我们会预留该文件夹,方便后续工程使用。

Output 文件夹该文件夹用于存放编译器编译工程输出的中间文件,比如: .hex、.bin、.0 文件等等。这里不需要操作,后面只需要在 MDK 里面设置该文件夹为编译过程中间文件的存放文件夹就行。Projects 文件夹
该文件夹用于存放编译器(MDK、IAR 等)工程文件,我们主要用 MDK,为了方便区分,我们在该文件夹下新建:MDK-ARM 文件夹,用于存放 MDK 的工程文件

User 文件夹
该文件夹用于存放用户编写的代码,如: main.c 等

第七章:认识HAL库
HAL库 Hardware Abstraction Layer 硬件抽象层 ST公司提供的外设驱动代码的驱动库,用户只需要调用库的API函数,便可直接配置寄存器

CMSIS cortex controller sofrware interface standard 所有cortex芯片厂商的产品的软件接口标准化的标准

标准外设库(standard preipheral libraries)已经暂停支持
LL库(Low Layer)比HAL库更接近操作底层
学习中建议使用HAL库,学会调用其中的API函数(大大减少我们的开发时间,同时STM32CubeMX图形化软件配置工具)

HAL库驱动包
HAL库固件包获取途径: 已更新至此

HAL库框架结构

第八章:新建HAL库版本:

第九章:STM启动过程

第十章:STM32CubeMX

第十一章:STM32时钟配置

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com