精华内容
下载资源
问答
  • STM32的库函数使用手册,标准的使用手册中文的建议还是看英文版,HAL库的使用手册是英文版的 没找到中文
  • STM32HAL库函数用户手册(英文) Description of STM32F4xx HAL drivers
  • STM32F1系列的HAL函数,该函数还包括每一个外设的驱动描述和应用实例。通过使用本固件函数,无需深入掌握细节,用户也可以轻松应用每一个外设。因此,使用本固态函数可以大大减少用户的程序编写时间,进而...
  • 使用官方《stm32f1_hal库使用手册》文件,通过百度翻译制作,仅供参考,文本可编辑,翻译不靠谱的地方可以重新翻译。
  • STM32F1 HAL库手册原版

    2019-04-26 18:00:10
    STM32F1 HAL库手册原版,英文版,包含HAL和LL的使用例程。
  • 第一次弄STM32,觉着HAL库很好用,新手入门很快,文档里面有详细的函数使用描述
  • 包含STM32CubeMX中文使用手册STM32_f1的hal库,开发者可以使用两者共同开发,同步学习cube和hal
  • STM32 HAL 使用手册.pdf
  • STM32F1系列的固件函数,包含所有使用到的函数介绍,可在写程序时配置,比官方的更容易理解
  • STM32H7 HAL驱动英文版的用户手册; STMCubeTM 可降低开发人员的开发工作量、开发时间还有开发成本,使开发人员的生活更轻松; HAL驱动层提供了一组简单的通用多实例api来与上层(应用程序、和堆栈)交互。 ...
  • STM32 HAL LL 库手册

    2018-09-04 14:01:22
    The HAL drivers were designed to offer a rich set of APIs and to interact easily with the application upper layers.
  • STM32F1_HAL库使用手册

    2018-04-10 14:41:13
    STM32F1_HAL库使用手册 详细介绍说stm32最新库hal库和l
  • STM32F1系列的HAL库函数手册原版内容。根据库函数加速开发自己的产品。HAL库函数原版。Description of STM32F1 HAL and Low-layer drivers
  • stm32F7HAL库函数开发手册(英文原版),官网下载,有目录,有标签,内容可跳转,查询方便。HAL库开发必备。
  • STM32F4xx HAL库详解

    2018-08-30 10:09:36
    说到STM32HAL库,就不得不提STM32CubeMX,其作为一个可视化的配置工具,对于开发者来说,确实大大节省了开发时间。STM32CubeMX就是以HAL库为基础的,且目前仅支持HAL库及LL
  • 上传一份STM32的F4的HAL库使用手册,英文的。有需要就下载吧。
  • 适合想学习hal库的朋友
  • STM32F4xx系列官方资料包括固件手册(标准HAL库用户手册资料合集: 1-STM32官方手册.zip 2-STM32F4官方固件手册(标准) 3-HAL库用户手册.zip F1 Hal&LL文档.pdf F2 Hal&LL文档.pdf F3 Hal&LL文档.pdf...
  • STM32 HAL库开发教程

    2016-06-12 09:54:53
    STM32 HAL库开发教程,首家
  • STM32HAL库使用详解

    万次阅读 多人点赞 2020-07-15 11:13:51
    用户手册和固态函数按照以下章节所描述的规范编写。 1.1缩写 Table1 本文档所有缩写定义 缩写 外设/单元 ADC 模数转换器 BKP 备份寄存器 CAN 控制器局域网模块 DMA 直接内存存取控制器 EXTI 外部...

    1. 文档和库规范本

    用户手册和固态函数库按照以下章节所描述的规范编写。

    1.1缩写

    Table1 本文档所有缩写定义

    缩写外设/单元
    ADC模数转换器
    BKP备份寄存器
    CAN控制器局域网模块
    DMA直接内存存取控制器
    EXTI外部中断事件控制器
    FLASH闪存存储器
    GPIO通用输入输出
    I2C内部集成电路
    IWDG独立看门狗
    NVIC嵌套中断向量列表控制器
    PWR电源/功耗控制
    RCC复位与时钟控制器
    RTC实时时钟
    SPI串行外设接口
    SysTick系统嘀嗒定时器
    TIM通用定时器
    TIM1高级控制定时器
    USART通用同步异步接收发射端
    WWDG窗口看门狗

    1.2命名规则

    固态函数库遵从以下命名规则 PPP表示任一外设缩写,例如:ADC。更多缩写相关信息参阅章节1.1 缩写

    系统、源程序文件和头文件命名都以“stm32f10x_hal”作为开头,例如:stm32f10x_hal_conf.h。

    常量仅被应用于一个文件的,定义于该文件中;被应用于多个文件的,在对应头文件中定义。所有常量都由英文字母大写书写。寄存器作为常量处理。他们的命名都由英文字母大写书写。

    在大多数情况下,他们采用与缩写规范与本用户手册一致。

    外设函数的命名以HAL加该外设的缩写加下划线为开头。每个单词的第一个字母都由英文字母大写书写,例如:HAL_I2C_Master_Transmit。在函数名中,以HAL开头加下划线加外设缩写,用以分隔外设缩写和函数名的其它部分。名为HAL_PPP_Init的函数,其功能是根据HAL_StatusTypeDef中指定的参数,初始化外设PPP,例如HAL_I2C_Init.

    2. HAL函数库文件结构

    2.1压缩包描述

    STM32Fxx HAL函数库被压缩在一个zip文件中。解压该文件会产生一个文件夹:STM32Cube_FW_F1_V1.0.0,包含如下所示的子文件夹:

    STM32 HAL固件库是Hardware Abstraction Layer的缩写,中文名称是:硬件抽象层。HAL库是ST公司为STM32的MCU最新推出的抽象层嵌入式软件,为更方便的实现跨STM32产品的最大可移植性。HAL库的推出,可以说ST也慢慢的抛弃了原来的标准固件库,这也使得很多老用户不满。但是HAL库推出的同时,也加入了很多第三方的中间件,有RTOS,USB,TCP / IP和图形等等。

    和标准库对比起来,STM32的HAL库更加的抽象,ST最终的目的是要实现在STM32系列MCU之间无缝移植,甚至在其他MCU也能实现快速移植。

    2.2HAL 库文件调用结构

    image-20200714213700726

    3.HAL的初始化

    HAL层被调用前要先运行初始化函数HAL_init(),它包含在针对HAL自身的全局操作操作的源文件hal.c里。

    HAL全局结构

    这里写图片描述

    4.STM32 HAL库句柄、MSP函数、Callback函数

    4.1.句柄

    句柄(handle),有多种意义,其中第一种是指程序设计,第二种是指Windows编程。现在大部分都是指程序设计/程序开发这类

    • 第一种解释:句柄是一种特殊的智能指针 。当一个应用程序要引用其他系统(如数据库、操作系统)所管理的内存块或对象时,就要使用句柄。
    • 第二种解释:整个Windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象和同类中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息,但是句柄不是指针,程序不能利用句柄来直接阅读文件中的信息。如果句柄不在I/O文件中,它是毫无用处的。 句柄是Windows用来标志应用程序中建立的或是使用的唯一整数,Windows大量使用了句柄来标识对象。

    STM32的标准库中,句柄是一种特殊的指针,通常指向结构体!

    在STM32的标准库中,假设我们要初始化一个外设(这里以USART为例),我们首先要初始化他们的各个寄存器。在标准库中,这些操作都是利用固件库结构体变量+固件库Init函数实现的:

    	USART_InitTypeDef USART_InitStructure;
    
    	USART_InitStructure.USART_BaudRate = bound;//串口波特率
    	USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
    	USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位
    	USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位
    	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
    	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;	//收发模式
    
    	USART_Init(USART3, &USART_InitStructure); //初始化串口1
    
    

    可以看到,要初始化一个串口,需要:

    • 1、对六个位置进行赋值,
    • 2、然后引用Init函数,

    USART_InitStructure并不是一个全局结构体变量,而是只在函数内部的局部变量,初始化完成之后,USART_InitStructure就失去了作用。

    而在HAL库中,同样是USART初始化结构体变量,我们要定义为全局变量。

    UART_HandleTypeDef UART1_Handler;
    

    右键查看结构体成员

    typedef struct
    {
    	USART_TypeDef                 *Instance;    /*!< UART registers base address       */
    	UART_InitTypeDef              Init;         /*!< UART communication parameters     */
    	uint8_t                       *pTxBuffPtr;  /*!< Pointer to UART Tx ansferBuffer   */
        uint16_t                      TxXferSize;   /*!< UART Tx Transfer size             */
    	uint16_t                      TxXferCount;  /*!< UART Tx Transfer Counter          */
    	uint8_t                       *pRxBuffPtr;  /*!< Pointer to UART Rx transfer Buffer*/
    	uint16_t                      RxXferSize;   /*!< UART Rx Transfer size             */
    	uint16_t                      RxXferCount;  /*!< UART Rx Transfer Counter          */ 
        DMA_HandleTypeDef             *hdmatx;      /*!< UART Tx DMA Handle parameters     */ 
    	DMA_HandleTypeDef             *hdmarx;      /*!< UART Rx DMA Handle parameters     */
    	HAL_LockTypeDef               Lock;         /*!< Locking object                    */
        __IO HAL_UART_StateTypeDef    State;        /*!< UART communication state          */
    	__IO uint32_t                 ErrorCode;    /*!< UART Error code                   */
    }UART_HandleTypeDef;
    

    我们发现,与标准库不同的是,该成员不仅:

    • 1、包含了之前标准库就有的六个成员(波特率,数据格式等),
    • 2、还包含过采样、(发送或接收的)数据缓存、数据指针、串口 DMA 相关的变量、各种标志位等等要在整个项目流程中都要设置的各个成员。
      该 UART1_Handler就被称为串口的句柄,它被贯穿整个USART收发的流程,比如开启中断:
    HAL_UART_Receive_IT(&UART1_Handler, (u8 *)aRxBuffer, RXBUFFERSIZE);
    

    比如后面要讲到的MSP与Callback回调函数:

    void HAL_UART_MspInit(UART_HandleTypeDef *huart);
    void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);
    

    在这些函数中,只需要调用初始化时定义的句柄UART1_Handler就好。

    4.2.MSP函数

    MSP: MCU Specific Package 单片机的具体方案

    MSP是指和MCU相关的初始化,引用一下正点原子的解释,个人觉得说的很明白:

    我们要初始化一个串口,首先要设置和 MCU 无关的东西,例如波特率,奇偶校验,停止
    位等,这些参数设置和 MCU 没有任何关系,可以使用 STM32F1,也可以是 STM32F2/F3/F4/F7
    上的串口。而一个串口设备它需要一个 MCU 来承载,例如用 STM32F4 来做承载,PA9 做为发
    送,PA10 做为接收,MSP 就是要初始化 STM32F4 的 PA9,PA10,配置这两个引脚。所以 HAL
    驱动方式的初始化流程就是:

    HAL_USART_Init()—>HAL_USART_MspInit() ,先初始化与 MCU无关的串口协议,再初始化与 MCU 相关的串口引脚。

    在 STM32 的 HAL 驱动中HAL_PPP_MspInit()作为回调,被 HAL_PPP_Init()函数所调用。当我们需要移植程序到 STM32F1平台的时候,我们只需要修改 HAL_PPP_MspInit 函数内容而不需要修改 HAL_PPP_Init 入口参数内容。

    在HAL库中,几乎每初始化一个外设就需要设置该外设与单片机之间的联系,比如IO口,是否复用等等,可见,HAL库相对于标准库多了MSP函数之后,移植性非常强,但与此同时却增加了代码量和代码的嵌套层级。可以说各有利弊。

    同样,MSP函数又可以配合句柄,达到非常强的移植性:

    void HAL_UART_MspInit(UART_HandleTypeDef *huart);
    

    入口参数仅仅需要一个串口句柄,这样有能看出句柄的方便。

    4.3.Callback函数

    类似于MSP函数,个人认为Callback函数主要帮助用户应用层的代码编写。

    还是以USART为例,在标准库中,串口中断了以后,我们要先在中断中判断是否是接收中断,然后读出数据,顺便清除中断标志位,然后再是对数据的处理,这样如果我们在一个中断函数中写这么多代码,就会显得很混乱:

    void USART3_IRQHandler(void)                	//串口1中断服务程序
    {
    	u8 Res;
    	if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)  //接收中断(接收到的数据必须是0x0d 0x0a结尾)
    	{
    		Res =USART_ReceiveData(USART3);	//读取接收到的数据
    		/*数据处理区*/
    		}   		 
         } 
    } 
    

    而在HAL库中,进入串口中断后,直接由HAL库中断函数进行托管:

    void USART1_IRQHandler(void)                	
    { 
    	HAL_UART_IRQHandler(&UART1_Handler);	//调用HAL库中断处理公用函数
    	/***************省略无关代码****************/	
    }
    

    HAL_UART_IRQHandler这个函数完成了判断是哪个中断(接收?发送?或者其他?),然后读出数据,保存至缓存区,顺便清除中断标志位等等操作。
    比如我提前设置了,串口每接收五个字节,我就要对这五个字节进行处理。
    在一开始我定义了一个串口接收缓存区:

    /*HAL库使用的串口接收缓冲,处理逻辑由HAL库控制,接收完这个数组就会调用HAL_UART_RxCpltCallback进行处理这个数组*/
    /*RXBUFFERSIZE=5*/
    u8 aRxBuffer[RXBUFFERSIZE];
    

    在初始化中,我在句柄里设置好了缓存区的地址,缓存大小(五个字节)

    /*该代码在HAL_UART_Receive_IT函数中,初始化时会引用*/
    	huart->pRxBuffPtr = pData;//aRxBuffer
        huart->RxXferSize = Size;//RXBUFFERSIZE
        huart->RxXferCount = Size;//RXBUFFERSIZE
    

    则在接收数据中,每接收完五个字节,HAL_UART_IRQHandler才会执行一次Callback函数:

    void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);
    

    在这个Callback回调函数中,我们只需要对这接收到的五个字节(保存在aRxBuffer[]中)进行处理就好了,完全不用再去手动清除标志位等操作。
    所以说Callback函数是一个应用层代码的函数,我们在一开始只设置句柄里面的各个参数,然后就等着HAL库把自己安排好的代码送到手中就可以了~

    综上,就是HAL库的三个与标准库不同的地方之个人见解。
    个人觉得从这三个小点就可以看出HAL库的可移植性之强大,并且用户可以完全不去理会底层各个寄存器的操作,代码也更有逻辑性。但与此带来的是复杂的代码量,极慢的编译速度,略微低下的效率。看怎么取舍了。

    5.HAL库编程方式

    在 HAL 库中对外设模型进行了统一,支持三种编程方式:

    轮询模式/阻塞模式
    中断方式
    DMA模式
    以IIC为例,三种编程模式对应的函数如下:

    1、轮询模式/阻塞模式

    HAL_I2C_Master_Transmit()HAL_I2C_Master_Receive()HAL_I2C_Slave_Transmit()HAL_I2C_Slave_Receive()
    HAL_I2C_Mem_Write()HAL_I2C_Mem_Read()HAL_I2C_IsDeviceReady()
    

    2、中断模式

    HAL_I2C_Master_Transmit_IT();    
    HAL_I2C_Master_Receive_IT();  
    HAL_I2C_Slave_Transmit_IT()
    HAL_I2C_Slave_Receive_IT();    
    HAL_I2C_Mem_Write_IT();       
    HAL_I2C_Mem_Read_IT()
    

    3、DMA模式

    HAL_I2C_Master_Transmit_DMA()HAL_I2C_Master_Receive_DMA()HAL_I2C_Slave_Transmit_DMA()HAL_I2C_Slave_Receive_DMA()HAL_I2C_Mem_Write_DMA()HAL_I2C_Mem_Read_DMA()
    

    6.例程和帮助文档

    STM32 HAL库包含大量的库函数的使用例程和库函数API接口帮助文档,在开发过程中如果遇到任何问题可以通过库文件自带的例程和帮助文档获得帮助。

    6.1 例程文档结构图

    6.2 HAL用户手册

    参考:

    https://blog.csdn.net/weixin_43186792/article/details/88759321

    https://blog.csdn.net/ZCShouCSDN/article/details/54613202?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase

    https://blog.csdn.net/adam_embedded/article/details/46453171

    https://blog.csdn.net/sinat_37853238/article/details/85141168

    展开全文
  • 本资源包含最新版的STM32CubeMX中文版教程,非常适合入门CubeMX的初学者,有详细的解释,同时包含L4系列HAL库资料,这种库函数资料较少,可在使用CubeMX时使用。加强理解。
  • stm32HAL 库函数手册,对于初学HAL库的小伙伴们有很大帮助。
  • 使用.c文件read函数读取返回的16进制值就可以直接获得传感器的温度,本程序为hal库开发 主要是自己在做练习题的时候没有hal版驱动所以重新弄了一个。
  • STM32正点原子Mini板例程源码,标准例程源码。
  • 正点原子 STM32F1开发指南-HAL库版本
  • STM32 HAL库固件安装与 用户手册

    万次阅读 2018-12-20 21:39:33
    ST公司推出了HAL库,在使用的时候有帮助文档是最好不过的。 首先安装需要的固件 1.首先设置让Cube可以自动联网下载相关固件 选择updater Settings 设置如下 2.根据芯片选择所需固件 版本是向下兼容的,...

    ST公司推出了HAL库,在使用的时候有帮助文档是最好不过的。

    首先安装需要的固件库

    1.首先设置让Cube可以自动联网下载相关固件库

    选择updater Settings

    设置如下

    2.根据芯片选择所需固件

    版本是向下兼容的,可以直接选择最新版。但如果觉得最新版太大,可以阅读下面的Main Changes.能够支持你目前的芯片就好。

    ll

    选好了,点击Install Now就行,过程可能有点长。

    文件会被下载到如下位置,建议更改此目录,不要选在C盘!!!

    查找帮助手册

    3.寻找用户帮助手册

    进入固件所在文件夹,里面包含很多内容。

    比如说 官方提供的开发板程序

    每个型号下面都有对应功能的实现

    用户手册就在Drivers文件夹下面

    最新的固件库会包含之前的版本。可以打开 Release_Notes.html查看不同版本的差异,选择你需要的。

     

    展开全文
  • STM32 HAL库手册获取和查阅方法以及查看官方例程

    千次阅读 多人点赞 2020-09-09 22:08:33
    首先需要安装pack包。打开STM32CubeMX软件,help->Manage Embedded Software packages,如下图: ...按照下图目录即可找到HAL库手册,直接双击打开即可。 打开手册后选择搜索,在搜索框输入需要查找的

    一、概述

    STM32固件使用HAL库进行开发,如何查看接口函数的定义呢?本文记录一种通过STM32CubeMX软件获取HAL手册进行查阅的方法。
    STM32CubeMX的安装可以参考文章:STM32CubeMX官网下载方法

    二、安装芯片pack包

    首先需要安装pack包。打开STM32CubeMX软件,help->Manage Embedded Software packages,如下图:
    在这里插入图片描述
    根据自己的需要,选择芯片系列,选择pack包版本,选择安装。
    在这里插入图片描述
    回到STM32CubeMX软件主界面,help->Updatar Settings,查看存储路径,如下图:
    在这里插入图片描述
    这里最好不要选在C盘。
    在这里插入图片描述
    根据路径在本地查找,就可以看到下载的pack包。
    在这里插入图片描述

    三、查看HAL库手册

    按照下图目录即可找到HAL库手册,直接双击打开即可。
    在这里插入图片描述
    打开手册后选择搜索,在搜索框输入需要查找的库函数。
    在这里插入图片描述
    以HAL_GPIO_Init为例,在搜索框输入后,双击搜索结果,在右侧显示函数定义。
    在这里插入图片描述

    四、查看官方例程

    同样是在pack包的存储路径下,这里列出了已经安装的系列:
    在这里插入图片描述
    选择对应的系列查找即可,下面是SPI的路径:
    在这里插入图片描述

    展开全文
  • stm32F103比较全面的说明书,囊括了各个单片机实验,建议当说明手册使用

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,456
精华内容 1,382
关键字:

stm32hal库中文手册

友情链接: ch3.rar