STM32G474xx HAL用户手册
函数
stm32g4xx_hal_cordic.c文件参考

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管理+ 外设状态函数。

作者:
MCD应用团队
注意:

版权所有(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中。