当前位置: 首页 > news >正文

HAL库框架学习总结

概述:HAL库为各种外设基本都配了三套 API,查询,中断和 DMA。
一、HAL库为外设初始化提供了一套框架,这里以串口为例进行说明,调用函数 HAL_UART_Init初始化串口,此函数就会调用 HAL_UART_MspInit,这个函数是弱定义的,在 stm32f4xx_hal_uart.c文件里面:如果要初始化,直接将此函数在其它源文件里面实现即可,如果用到了中断和 DMA,也是直接在这里填写。
在这里插入图片描述
在这里插入图片描述
由于所有串口都是通过函数 HAL_UART_Init做初始化,所以函数 HAL_UART_MspInit也是共用的。因此需要大家在这个里面区分是配置的哪个串口。
二、HAL库对中断的处理:
在这里插入图片描述

1、那么问题来了,如果要实现功能,用户的应用程序怎么写入中断?用户可以直接在函数
HAL_UART_IRQHandler的前面或者后面添加新代码,也可以直接在 HAL_UART_IRQHandler调用的各种回调函数里面执行,这些回调都是弱定义的,方便用户直接在其它文件里面重定义
在这里插入图片描述

三、HAL库的DMA处理思路
1、为了方便各种外设直接启动 DMA,HAL库专门为支持 DMA操作的外设都提供了对应的 DMA函数,比如串口的:
在这里插入图片描述

2、这里特别注意一点,针对外设的 DMA函数基本都有开启中断,如果用户使能此外设的 NVIC,使用中务必别忘了写 DMA的中断服务程序,比如使用 DMA1_Stream1:
15、

3、如果要在 DMA传输完成,半传输完成等中断里面执行功能,也是通过 HAL_DMA_IRQHandler调用的各种回调函数里面实现,这些回调都是弱定义的,方便用户直接在其它文件里面重定义:
在这里插入图片描述

http://www.lryc.cn/news/537031.html

相关文章:

  • 基于Spring Integration的ESB与Kettle结合实现实时数据处理技术
  • qt QOpenGLContext详解
  • 探索顶级汽车软件解决方案:驱动行业变革的关键力量
  • Deepseek R1模型本地化部署+API接口调用详细教程:释放AI生产力
  • DeepSeek 概述与本地化部署【详细流程】
  • FFmpeg Video options
  • 从51到STM32:PWM平滑迁移方案
  • openCV中如何实现滤波
  • BGP配置华为——路由汇总
  • 机器学习核心算法解析
  • 【C++学习篇】C++11
  • SQLite 数据库:优点、语法与快速入门指南
  • 数据结构——二叉树(2025.2.12)
  • 图神经网络简介
  • 小程序报错The JavaScript function Pointer_stringify(ptrToSomeCString)
  • DeepSeek 与网络安全:AI 驱动的智能防御
  • Redission看门狗
  • LeetCode 热题 100_组合总和(58_39_中等_C++)(递归(回溯))
  • 使用PHP爬虫获取1688商品分类:实战案例指南
  • Nginx location 和 proxy_pass 配置详解
  • 云创智城充电系统:基于 SpringCloud 的高可用、可扩展架构详解-多租户、多协议兼容、分账与互联互通功能实现
  • AIP-143 标准代号
  • 机器视觉--数字图像格式
  • Kotlin 2.1.0 入门教程(十七)接口
  • 渗透测试工具:SQLmap安装教程及使用
  • 4.SpringSecurity在分布式环境下的使用
  • RocketMQ和Kafka如何实现顺序写入和顺序消费?
  • SQL联合查询
  • deepseek:三个月备考高级系统架构师
  • 支持向量机原理