FU68xx_5_MDU.h 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /******************* (C) COPYRIGHT 2021 Fortiortech Shenzhen *******************
  2. * File Name : FU68xx_2_SMDU.h
  3. * Creat Author : Any Lin, R&D
  4. * Modify Author : Any Lin, R&D
  5. * Creat Date : 2021-08-19
  6. * Modify Date : 2021-08-21
  7. * Description :
  8. ********************************************************************************
  9. * All Rights Reserved
  10. *******************************************************************************/
  11. #ifndef __FU68XX_5_SMDU_H__
  12. #define __FU68XX_5_SMDU_H__
  13. /******************************************************************************///Including Header Files
  14. #include <FU68xx_5_MCU.h>
  15. /******************************************************************************///Define Macro
  16. /******************************************************************************///Define Type
  17. /**
  18. * @brief SMDU的模式类型
  19. *
  20. * @note 使用@ref SMDU_RunNoBlock时, 其中的mode参数可以直接使用本枚举的内容
  21. * @note 使用@ref SMDU_RunBlock时, 其中的mode参数可以直接使用本枚举的内容
  22. */
  23. typedef enum
  24. {
  25. S1MUL = 0, /**< 有符号乘法, 计算结果左移1位 */
  26. SMUL = 1, /**< 有符号乘法 */
  27. UMUL = 2, /**< 无符号乘法 */
  28. DIV = 3, /**< 32/16无符号除法 */
  29. SIN_COS = 4, /**< Sin/Cos */
  30. ATAN = 5, /**< ATan */
  31. LPF = 6, /**< 低通滤波 */
  32. PI = 7 /**< PI */
  33. } ETypeSMDUMode;
  34. /******************************************************************************///External Symbols
  35. /******************************************************************************///External Function
  36. /**
  37. * @brief 运行SMDU且不等待运行结束
  38. *
  39. * @param stan (0-3) 要启动的计算单元编号
  40. * @param mode (0-7) 指定计算单元的模式, 可使用@ref ETypeSMDUMode 作为计算模式的设置\n
  41. * @ref S1MUL 有符号乘法, 计算结果左移1位 \n
  42. * @ref SMUL 有符号乘法 \n
  43. * @ref UMUL 无符号乘法 \n
  44. * @ref DIV 32/16无符号除法 \n
  45. * @ref SIN_COS Sin/Cos \n
  46. * @ref ATAN ATan \n
  47. * @ref LPF 低通滤波 \n
  48. * @ref PI PI \n
  49. */
  50. #define SMDU_RunNoBlock(stan, mode) do \
  51. { \
  52. MDU_CR = MDUSTA0 << stan | (unsigned char)mode; \
  53. } while (0)
  54. /**
  55. * @brief 运行SMDU且等待运行结束
  56. *
  57. * @param stan (0-3) 要启动的计算单元编号
  58. * @param mode (0-7) 指定计算单元的模式, 可使用@ref ETypeSMDUMode 作为计算模式的设置\n
  59. * @ref S1MUL 有符号乘法, 计算结果左移1位 \n
  60. * @ref SMUL 有符号乘法 \n
  61. * @ref UMUL 无符号乘法 \n
  62. * @ref DIV 32/16无符号除法 \n
  63. * @ref SIN_COS Sin/Cos \n
  64. * @ref ATAN ATan \n
  65. * @ref LPF 低通滤波 \n
  66. * @ref PI PI \n
  67. */
  68. #define SMDU_RunBlock(stan, mode) do \
  69. { \
  70. SMDU_RunNoBlock(stan, mode); \
  71. while (MDU_CR & MDUBSY); \
  72. } while (0);
  73. #endif