|
STM32G474xx HAL用户手册
|
SRAM HAL模块驱动程序。此文件提供通用固件来驱动安装为外部设备的SRAM存储器。更多...
#include "stm32g4xx_hal.h"函数 | |
| static void | SRAM_DMACplt (DMA_HandleTypeDef *hdma) |
| DMA SRAM传输完成回调。 | |
| static void | SRAM_DMACpltProt (DMA_HandleTypeDef *hdma) |
| DMA SRAM传输完成回调。 | |
| static void | SRAM_DMAError (DMA_HandleTypeDef *hdma) |
| DMA SRAM错误回调。 | |
| HAL_StatusTypeDef | HAL_SRAM_Init (SRAM_HandleTypeDef *hsram, FMC_NORSRAM_TimingTypeDef *Timing, FMC_NORSRAM_TimingTypeDef *ExtTiming) |
| 执行SRAM设备初始化序列。 | |
| HAL_StatusTypeDef | HAL_SRAM_DeInit (SRAM_HandleTypeDef *hsram) |
| 执行SRAM设备反初始化序列。 | |
| __weak void | HAL_SRAM_MspInit (SRAM_HandleTypeDef *hsram) |
| SRAM MSP初始化。 | |
| __weak void | HAL_SRAM_MspDeInit (SRAM_HandleTypeDef *hsram) |
| SRAM MSP反初始化。 | |
| __weak void | HAL_SRAM_DMA_XferCpltCallback (DMA_HandleTypeDef *hdma) |
| DMA传输完成回调。 | |
| __weak void | HAL_SRAM_DMA_XferErrorCallback (DMA_HandleTypeDef *hdma) |
| DMA传输错误完成回调。 | |
| HAL_StatusTypeDef | HAL_SRAM_Read_8b (SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint8_t *pDstBuffer, uint32_t BufferSize) |
| 从SRAM存储器读取8位缓冲区。 | |
| HAL_StatusTypeDef | HAL_SRAM_Write_8b (SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint8_t *pSrcBuffer, uint32_t BufferSize) |
| 向SRAM存储器写入8位缓冲区。 | |
| HAL_StatusTypeDef | HAL_SRAM_Read_16b (SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint16_t *pDstBuffer, uint32_t BufferSize) |
| 从SRAM存储器读取16位缓冲区。 | |
| HAL_StatusTypeDef | HAL_SRAM_Write_16b (SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint16_t *pSrcBuffer, uint32_t BufferSize) |
| 向SRAM存储器写入16位缓冲区。 | |
| HAL_StatusTypeDef | HAL_SRAM_Read_32b (SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pDstBuffer, uint32_t BufferSize) |
| 从SRAM存储器读取32位缓冲区。 | |
| HAL_StatusTypeDef | HAL_SRAM_Write_32b (SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pSrcBuffer, uint32_t BufferSize) |
| 向SRAM存储器写入32位缓冲区。 | |
| HAL_StatusTypeDef | HAL_SRAM_Read_DMA (SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pDstBuffer, uint32_t BufferSize) |
| 从SRAM存储器读取数据使用DMA传输。 | |
| HAL_StatusTypeDef | HAL_SRAM_Write_DMA (SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pSrcBuffer, uint32_t BufferSize) |
| 向SRAM存储器写入数据缓冲区使用DMA传输。 | |
| HAL_StatusTypeDef | HAL_SRAM_RegisterCallback (SRAM_HandleTypeDef *hsram, HAL_SRAM_CallbackIDTypeDef CallbackId, pSRAM_CallbackTypeDef pCallback) |
| 注册用户SRAM回调用于覆盖弱预定义回调。 | |
| HAL_StatusTypeDef | HAL_SRAM_UnRegisterCallback (SRAM_HandleTypeDef *hsram, HAL_SRAM_CallbackIDTypeDef CallbackId) |
| 注销用户SRAM回调重定向到弱预定义回调。 | |
| HAL_StatusTypeDef | HAL_SRAM_RegisterDmaCallback (SRAM_HandleTypeDef *hsram, HAL_SRAM_CallbackIDTypeDef CallbackId, pSRAM_DmaCallbackTypeDef pCallback) |
| 注册用户SRAM DMA传输回调用于覆盖弱预定义回调。 | |
| HAL_StatusTypeDef | HAL_SRAM_WriteOperation_Enable (SRAM_HandleTypeDef *hsram) |
| 动态启用SRAM写操作。 | |
| HAL_StatusTypeDef | HAL_SRAM_WriteOperation_Disable (SRAM_HandleTypeDef *hsram) |
| 动态禁用SRAM写操作。 | |
| HAL_SRAM_StateTypeDef | HAL_SRAM_GetState (const SRAM_HandleTypeDef *hsram) |
| 返回SRAM控制器状态。 | |
SRAM HAL模块驱动程序。此文件提供通用固件来驱动安装为外部设备的SRAM存储器。
版权所有 (c) 2019 STMicroelectronics。保留所有权利。
本软件根据可在此软件组件根目录的LICENSE文件中找到的条款进行许可。如果本软件未附带LICENSE文件,则按"原样"提供。
==============================================================================
##### 如何使用本驱动器 #####
==============================================================================
[..]
本驱动器是一个通用分层驱动器,包含用于
控制SRAM存储器的一组API。它使用FMC层函数来
与SRAM设备进行接口。
应按照以下顺序配置FMC以与SRAM/PSRAM存储器进行接口:
(#) 声明一个SRAM_HandleTypeDef句柄结构,例如:
SRAM_HandleTypeDef hsram;和:
(++) 使用结构成员的允许值填充SRAM_HandleTypeDef句柄的"Init"字段
(++) 使用NOR或SRAM设备的预定义基寄存器实例填充SRAM_HandleTypeDef句柄的"Instance"字段
(++) 使用NOR或SRAM扩展模式的预定义基寄存器实例填充SRAM_HandleTypeDef句柄的"Extended"字段
(#) 声明两个FMC_NORSRAM_TimingTypeDef结构,分别用于正常和扩展
模式时序;例如:
FMC_NORSRAM_TimingTypeDef Timing和FMC_NORSRAM_TimingTypeDef ExTiming;
并使用结构成员的允许值填充其字段
(#) 通过调用函数HAL_SRAM_Init()初始化SRAM控制器。此函数
执行以下序列:
(##) 使用函数HAL_SRAM_MspInit()进行MSP硬件层配置
(##) 使用FMC NORSRAM接口函数FMC_NORSRAM_Init()进行控制寄存器配置
(##) 使用FMC NORSRAM接口函数FMC_NORSRAM_Timing_Init()进行时序寄存器配置
(##) 使用FMC NORSRAM接口函数FMC_NORSRAM_Extended_Timing_Init()进行扩展模式时序寄存器配置
(##) 使用宏__FMC_NORSRAM_ENABLE()启用SRAM设备
(#) 在此阶段,您可以对连接到NOR/SRAMbank的存储器执行读/写访问。您可以使用以下API执行轮询或DMA传输:
(++) HAL_SRAM_Read()/HAL_SRAM_Write()用于轮询读/写访问
(++) HAL_SRAM_Read_DMA()/HAL_SRAM_Write_DMA()用于DMA读/写传输
(#) 您还可以通过调用控制API HAL_SRAM_WriteOperation_Enable()/
HAL_SRAM_WriteOperation_Disable()来控制SRAM设备,分别启用/禁用SRAM写操作
(#) 您可以通过调用函数HAL_SRAM_GetState()持续监控SRAM设备的HAL状态
*** 回调注册 ***
=============================================
[..]
当编译定义USE_HAL_SRAM_REGISTER_CALLBACKS设置为1时
允许用户动态配置驱动器回调。
使用函数HAL_SRAM_RegisterCallback()注册用户回调,
它允许注册以下回调:
(+) MspInitCallback : SRAM MspInit.
(+) MspDeInitCallback : SRAM MspDeInit.
此函数接受HAL外设句柄、回调ID和用户回调函数指针作为参数。
使用函数HAL_SRAM_UnRegisterCallback()将回调重置为默认
弱(覆盖)函数。它允许重置以下回调:
(+) MspInitCallback : SRAM MspInit.
(+) MspDeInitCallback : SRAM MspDeInit.
此函数接受HAL外设句柄和回调ID作为参数。
默认情况下,在HAL_SRAM_Init之后,如果状态为HAL_SRAM_STATE_RESET
所有回调都将重置为相应的传统弱(覆盖)函数。
MspInit和MspDeInit回调的例外情况除外,它们分别
在HAL_SRAM_Init和HAL_SRAM_DeInit中重置为传统弱(覆盖)函数,
仅当这些回调为空(事先未注册)时才执行。
否则,如果MspInit或MspDeInit不为空,HAL_SRAM_Init和HAL_SRAM_DeInit
保留并使用用户MspInit/MspDeInit回调(事先已注册)
回调只能在就绪状态下注册/注销。
MspInit/MspDeInit回调为例外,它们可以在就绪或复位状态下注册/注销,
因此注册(用户)的MspInit/DeInit回调可用于初始化/反初始化期间。
在这种情况下,首先使用HAL_SRAM_RegisterCallback注册MspInit/MspDeInit用户回调
然后再调用HAL_SRAM_DeInit或HAL_SRAM_Init函数。
当编译定义USE_HAL_SRAM_REGISTER_CALLBACKS设置为0或
未定义时,回调注册功能不可用,
并使用弱(覆盖)回调。
定义于文件stm32g4xx_hal_sram.c中。
1.7.6.1