|
STM32G474xx HAL用户手册
|
CORDIC HAL模块驱动。该文件提供固件函数来管理CORDIC外设的以下功能:+ 初始化和反初始化函数+ 外设控制函数+ 回调函数+ IRQ handler管理+ 外设状态函数。 更多...
#include "stm32g4xx_hal.h"函数 | |
| static void | CORDIC_WriteInDataIncrementPtr (const CORDIC_HandleTypeDef *hcordic, const int32_t **ppInBuff) |
| 写入CORDIC处理的输入数据,并递增输入缓冲区指针。 | |
| static void | CORDIC_ReadOutDataIncrementPtr (const CORDIC_HandleTypeDef *hcordic, int32_t **ppOutBuff) |
| 读取CORDIC处理的输出数据,并递增输出缓冲区指针。 | |
| static void | CORDIC_DMAInCplt (DMA_HandleTypeDef *hdma) |
| DMA CORDIC输入数据处理完成回调。 | |
| static void | CORDIC_DMAOutCplt (DMA_HandleTypeDef *hdma) |
| DMA CORDIC输出数据处理完成回调。 | |
| static void | CORDIC_DMAError (DMA_HandleTypeDef *hdma) |
| DMA CORDIC通信错误回调。 | |
| HAL_StatusTypeDef | HAL_CORDIC_Init (CORDIC_HandleTypeDef *hcordic) |
| 初始化CORDIC外设及其关联句柄。 | |
| HAL_StatusTypeDef | HAL_CORDIC_DeInit (CORDIC_HandleTypeDef *hcordic) |
| 反初始化CORDIC外设。 | |
| __weak void | HAL_CORDIC_MspInit (CORDIC_HandleTypeDef *hcordic) |
| 初始化CORDIC MSP。 | |
| __weak void | HAL_CORDIC_MspDeInit (CORDIC_HandleTypeDef *hcordic) |
| 反初始化CORDIC MSP。 | |
| HAL_StatusTypeDef | HAL_CORDIC_RegisterCallback (CORDIC_HandleTypeDef *hcordic, HAL_CORDIC_CallbackIDTypeDef CallbackID, void(*pCallback)(CORDIC_HandleTypeDef *_hcordic)) |
| 注册CORDIC回调。 | |
| HAL_StatusTypeDef | HAL_CORDIC_UnRegisterCallback (CORDIC_HandleTypeDef *hcordic, HAL_CORDIC_CallbackIDTypeDef CallbackID) |
| 注销CORDIC回调。 | |
| HAL_StatusTypeDef | HAL_CORDIC_Configure (CORDIC_HandleTypeDef *hcordic, const CORDIC_ConfigTypeDef *sConfig) |
| 根据CORDIC_ConfigTypeDef结构中指定的参数配置CORDIC处理。 | |
| HAL_StatusTypeDef | HAL_CORDIC_Calculate (CORDIC_HandleTypeDef *hcordic, const int32_t *pInBuff, int32_t *pOutBuff, uint32_t NbCalc, uint32_t Timeout) |
| 以轮询模式执行CORDIC处理的数据,根据现有的CORDIC配置。 | |
| HAL_StatusTypeDef | HAL_CORDIC_CalculateZO (CORDIC_HandleTypeDef *hcordic, const int32_t *pInBuff, int32_t *pOutBuff, uint32_t NbCalc, uint32_t Timeout) |
| 以零开销模式执行CORDIC处理的数据(输入数据写入后立即读取输出数据),根据现有的CORDIC配置。 | |
| HAL_StatusTypeDef | HAL_CORDIC_Calculate_IT (CORDIC_HandleTypeDef *hcordic, const int32_t *pInBuff, int32_t *pOutBuff, uint32_t NbCalc) |
| 以中断模式执行CORDIC处理的数据,根据现有的CORDIC配置。 | |
| HAL_StatusTypeDef | HAL_CORDIC_Calculate_DMA (CORDIC_HandleTypeDef *hcordic, const int32_t *pInBuff, int32_t *pOutBuff, uint32_t NbCalc, uint32_t DMADirection) |
| 以DMA模式执行CORDIC处理的输入和/或输出数据,根据现有的CORDIC配置。 | |
| __weak void | HAL_CORDIC_ErrorCallback (CORDIC_HandleTypeDef *hcordic) |
| CORDIC错误回调。 | |
| __weak void | HAL_CORDIC_CalculateCpltCallback (CORDIC_HandleTypeDef *hcordic) |
| CORDIC计算完成回调。 | |
| void | HAL_CORDIC_IRQHandler (CORDIC_HandleTypeDef *hcordic) |
| 处理CORDIC中断请求。 | |
| HAL_CORDIC_StateTypeDef | HAL_CORDIC_GetState (const CORDIC_HandleTypeDef *hcordic) |
| 返回CORDIC句柄状态。 | |
| uint32_t | HAL_CORDIC_GetError (const CORDIC_HandleTypeDef *hcordic) |
| 返回CORDIC外设错误。 | |
CORDIC HAL模块驱动。该文件提供固件函数来管理CORDIC外设的以下功能:+ 初始化和反初始化函数+ 外设控制函数+ 回调函数+ IRQ handler管理+ 外设状态函数。
版权所有(c)2019 STMicroelectronics。保留所有权利。
================================================================================
##### 如何使用本驱动 #####
================================================================================
[..]
CORDIC HAL驱动可以使用如下方式:
(#) 通过实现HAL_CORDIC_MspInit()初始化CORDIC低层资源:
(++) 使用__HAL_RCC_CORDIC_CLK_ENABLE()启用CORDIC接口时钟
(++) 在使用中断的情况下(例如HAL_CORDIC_Calculate_IT())
(+++) 使用HAL_NVIC_SetPriority()配置CORDIC中断优先级
(+++) 使用HAL_NVIC_EnableIRQ()启用CORDIC IRQ handler
(+++) 在CORDIC IRQ handler中调用HAL_CORDIC_IRQHandler()
(++) 在使用DMA控制数据传输的情况下(例如HAL_CORDIC_Calculate_DMA())
(+++) 使用__HAL_RCC_DMA2_CLK_ENABLE()启用DMA2接口时钟
(+++) 配置并启用两个DMA通道,一个用于管理从内存到外设的数据传输(输入通道),
另一个用于管理从外设到内存的数据传输(输出通道)
(+++) 使用__HAL_LINKDMA()将初始化的DMA句柄关联到CORDIC DMA句柄
(+++) 为两个DMA通道上的传输完成中断配置优先级并启用NVIC。
使用HAL_NVIC_SetPriority()和HAL_NVIC_EnableIRQ()
(#) 使用HAL_CORDIC_Init()初始化CORDIC HAL。此函数
(++) 依赖HAL_CORDIC_MspInit()进行低层初始化,
(#) 使用HAL_CORDIC_Configure()配置CORDIC处理(计算)。此函数配置:
(++) 处理函数:余弦、正弦、相位、模量、反正切、
双曲余弦、双曲正弦、双曲反正切、
自然对数、平方根
(++) 缩放因子:1到2exp(-7)
(++) 输入数据宽度:32位输入数据大小(Q1.31格式)或16位
输入数据大小(Q1.15格式)
(++) 输出数据宽度:32位输出数据大小(Q1.31格式)或16位
输出数据大小(Q1.15格式)
(++) 一次计算预期的32位写入次数:一次32位写入
或两次32位写入
(++) 一次计算后预期的32位读取次数:一次32位读取
或两次32位读取
(++) 精度:计算1到15个周期(周期越多,精度越高)
(#) 提供四种处理(计算)函数:
(++) 轮询模式:处理API是阻塞函数
即它处理数据并等待处理完成
API为HAL_CORDIC_Calculate
(++) 轮询零开销模式:处理API是阻塞函数
即它处理数据并等待处理完成
比标准轮询模式稍快,但也阻塞AHB总线
API为HAL_CORDIC_CalculateZO
(++) 中断模式:处理API是非阻塞函数
即它在中断下处理数据
API为HAL_CORDIC_Calculate_IT
(++) DMA模式:处理API是非阻塞函数,CPU不
用于数据传输,
即数据传输由DMA保证
API为HAL_CORDIC_Calculate_DMA
(#) 调用HAL_CORDIC_DeInit()反初始化CORDIC外设。此函数
(++) 依赖HAL_CORDIC_MspDeInit()进行低层反初始化,
*** 回调注册 ***
=============================================
当编译定义USE_HAL_CORDIC_REGISTER_CALLBACKS设置为1时,
允许用户动态配置驱动回调。
使用函数HAL_CORDIC_RegisterCallback()注册中断回调。
函数HAL_CORDIC_RegisterCallback()允许注册以下回调:
(+) 错误回调 : 错误回调。
(+) 计算完成回调 : 计算完成回调。
(+) MspInitCallback : CORDIC MspInit。
(+) MspDeInitCallback : CORDIC MspDeInit。
此函数需要HAL外设句柄、回调ID和用户回调函数指针作为参数。
使用函数HAL_CORDIC_UnRegisterCallback()将回调重置为默认弱函数。
HAL_CORDIC_UnRegisterCallback需要HAL外设句柄和回调ID作为参数。
此函数允许重置以下回调:
(+) 错误回调 : 错误回调。
(+) 计算完成回调 : 计算完成回调。
(+) MspInitCallback : CORDIC MspInit。
(+) MspDeInitCallback : CORDIC MspDeInit。
默认情况下,在HAL_CORDIC_Init()之后且状态为HAL_CORDIC_STATE_RESET时,
所有回调都设置为相应的弱函数:
例如HAL_CORDIC_ErrorCallback()、HAL_CORDIC_CalculateCpltCallback()。
例外的是MspInit和MspDeInit函数,它们在HAL_CORDIC_Init()/ HAL_CORDIC_DeInit()中
仅当这些回调为空(未预先注册)时才重置为遗留弱函数。
否则,如果MspInit或MspDeInit不为空,HAL_CORDIC_Init()/ HAL_CORDIC_DeInit()
保留并使用用户预先注册的MspInit/MspDeInit回调
回调只能在HAL_CORDIC_STATE_READY状态下注册/注销。
例外的是MspInit/MspDeInit可以在HAL_CORDIC_STATE_READY或HAL_CORDIC_STATE_RESET状态下注册/注销,
因此注册的(用户)MspInit/DeInit回调可在Init/DeInit期间使用。
在这种情况下,首先使用HAL_CORDIC_RegisterCallback()注册MspInit/MspDeInit用户回调
然后再调用HAL_CORDIC_DeInit()或HAL_CORDIC_Init()函数。
当编译定义USE_HAL_CORDIC_REGISTER_CALLBACKS设置为0或
未定义时,回调注册功能不可用,所有回调都设置为相应的弱函数。
定义于文件stm32g4xx_hal_cordic.c中。
1.7.6.1