A12 STM32_HAL库函数 之 HAL-ETH通用驱动 -- A -- 所有函数的介绍及使用
A12 STM32_HAL库函数 之 HAL-ETH通用驱动 -- A -- 所有函数的介绍及使用
- 1 通用定时器(TIM)预览
- 1.1 HAL_ETH_Init
- 1.2 HAL_ETH_DeInit
- 1.3 HAL_ETH_DMATxDescListInit
- 1.4 HAL_ETH_DMARxDescListInit
- 1.5 HAL_ETH_MspInit
- 1.6 HAL_ETH_MspDeInit
- 1.7 HAL_ETH_TransmitFrame
- 1.8 HAL_ETH_GetReceivedFrame
- 1.9 HAL_ETH_GetReceivedFrame_IT
- 1.10 HAL_ETH_IRQHandler
- 该文档修改记录:
- 总结
1 通用定时器(TIM)预览
序号 | 函数名 | 描述 |
---|---|---|
1 | HAL_ETH_Init() | 初始化以太网控制器。 |
2 | HAL_ETH_DeInit() | 反初始化以太网控制器。 |
3 | HAL_ETH_DMATxDescListInit() | 初始化以太网DMA发送描述符列表。 |
4 | HAL_ETH_DMARxDescListInit() | 初始化以太网DMA接收描述符列表。 |
5 | HAL_ETH_MspInit() | 初始化MCU外设相关的以太网控制器引脚或资源。 |
6 | HAL_ETH_MspDeInit() | 反初始化MCU外设相关的以太网控制器引脚或资源。 |
7 | HAL_ETH_TransmitFrame() | 传输以太网帧。 |
8 | HAL_ETH_GetReceivedFrame() | 获取接收到的以太网帧。 |
9 | HAL_ETH_GetReceivedFrame_IT() | 异步获取接收到的以太网帧,使用中断处理接收完成。 |
10 | HAL_ETH_IRQHandler() | 以太网控制器中断处理程序。 |
11 | HAL_ETH_TxCpltCallback() | 以太网发送完成回调函数。 |
12 | HAL_ETH_RxCpltCallback() | 以太网接收完成回调函数。 |
13 | HAL_ETH_ErrorCallback() | 以太网错误回调函数。 |
14 | HAL_ETH_ReadPHYRegister() | 读取PHY寄存器。 |
15 | HAL_ETH_WritePHYRegister() | 写入PHY寄存器。 |
16 | HAL_ETH_Start() | 启动以太网控制器。 |
17 | HAL_ETH_Stop() | 停止以太网控制器。 |
18 | HAL_ETH_ConfigMAC() | 配置以太网MAC。 |
19 | HAL_ETH_ConfigDMA() | 配置以太网DMA。 |
20 | HAL_ETH_GetState() | 获取以太网控制器状态。 |
使用模板:
#include "stm32f4xx_hal.h"int main(void) {// HAL初始化HAL_Init();// 初始化MCU外设相关的以太网控制器引脚或资源HAL_ETH_MspInit();// 初始化以太网控制器HAL_ETH_Init();// 进行其他操作...// 启动以太网控制器HAL_ETH_Start();// 启动DMA传输HAL_ETH_TransmitFrame();// 获取接收到的以太网帧HAL_ETH_GetReceivedFrame();// 异步获取接收到的以太网帧,使用中断处理接收完成HAL_ETH_GetReceivedFrame_IT();// 以太网中断处理程序HAL_ETH_IRQHandler();// 获取以太网控制器状态uint32_t ethState = HAL_ETH_GetState();// 停止以太网控制器HAL_ETH_Stop();// 反初始化以太网控制器HAL_ETH_DeInit();// 反初始化MCU外设相关的以太网控制器引脚或资源HAL_ETH_MspDeInit();return 0;
}
1.1 HAL_ETH_Init
函数名 | HAL_ETH_Init |
---|---|
函数原形 | HAL_StatusTypeDef HAL_ETH_Init(ETH_HandleTypeDef* heth) |
功能描述 | 初始化以太网模块 |
输入参数 | heth:以太网句柄,指向一个 ETH_HandleTypeDef 结构体 |
输出参数 | 无 |
返回值 | HAL_StatusTypeDef:初始化结果,可以是 HAL_OK 或 HAL_ERROR |
先决条件 | 无 |
被调用函数 | 无 |
1.2 HAL_ETH_DeInit
函数名 | HAL_ETH_DeInit |
---|---|
函数原形 | HAL_StatusTypeDef HAL_ETH_DeInit(ETH_HandleTypeDef* heth) |
功能描述 | 反初始化以太网模块 |
输入参数 | heth:以太网句柄,指向一个 ETH_HandleTypeDef 结构体 |
输出参数 | 无 |
返回值 | HAL_StatusTypeDef:反初始化结果,可以是 HAL_OK 或 HAL_ERROR |
先决条件 | 无 |
被调用函数 | 无 |
1.3 HAL_ETH_DMATxDescListInit
函数名 | HAL_ETH_DMATxDescListInit |
---|---|
函数原形 | void HAL_ETH_DMATxDescListInit(ETH_HandleTypeDef *heth, ETH_DMADescTypeDef *DMATxDescTab, uint8_t *TxBuffer, uint32_t BufferSize) |
功能描述 | 初始化以太网 DMA 发送描述符列表 |
输入参数 1 | heth:以太网句柄,指向一个 ETH_HandleTypeDef 结构体 |
输入参数 2 | DMATxDescTab:指向 DMA 发送描述符列表的指针 |
输入参数 3 | TxBuffer:发送缓冲区的指针 |
输入参数 4 | BufferSize:发送缓冲区大小 |
输出参数 | 无 |
返回值 | 无 |
先决条件 | 无 |
被调用函数 | 无 |
1.4 HAL_ETH_DMARxDescListInit
函数名 | HAL_ETH_DMARxDescListInit |
---|---|
函数原形 | void HAL_ETH_DMARxDescListInit(ETH_HandleTypeDef *heth, ETH_DMADescTypeDef *DMARxDescTab, uint8_t *RxBuffer, uint32_t BufferSize) |
功能描述 | 初始化以太网 DMA 接收描述符列表 |
输入参数 1 | heth:以太网句柄,指向一个 ETH_HandleTypeDef 结构体 |
输入参数 2 | DMARxDescTab:指向 DMA 接收描述符列表的指针 |
输入参数 3 | RxBuffer:接收缓冲区的指针 |
输入参数 4 | BufferSize:接收缓冲区大小 |
输出参数 | 无 |
返回值 | 无 |
先决条件 | 无 |
被调用函数 | 无 |
1.5 HAL_ETH_MspInit
函数名 | HAL_ETH_MspInit |
---|---|
函数原形 | void HAL_ETH_MspInit(ETH_HandleTypeDef* heth) |
功能描述 | 初始化以太网外设(底层驱动的 MSP 初始化回调函数) |
输入参数 | heth:以太网句柄,指向一个 ETH_HandleTypeDef 结构体 |
输出参数 | 无 |
返回值 | 无 |
先决条件 | 无 |
被调用函数 | 无 |
1.6 HAL_ETH_MspDeInit
函数名 | HAL_ETH_MspDeInit |
---|---|
函数原形 | void HAL_ETH_MspDeInit(ETH_HandleTypeDef* heth) |
功能描述 | 反初始化以太网外设(底层驱动的 MSP 反初始化回调函数) |
输入参数 | heth:以太网句柄,指向一个 ETH_HandleTypeDef 结构体 |
输出参数 | 无 |
返回值 | 无 |
先决条件 | 无 |
被调用函数 | 无 |
1.7 HAL_ETH_TransmitFrame
函数名 | HAL_ETH_TransmitFrame |
---|---|
函数原形 | HAL_StatusTypeDef HAL_ETH_TransmitFrame(ETH_HandleTypeDef *heth, uint32_t FrameLength) |
功能描述 | 以太网发送数据帧 |
输入参数 1 | heth:以太网句柄,指向一个 ETH_HandleTypeDef 结构体 |
输入参数 2 | FrameLength:要发送的数据帧长度 |
输出参数 | 无 |
返回值 | HAL_StatusTypeDef:发送结果,可以是 HAL_OK 或 HAL_ERROR |
先决条件 | 无 |
被调用函数 | 无 |
1.8 HAL_ETH_GetReceivedFrame
函数名 | HAL_ETH_GetReceivedFrame |
---|---|
函数原形 | HAL_StatusTypeDef HAL_ETH_GetReceivedFrame(ETH_HandleTypeDef *heth) |
功能 |
描述 | 获取以太网接收到的数据帧 |
| 输入参数 | heth:以太网句柄,指向一个 ETH_HandleTypeDef 结构体 |
| 输出参数 | 无 |
| 返回值 | HAL_StatusTypeDef:获取结果,可以是 HAL_OK 或 HAL_ERROR |
| 先决条件 | 无 |
| 被调用函数 | 无 |
1.9 HAL_ETH_GetReceivedFrame_IT
函数名 | HAL_ETH_GetReceivedFrame_IT |
---|---|
函数原形 | HAL_StatusTypeDef HAL_ETH_GetReceivedFrame_IT(ETH_HandleTypeDef *heth) |
功能描述 | 在中断中获取以太网接收到的数据帧 |
输入参数 | heth:以太网句柄,指向一个 ETH_HandleTypeDef 结构体 |
输出参数 | 无 |
返回值 | HAL_StatusTypeDef:获取结果,可以是 HAL_OK 或 HAL_ERROR |
先决条件 | 无 |
被调用函数 | 无 |
1.10 HAL_ETH_IRQHandler
函数名 | HAL_ETH_IRQHandler |
---|---|
函数原形 | void HAL_ETH_IRQHandler(ETH_HandleTypeDef *heth) |
功能描述 | 以太网中断服务函数 |
输入参数 | heth:以太网句柄,指向一个 ETH_HandleTypeDef 结构体 |
输出参数 | 无 |
返回值 | 无 |
先决条件 | 无 |
被调用函数 | 无 |
该文档修改记录:
修改时间 | 修改说明 |
---|---|
2024年4月12日 | 第一次发布,介绍了 A12 STM32_HAL库函数 之 HALETH通用驱动 – A – 所有函数的介绍及使用 |
总结
以上就是A12 STM32_HAL库函数 之 HALETH通用驱动 – A – 所有函数的介绍及使用的内容。
有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。
创作不容,如果文档对您有帮助,记得给个赞。
相关文章:
A12 STM32_HAL库函数 之 HAL-ETH通用驱动 -- A -- 所有函数的介绍及使用
A12 STM32_HAL库函数 之 HAL-ETH通用驱动 -- A -- 所有函数的介绍及使用 1 通用定时器(TIM)预览1.1 HAL_ETH_Init1.2 HAL_ETH_DeInit1.3 HAL_ETH_DMATxDescListInit1.4 HAL_ETH_DMARxDescListInit1.5 HAL_ETH_MspInit1.6 HAL_ETH_MspDeInit1.7 HAL_ETH_T…...
Linux从入门到精通 --- 1.初始Linux
文章目录 第一章:1.1 Linux的诞生1.2 Linux系统内核1.3 Linux系统发行版 第一章: 1.1 Linux的诞生 1991年由林纳斯 托瓦兹创立并发展至今称为服务器操作系统领域的核心系统。 1.2 Linux系统内核 Linux内核提供了系统的主要功能,甚至是开源…...

linux使用docker实现redis主从复制和哨兵模式
目录 1. 拉取redis镜像 2.使用可视化redis工具 3. 设置从redis 4.设置哨兵模式 5. 使用docker-compose快速创建 1. 拉取redis镜像 docker pull redis 默认拉取最新的镜像。 然后pull结束后使用docker images检查镜像: 然后docker run创建container容器 首先…...

新版chrome 解决在http协议下无法调用摄像头和麦克风的问题(不安全)
解决办法:亲测可行 chrome浏览器地址栏中输入chrome://flags/#unsafely-treat-insecure-origin-as-secure,回车,如下图,将该选项置为Enabled, edge浏览器打开:edge://flags/#unsafely-treat-insecure-orig…...
机器学习入门项目二(逻辑回归)
如果输入数据长度为2,上一章的方程就无法满足需求了,需要修改方程: z w 1 x w 2 y b zw_1xw_2yb zw1xw2yb 数据产生器: import matplotlib.pyplot as plt import numpy as npclass DataGenerator2Input:"""…...
C++类引用的好处
简化代码:引用可以简化代码,使其更加易读和易懂。通过使用引用,可以避免在函数参数中复制大型对象,从而提高代码的效率和性能。 传递大型对象的效率高:使用引用作为函数参数传递大型对象时,不需要进行对象…...

从零自制docker-9-【管道实现run进程和init进程传参】
文章目录 命令行中输入参数长度过长匿名管道从父进程到子进程传参[]*os.File{}os.NewFile和io.ReadAllexe.LookPathsyscall.Execstrings.Split(msgStr, " ")/bin/ls: cannot access : No such file or directory代码 命令行中输入参数长度过长 用户输入参数过长或包…...
全量知识系统 程序详细设计 之 三种“活物” 之1(QA百度搜索 )
Q1. 今天聊聊 全知系统中 三种“活物”。先从他们的一个简单描述开始: 自主:计算机“集群”的“沉”与“浮”; 自然:AI “众生”的“世”和“界” ;自由:人类 “公民”的“宇”或“宙”。 全知系统中的三…...

QT 线程之movetothread
上文列举了qt中线程的几种方法,其中2种方法最为常见。 这两种方法都少不了QThread类,前者继承于QThread类,后者复合QThread类。 本文以实例的方式描述了movetothread()这种线程的方法,将QObject的子类移动…...

如何处理ubuntu22.04LTS安装过程中出现“Daemons using outdated libraries”提示
Ubuntu 22.04 LTS 中使用命令行升级软件或安装任何新软件时,您可能收到“Daemons using outdated libraries”,“Which services should be restarted?”的提示,提示下面列出备选的重启服务,如下。 使用以下命令,能够…...

跟TED演讲学英文:The inside story of ChatGPT‘s astonishing potential by Greg Brockman
The inside story of ChatGPT’s astonishing potential Link: https://www.ted.com/talks/greg_brockman_the_inside_story_of_chatgpt_s_astonishing_potential Speaker: Greg Brockman Date:April 2023 文章目录 The inside story of ChatGPTs astonishing potentialIntro…...

mybatis05:复杂查询:(多对一,一对多)
mybatis05:复杂查询:(多对一,一对多) 文章目录 mybatis05:复杂查询:(多对一,一对多)前言:多对一 : 关联 : 使用associatio…...

微电网优化:基于肝癌算法(Liver Cancer algorithm, LCA)的微电网优化(提供MATLAB代码)
一、微电网优化模型 微电网是一个相对独立的本地化电力单元,用户现场的分布式发电可以支持用电需求。为此,您的微电网将接入、监控、预测和控制您本地的分布式能源系统,同时强化供电系统的弹性,保障您的用电更经济。您可以在连接…...

VUE_H5页面跳转第三方地图导航,兼容微信浏览器
当前项目是uniapp项目,若不是需要替换uni.showActionSheet选择api onMap(address , organName , longitude 0, latitude 0){var ua navigator.userAgent.toLowerCase();var isWeixin ua.indexOf(micromessenger) ! -1;if(isWeixin) {const mapUrl_tx "…...

智慧安全运营:智能化运维,确保服务无忧
智慧安全运营:智能化运维,确保服务无忧 中国联通新一代全球智云数据中心采用先进的智能化运维管理系统,实现对数据中心设施、IT设备、能源消耗、环境参数等全方位、实时监控。通过物联网技术、人工智能算法以及大数据分析,运维团…...
R-tree总结
引言: 在处理空间数据和地理信息系统(GIS)中,高效的空间索引机制对于提升查询性能至关重要。R-tree是一种流行的平衡树数据结构,专门用于索引多维信息,如二维的地理坐标或三维的物体位置。它以其灵活性、高…...

Python 与机器学习,在服务器使用过程中,常用的 Linux 命令包括哪些?
🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 本博客旨在分享在实际开发过程中,开发者需要了解并熟练运用的 Linux 操作系统常用命令。Linux 作为一种操作系统,与 Windows 或 MacOS 并驾齐驱,尤其在服务器和开发环…...

js通过Object.defineProperty实现数据响应式
目录 数据响应式属性描述符propertyResponsive 依赖收集依赖队列寻找依赖 观察器 派发更新Observer完整代码关于数据响应式关于Object.defineProperty的限制 数据响应式 假设我们现在有这么一个页面 <!DOCTYPE html> <html lang"en"><head><m…...

docker最简单教程(使用dockerfile构建环境)
一 手里有的东西 安装好的docker+dockerfile 二 操作 只需要在你的dockerfile文件下执行命令 docker build -t="xianhu/centos:gitdir" . 将用户名、操作系统和tag进行修改就可以了,这就相当于在你本地安装了一个docker环境,然后执行 docker run -it xianhu/ce…...

Vue2 —— 学习(三)
目录 一、绑定 class 样式 (一)字符串写法 1.流程介绍 2.代码实现 (二)数组写法 1.流程介绍 2.代码实现 (三)对象写法 1.流程介绍 2.代码实现 二、绑定 style 样式(了解ÿ…...

UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...

接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...