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 样式(了解ÿ…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...