STM32G474xx HAL用户手册
stm32g4xx_hal_cordic. h
转到该文件的文档。
00001 /**
00002   ******************************************************************************
00003   * @file    stm32g4xx_ hal_ cordic.h
00004   * @author  MCD Application Team
00005   * @brief   本文件包含CORDIC固件库的所有函数原型。
00006   *          库。
00007   ******************************************************************************
00008   * @attention
00009   *
00010   * Copyright (c) 2019 STMicroelectronics.
00011   * All rights reserved.
00012   *
00013   * This software is licensed under terms that can be found in the LICENSE file
00014   * in the root directory of this software component.
00015   * If no LICENSE file comes with this software, it is provided AS-IS.
00016   *
00017   ******************************************************************************
00018   */
00019 
00020 /* 定义以防止递归包含 -------------------------------------*/
00021 #ifndef STM32G4xx_ HAL_ CORDIC_H
00022 #define STM32G4xx_ HAL_ CORDIC_H
00023 
00024 #ifdef __cplusplus
00025 extern "C" {
00026 #endif
00027 
00028 /* 包含 ------------------------------------------------------------------*/
00029 #include "stm32g4xx_ hal_ def.h"
00030 
00031 #if defined(CORDIC)
00032 /** @addtogroup STM32G4xx_ HAL_驱动程序
00033   * @{
00034   */
00035 
00036 /** @addtogroup CORDIC
00037   * @{
00038   */
00039 
00040 /* 导出的类型 ------------------------------------------------------------*/
00041 /** @defgroup CORDIC_导出的类型 CORDIC导出的类型
00042   * @{
00043   */
00044 
00045 /**
00046   * @brief  CORDIC HAL状态结构定义
00047   */
00048 typedef enum
00049 {
00050   HAL_ CORDIC_STATE_ RESET     = 0x00U,  /*!< CORDIC尚未初始化或禁用 */
00051   HAL_ CORDIC_STATE_ READY     = 0x01U,  /*!< CORDIC已初始化并可使用   */
00052   HAL_ CORDIC_STATE_ BUSY      = 0x02U,  /*!< CORDIC内部处理正在进行     */
00053   HAL_ CORDIC_STATE_ ERROR     = 0x03U   /*!< CORDIC错误状态                     */
00054 } HAL_ CORDIC_ StateTypeDef;
00055 
00056 /**
00057   * @brief  CORDIC句柄结构定义
00058   */
00059 #if USE_ HAL_ CORDIC_ REGISTER_ CALLBACKS == 1
00060 typedef struct __ CORDIC_ HandleTypeDef
00061 #else
00062 typedef struct
00063 #endif /* USE_ HAL_ CORDIC_ REGISTER_ CALLBACKS */
00064 {
00065   CORDIC_ TypeDef                *Instance;   /*!< 寄存器基地址 */
00066 
00067   const int32_ t                 *pInBuff;    /*!< 指向CORDIC输入数据缓冲区的指针 */
00068 
00069   int32_ t                       *pOutBuff;   /*!< 指向CORDIC输出数据缓冲区的指针 */
00070 
00071   uint32_ t                      NbCalcToOrder; /*!< 待排序的计算数量 */
00072 
00073   uint32_ t                      NbCalcToGet; /*!< 待获取的计算结果数量 */
00074 
00075   uint32_ t                      DMADirection; /*!< CORDIC DMA传输方向 */
00076 
00077   DMA_ HandleTypeDef             *hdmaIn;     /*!< CORDIC外设输入数据DMA句柄参数 */
00078 
00079   DMA_ HandleTypeDef             *hdmaOut;    /*!< CORDIC外设输出数据DMA句柄参数 */
00080 
00081   HAL_ LockTypeDef               Lock;        /*!< CORDIC锁定对象 */
00082 
00083   __IO HAL_ CORDIC_ StateTypeDef  State;       /*!< CORDIC状态 */
00084 
00085   __IO uint32_ t                 ErrorCode;   /*!< CORDIC外设错误代码
00086                                                   此参数可以是@ref CORDIC_ Error_ Code的值 */
00087 
00088 #if USE_ HAL_ CORDIC_ REGISTER_ CALLBACKS == 1
00089   void (* ErrorCallback)(struct __ CORDIC_ HandleTypeDef *hcordic);          /*!< CORDIC错误回调 */
00090   void (* CalculateCpltCallback)(struct __ CORDIC_ HandleTypeDef *hcordic);  /*!< CORDIC计算完成回调 */
00091 
00092   void (* MspInitCallback)(struct __ CORDIC_ HandleTypeDef *hcordic);        /*!< CORDIC Msp Init回调 */
00093   void (* MspDeInitCallback)(struct __ CORDIC_ HandleTypeDef *hcordic);      /*!< CORDIC Msp DeInit回调 */
00094 
00095 #endif /* (USE_ HAL_ CORDIC_ REGISTER_ CALLBACKS) */
00096 
00097 } CORDIC_ HandleTypeDef;
00098 
00099 /**
00100   * @brief  CORDIC配置结构定义
00101   */
00102 typedef struct
00103 {
00104   uint32_ t   Function;     /*!< 函数
00105                                 此参数可以是@ref CORDIC_ Function的值 */
00106 
00107   uint32_ t   Scale;        /*!< 缩放因子
00108                                 此参数可以是@ref CORDIC_ Scale的值 */
00109 
00110   uint32_ t   InSize;       /*!< 输入数据宽度
00111                                 此参数可以是@ref CORDIC_ In_ Size的值 */
00112 
00113   uint32_ t   OutSize;      /*!< 输出数据宽度
00114                                 此参数可以是@ref CORDIC_ Out_ Size的值 */
00115 
00116   uint32_ t   NbWrite;      /*!< 一次计算所需的32位写入次数
00117                                 此参数可以是@ref CORDIC_ Nb_ Write的值 */
00118 
00119   uint32_ t   NbRead;       /*!< 一次计算后预期的32位读取次数
00120                                 此参数可以是@ref CORDIC_ Nb_ Read的值 */
00121 
00122   uint32_ t   Precision;    /*!< 计算周期数
00123                                 此参数可以是@ref CORDIC_ Precision_ In_ Cycles_ Number的值 */
00124 
00125 } CORDIC_ ConfigTypeDef;
00126 
00127 #if USE_ HAL_ CORDIC_ REGISTER_ CALLBACKS == 1
00128 /**
00129   * @brief  HAL CORDIC回调ID枚举定义
00130   */
00131 typedef enum
00132 {
00133   HAL_ CORDIC_ ERROR_ CB_ ID             = 0x00U,    /*!< CORDIC错误回调ID */
00134   HAL_ CORDIC_ CALCULATE_ CPLT_ CB_ ID    = 0x01U,    /*!< CORDIC计算完成回调ID */
00135 
00136   HAL_ CORDIC_ MSPINIT_ CB_ ID           = 0x02U,    /*!< CORDIC MspInit回调ID */
00137