STM32G474xx HAL用户手册
stm32g4xx_ll_cordic.h
转到此文件的文档。
00001 /**
00002   ******************************************************************************
00003   * @file    stm32g4xx_ll_cordic.h
00004   * @author  MCD Application Team
00005   * @brief   Header file of CORDIC LL module.
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * Copyright (c) 2019 STMicroelectronics.
00010   * All rights reserved.
00011   *
00012   * This software is licensed under terms that can be found in the LICENSE file
00013   * in the root directory of this software component.
00014   * If no LICENSE file comes with this software, it is provided AS-IS.
00015   *
00016   ******************************************************************************
00017   */
00018 
00019 /* Define to prevent recursive inclusion -------------------------------------*/
00020 #ifndef STM32G4xx_LL_CORDIC_H
00021 #define STM32G4xx_LL_CORDIC_H
00022 
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026 
00027 /* Includes ------------------------------------------------------------------*/
00028 #include "stm32g4xx.h"
00029 
00030 /** @addtogroup STM32G4xx_LL_Driver
00031   * @{
00032   */
00033 
00034 #if defined(CORDIC)
00035 
00036 /** @defgroup CORDIC_LL CORDIC
00037   * @{
00038   */
00039 
00040 /* Private variables ---------------------------------------------------------*/
00041 
00042 /* Private constants ---------------------------------------------------------*/
00043 
00044 /* Private macros ------------------------------------------------------------*/
00045 
00046 /* Exported types ------------------------------------------------------------*/
00047 
00048 /* Exported constants --------------------------------------------------------*/
00049 /** @defgroup CORDIC_LL_Exported_Constants CORDIC Exported Constants
00050   * @{
00051   */
00052 
00053 /** @defgroup CORDIC_LL_EC_GET_FLAG Get Flags Defines
00054   * @brief    Flags defines which can be used with LL_CORDIC_ReadReg function.
00055   * @{
00056   */
00057 #define LL_CORDIC_FLAG_RRDY                CORDIC_CSR_RRDY
00058 /**
00059   * @}
00060   */
00061 
00062 /** @defgroup CORDIC_LL_EC_IT IT Defines
00063   * @brief    IT defines which can be used with LL_CORDIC_ReadReg and LL_CORDIC_WriteReg functions.
00064   * @{
00065   */
00066 #define LL_CORDIC_IT_IEN                   CORDIC_CSR_IEN            /*!< Result Ready interrupt enable */
00067 /**
00068   * @}
00069   */
00070 
00071 /** @defgroup CORDIC_LL_EC_FUNCTION FUNCTION
00072   * @{
00073   */
00074 #define LL_CORDIC_FUNCTION_COSINE          (0x00000000U)                                                          /*!< Cosine */
00075 #define LL_CORDIC_FUNCTION_SINE            ((uint32_t)(CORDIC_CSR_FUNC_0))                                        /*!< Sine */
00076 #define LL_CORDIC_FUNCTION_PHASE           ((uint32_t)(CORDIC_CSR_FUNC_1))                                        /*!< Phase */
00077 #define LL_CORDIC_FUNCTION_MODULUS         ((uint32_t)(CORDIC_CSR_FUNC_1 | CORDIC_CSR_FUNC_0))                    /*!< Modulus */
00078 #define LL_CORDIC_FUNCTION_ARCTANGENT      ((uint32_t)(CORDIC_CSR_FUNC_2))                                        /*!< Arctangent */
00079 #define LL_CORDIC_FUNCTION_HCOSINE         ((uint32_t)(CORDIC_CSR_FUNC_2 | CORDIC_CSR_FUNC_0))                    /*!< Hyperbolic Cosine */
00080 #define LL_CORDIC_FUNCTION_HSINE           ((uint32_t)(CORDIC_CSR_FUNC_2 | CORDIC_CSR_FUNC_1))                    /*!< Hyperbolic Sine */
00081 #define LL_CORDIC_FUNCTION_HARCTANGENT     ((uint32_t)(CORDIC_CSR_FUNC_2 | CORDIC_CSR_FUNC_1 | CORDIC_CSR_FUNC_0))/*!< Hyperbolic Arctangent */
00082 #define LL_CORDIC_FUNCTION_NATURALLOG      ((uint32_t)(CORDIC_CSR_FUNC_3))                                        /*!< Natural Logarithm */
00083 #define LL_CORDIC_FUNCTION_SQUAREROOT      ((uint32_t)(CORDIC_CSR_FUNC_3 | CORDIC_CSR_FUNC_0))                    /*!< Square Root */
00084 /**
00085   * @}
00086   */
00087 
00088 /** @defgroup CORDIC_LL_EC_PRECISION PRECISION
00089   * @{
00090   */
00091 #define LL_CORDIC_PRECISION_1CYCLE         ((uint32_t)(CORDIC_CSR_PRECISION_0))
00092 #define LL_CORDIC_PRECISION_2CYCLES        ((uint32_t)(CORDIC_CSR_PRECISION_1))
00093 #define LL_CORDIC_PRECISION_3CYCLES        ((uint32_t)(CORDIC_CSR_PRECISION_1 | CORDIC_CSR_PRECISION_0))
00094 #define LL_CORDIC_PRECISION_4CYCLES        ((uint32_t)(CORDIC_CSR_PRECISION_2))
00095 #define LL_CORDIC_PRECISION_5CYCLES        ((uint32_t)(CORDIC_CSR_PRECISION_2 | CORDIC_CSR_PRECISION_0))
00096 #define LL_CORDIC_PRECISION_6CYCLES        ((uint32_t)(CORDIC_CSR_PRECISION_2 | CORDIC_CSR_PRECISION_1))
00097 #define LL_CORDIC_PRECISION_7CYCLES        ((uint32_t)(CORDIC_CSR_PRECISION_2\
00098                                                        | CORDIC_CSR_PRECISION_1 | CORDIC_CSR_PRECISION_0))
00099 #define LL_CORDIC_PRECISION_8CYCLES        ((uint32_t)(CORDIC_CSR_PRECISION_3))
00100 #define LL_CORDIC_PRECISION_9CYCLES        ((uint32_t)(CORDIC_CSR_PRECISION_3 | CORDIC_CSR_PRECISION_0))
00101 #define LL_CORDIC_PRECISION_10CYCLES       ((uint32_t)(CORDIC_CSR_PRECISION_3 | CORDIC_CSR_PRECISION_1))
00102 #define LL_CORDIC_PRECISION_11CYCLES       ((uint32_t)(CORDIC_CSR_PRECISION_3\
00103                                                        | CORDIC_CSR_PRECISION_1 | CORDIC_CSR_PRECISION_0))
00104 #define LL_CORDIC_PRECISION_12CYCLES       ((uint32_t)(CORDIC_CSR_PRECISION_3 | CORDIC_CSR_PRECISION_2))
00105 #define LL_CORDIC_PRECISION_13CYCLES       ((uint32_t)(CORDIC_CSR_PRECISION_3\
00106                                                        | CORDIC_CSR_PRECISION_2 | CORDIC_CSR_PRECISION_0))
00107 #define LL_CORDIC_PRECISION_14CYCLES       ((uint32_t)(CORDIC_CSR_PRECISION_3\
00108                                                        | CORDIC_CSR_PRECISION_2 | CORDIC_CSR_PRECISION_1))
00109 #define LL_CORDIC_PRECISION_15CYCLES       ((uint32_t)(CORDIC_CSR_PRECISION_3\
00110                                                        | CORDIC_CSR_PRECISION_2 | CORDIC_CSR_PRECISION_1\
00111                                                        | CORDIC_CSR_PRECISION_0))
00112 /**
00113   * @}
00114   */
00115 
00116 /** @defgroup CORDIC_LL_EC_SCALE SCALE
00117   * @{
00118   */
00119 #define LL_CORDIC_SCALE_0                  (0x00000000U)
00120 #define LL_CORDIC_SCALE_1                  ((uint32_t)(CORDIC_CSR_SCALE_0))
00121 #define LL_CORDIC_SCALE_2                  ((uint32_t)(CORDIC_CSR_SCALE_1))
00122 #define LL_CORDIC_SCALE_3                  ((uint32_t)(CORDIC_CSR_SCALE_1 | CORDIC_CSR_SCALE_0))
00123 #define LL_CORDIC_SCALE_4                  ((uint32_t)(CORDIC_CSR_SCALE_2))
00124 #define LL_CORDIC_SCALE_5                  ((uint32_t)(CORDIC_CSR_SCALE_2 | CORDIC_CSR_SCALE_0))
00125 #define LL_CORDIC_SCALE_6                  ((uint32_t)(CORDIC_CSR_SCALE_2 | CORDIC_CSR_SCALE_1))
00126 #define LL_CORDIC_SCALE_7                  ((uint32_t)(CORDIC_CSR_SCALE_2 | CORDIC_CSR_SCALE_1 | CORDIC_CSR_SCALE_0))
00127 /**
00128   * @}
00129   */
00130 
00131 /** @defgroup CORDIC_LL_EC_NBWRITE NBWRITE
00132   * @{
00133   */
00134 #define LL_CORDIC_NBWRITE_1                (0x00000000U)         /*!< One 32-bits write containing either only one
00135                                                                       32-bits data input (Q1.31 format), or two
00136                                                                       16-bits data input (Q1.15 format) packed