当前位置: 首页 > 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调用的各种回调函数里面实现,这些回调都是弱定义的,方便用户直接在其它文件里面重定义:
在这里插入图片描述

相关文章:

HAL库框架学习总结

概述:HAL库为各种外设基本都配了三套 API,查询,中断和 DMA。 一、HAL库为外设初始化提供了一套框架,这里以串口为例进行说明,调用函数 HAL_UART_Init初始化串口,此函数就会调用 HAL_UART_MspInit&#xff0…...

基于Spring Integration的ESB与Kettle结合实现实时数据处理技术

一、方案概述 在当今数字化时代,企业面临着海量数据的实时处理与传输挑战。ESB(企业服务总线)作为系统集成的核心组件,承担着不同协议数据的接入与转换任务,而Kettle作为一款功能强大的ETL(Extract, Transform, Load)工具,在数据抽取、转换与加载方面表现出色。将ESB与…...

qt QOpenGLContext详解

1. 概述 QOpenGLContext 是 Qt 提供的一个类,用于管理 OpenGL 上下文。它封装了 OpenGL 上下文的创建、配置和管理功能,使得开发者可以在 Qt 应用程序中以平台无关的方式使用 OpenGL。通过 QOpenGLContext,可以轻松地创建和管理 OpenGL 上下…...

探索顶级汽车软件解决方案:驱动行业变革的关键力量

在本文中,将一同探索当今塑造汽车行业的最具影响力的软件解决方案。从设计到制造,软件正彻底改变车辆的制造与维护方式。让我们深入了解这个充满活力领域中的关键技术。 设计软件:创新车型的孕育摇篮 车辆设计软件对于创造创新型汽车模型至…...

Deepseek R1模型本地化部署+API接口调用详细教程:释放AI生产力

文章目录 前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装ollama2部署DeepSeek R1模型删除已存在模型,以7b模型为例 三、DeepSeek API接口调用Cline配置 前言 随着最近人工智能 DeepSeek 的爆火,越来越多的技术大佬们开始关注如…...

DeepSeek 概述与本地化部署【详细流程】

目录 一、引言 1.1 背景介绍 1.2 本地化部署的优势 二、deepseek概述 2.1 功能特点 2.2 核心优势 三、本地部署流程 3.1 版本选择 3.2 部署过程 3.2.1 下载Ollama 3.2.2 安装Ollama 3.2.3 选择 r1 模型 3.2.4 选择版本 3.2.5 本地运行deepseek模型 3.3.6 查看…...

FFmpeg Video options

FFmpeg视频相关选项 1. -vframes number (output) 设置输出视频帧数 示例: ffmpeg -i input.mp4 -vframes 90 output.mp4 表示输出90帧视频 2. -r[:stream_specifier] fps (input/output,per-stream) 设置帧率(rate) 示例: ffmpeg -i input.mp4…...

从51到STM32:PWM平滑迁移方案

引言 对于习惯使用51单片机的开发者而言,转向STM32时可能会面临开发环境和硬件差异的挑战。本文以PWM(脉宽调制)功能为例,分享从51到STM32的平滑迁移方案,帮助开发者快速适应STM32的开发模式。 一、PWM实现原理对比 …...

openCV中如何实现滤波

图像滤波用于去除噪声和图像平滑,OpenCV 提供了多种滤波器: 1.1. 均值滤波: import cv2# 读取图像 image cv2.imread("example.jpg")# 均值滤波 blurred_image cv2.blur(image, (5, 5)) # (5, 5) 是滤波核的大小 滤波核大小的…...

BGP配置华为——路由汇总

实验拓扑 实验要求 1.R1,R2,R3间运行BGP,搭建EBGP邻居 2.R3一段的网络实现自动聚合,R1一端的网络实现手动路由聚合 3.启用as-set防环 实验配置 配置相关IP 过程省略,结果如图 R1 R2 R3 配置EBGP [R1]bgp 100 [R1-bgp]router 10.10.1…...

机器学习核心算法解析

机器学习核心算法解析 机器学习是人工智能的核心技术之一,它通过从数据中学习模式并做出预测或决策。本文将深入解析机器学习的核心算法,包括监督学习、无监督学习和强化学习,并通过具体案例和代码示例帮助读者理解这些算法的实际应用。 1. …...

【C++学习篇】C++11

目录 ​编辑 1. 初始化列表{} 1.1 C98中的{} 1.2 C11中的{} 2. C11中的std::initializer_list 3. 右值引用和移动语义 3.1 左值和右值 3.2 左值引用和右值引用 3.3 引用延长生命周期 3.4 左值和右值的参数匹配 3.5 右值引⽤和移动语义的使⽤场景 3.5.1 左值引⽤…...

SQLite 数据库:优点、语法与快速入门指南

文章目录 一、引言二、SQLite 的优点 💯三、SQLite 的基本语法3.1 创建数据库3.2 创建表3.3 插入数据3.4 查询数据3.5 更新数据3.6 删除数据3.7 删除表 四、快速入门指南4.1 安装 SQLite4.2 创建数据库4.3 创建表4.4 插入数据4.5 查询数据4.6 更新数据4.7 删除数据4…...

数据结构——二叉树(2025.2.12)

目录 一、树 1.定义 (1)树的构成 (2)度 2.二叉树 (1)定义 (2)二叉树的遍历 (3)遍历特性 二、练习 1.二叉树 (1)创建二叉树…...

图神经网络简介

一、说明 本文介绍了GNN网络一些要素,其中与CNN进行过一些对比,并且对GNN的一些统计原理进行介绍。 二、介绍 对于不同类型的训练数据集,卷积神经网络 (CNN) 擅长处理方形或网格状或欧几里得结构化数据,…...

小程序报错The JavaScript function Pointer_stringify(ptrToSomeCString)

小程序报错The JavaScript function Pointer _stringify(ptrToSomeCString) 介绍修改地址总结 介绍 这个报错是我在打包小程序在手机上运行时报的错,这个地方问题是个小问题,其实就是Pointer_stringify(ptrToSomeCString) 函数过时…...

DeepSeek 与网络安全:AI 驱动的智能防御

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 随着人工智能(AI)的快速发展,深度学习技术正渗透到多个领域,从医疗诊断到…...

Redission看门狗

在 Redisson 中,lock.tryLock() 和 lock.lock() 是两种不同的加锁方式,它们的行为有所不同: lock.lock():这是阻塞方法,当调用时,如果锁当前不可用,线程将被阻塞,直到获取到锁。如果…...

LeetCode 热题 100_组合总和(58_39_中等_C++)(递归(回溯))

LeetCode 热题 100_组合总和(58_39) 题目描述:输入输出样例:题解:解题思路:思路一(递归(回溯)): 代码实现代码实现(思路一&#xff08…...

使用PHP爬虫获取1688商品分类:实战案例指南

在电商领域,商品分类信息是商家进行市场调研、选品分析和竞争情报收集的重要基础。1688作为国内领先的B2B电商平台,提供了丰富且详细的商品分类数据。通过PHP爬虫技术,我们可以高效地获取这些分类信息,为商业决策提供有力支持。 …...

opencode-mcp:让AI编码助手学会“摇人”的本地自动化工具

1. 项目概述:当你的AI助手学会“摇人” 如果你和我一样,每天都在和Claude、Cursor这类AI编码助手打交道,那你肯定遇到过这个场景:你让它“重构一下这个模块”,它噼里啪啦给你生成了一堆代码,然后你发现它没…...

2026年论文引言部分AI率偏高攻略:引言绪论章节免费降AI处理知网达标完整操作指南

2026年论文引言部分AI率偏高攻略:引言绪论章节免费降AI处理知网达标完整操作指南 截止日期逼近,AI率还有71%。 从论坛找资料、问学长、实测工具,最后用嘎嘎降AI(www.aigcleaner.com)把71%降到了6.2%,4.8元…...

技术突破:iOS微信聊天记录解密导出与可视化解决方案

技术突破:iOS微信聊天记录解密导出与可视化解决方案 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 在数字时代,微信聊天记录已成为个人和商业数据…...

赛博朋克2077 2026最新官方正版免费下载 (速转 资源随时可能失效)

下载链接 深度解析:从系统架构到叙事逻辑,全方位拆解《赛博朋克 2077》 作为近年来开放世界 RPG 的话题之作,《赛博朋克 2077》不仅在美术视觉上达到了工业级巅峰,其底层系统设计和叙事框架也为开发者提供了丰富的研究样本。本文…...

基于MPA的微前端架构:实现技术栈无关与独立部署的现代Web应用方案

1. 项目概述:一个为现代Web应用量身定制的微前端架构如果你正在为一个大型、多团队协作的Web应用寻找一个既能保持技术栈灵活性,又能实现高效集成与独立部署的解决方案,那么mattmezza/mpa这个项目绝对值得你花时间深入研究。它不是一个简单的…...

基于AI编辑器的本地化生产力系统:jw-agenda智能体技能深度解析

1. 项目概述:一个为AI编辑器而生的本地化生产力系统 如果你和我一样,日常重度依赖 Cursor 或 Claude 这类 AI 驱动的编辑器,那你肯定也经历过这种场景:脑子里有一堆待办事项,项目规划散落在各个角落,想用 …...

构建无缝数字收藏库:picacomic-downloader智能管理解决方案

构建无缝数字收藏库:picacomic-downloader智能管理解决方案 【免费下载链接】picacomic-downloader 哔咔漫画 picacomic pica漫画 bika漫画 PicACG 多线程下载器,带图形界面 带收藏夹,已打包exe 下载速度飞快 项目地址: https://gitcode.co…...

CANN/catlass 逐令牌反量化

Block Epilogue Per Token Dequant 【免费下载链接】catlass 本项目是CANN的算子模板库,提供NPU上高性能矩阵乘及其相关融合类算子模板样例。 项目地址: https://gitcode.com/cann/catlass 代码位置 功能说明 BlockEpilogue偏特化实现,使用perToke…...

2026届必备的六大降AI率助手实测分析

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 要降低AIGC检测率,需从文本特征着手。首先,替换高频词汇&#xff0c…...

ACAI平台:基于数据湖与智能调度的MLOps实验管理实践

1. 项目概述:当MLOps遇上数据湖与智能调度在机器学习(ML)项目从研究走向生产的漫长征途中,实验管理一直是个让人又爱又恨的环节。爱的是,每一次实验都可能是通往更高模型性能的钥匙;恨的是,随着…...