stm32.cube(十)——单HAL模块的结构

本文详细介绍了STM32 Cube库中HAL层的接口函数设计,包括通讯外设如CAN、I2C、SPI的接口函数,以及非通讯外设如RTC、看门狗的数据结构。重点讲解了Init结构体和Handle结构体的作用,强调了HAL层的标准化接口降低了使用难度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、接口函数

对于linux驱动来说,基本的操作函数有Open、Close、Read、Write、Ioctrl,这是在OS的驱动层对外设进行操作的一套规范化的接口。对于更底层的硬件抽象层来说,上层的Open和Close意味着对外设的初始化设置和反初始化设置(回复到未被使用前的状态)。如果外设的作用是实现一个通讯传输,那么上层的Read、Write也要同样对应外设的发送和接收。若外设不是一个传输设备,那么就要有对应的I/O control函数来控制它。同时HAL还要提供取得外设状态的接口,以及外设的中断处理函数。所以一个HAL模块的函数结构基本上是这样的:

这里写图片描述
通讯外设的接口函数

在TRANSFER这里,大部分实现通信协议的外设都可以由普通方式、中断方式、DMA方式来进行收发。普通方式和中断方式有相应的callback函数和中断处理函数,DMA方式也有相应的DMA控制函数。依据不同的通讯协议,不同的通讯外设的传输函数也会有许多区别。

  • CAN模块里有sleep和wakeup函数。

  • I2C模块分了Master、Slave和Mem三种模式,每种模式都由对应的读写函数。

  • SPI模块里有全双工模式下用的同时读写的函数。

这里写图片描述
非通讯外设的接口函数

非通讯外设的CONTROL部分中,不同的外设有不同的操作函数。比如 对于Rtc来说,需要能够取得当前的时

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值