|
STM32G474xx HAL用户手册
|
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