[demo程序] NV32F100x 库文件acmp.c中文注释

[复制链接]
 楼主| jp_chen 发表于 2017-7-26 16:38 | 显示全部楼层 |阅读模式

  1. /******************************************************************************
  2. *
  3. * [url=home.php?mod=space&uid=247401]@brief[/url] providing APIs for configuring ACMP.
  4. *
  5. *******************************************************************************
  6. *
  7. * provide APIs for configuring ACMP
  8. ******************************************************************************/
  9. #include "common.h"
  10. #include "acmp.h"
  11. /******************************************************************************
  12. * Global variables
  13. ******************************************************************************/

  14. /******************************************************************************
  15. * Constants and macros
  16. ******************************************************************************/

  17. /******************************************************************************
  18. * Local types
  19. ******************************************************************************/

  20. /******************************************************************************
  21. * Local function prototypes
  22. ******************************************************************************/

  23. /******************************************************************************
  24. * Local variables
  25. ******************************************************************************/

  26. ACMP_CallbackPtr ACMP_Callback[2] = {(ACMP_CallbackPtr)NULL};

  27. /******************************************************************************
  28. * Local functions
  29. ******************************************************************************/
  30. /******************************************************************************
  31. * Global functions
  32. ******************************************************************************/
  33. void ACMP0_Isr(void);
  34. void ACMP1_Isr(void);

  35. /******************************************************************************
  36. * ACMP api list.
  37. *
  38. *//*! @addtogroup acmp_api_list
  39. * @{
  40. *******************************************************************************/

  41. /*****************************************************************************//*!
  42. *
  43. * [url=home.php?mod=space&uid=72445]@[/url] 按每个控制领域初始化ACMP
  44. *        
  45. * @ 参数  pACMPx        指向其中一个ACMP寄存器的基地址
  46. * @ 参数   pConfig       指向配置结构体.  
  47. *
  48. * @ 无返回
  49. *
  50. *****************************************************************************/
  51. void ACMP_Init(ACMP_Type *pACMPx, ACMP_ConfigType *pConfig)
  52. {
  53.     if(ACMP0 == pACMPx)
  54.     {   
  55.         /*使能APCM总线时钟*/
  56.         SIM->SCGC |= SIM_SCGC_ACMP0_MASK;

  57.         /*  使能APCM中断*/
  58.         if(pConfig->sCtrlStatus.bits.bIntEn)
  59.             NVIC_EnableIRQ(ACMP0_IRQn);
  60.     }
  61.     else
  62.     {
  63.         SIM->SCGC |= SIM_SCGC_ACMP1_MASK;
  64.         if(pConfig->sCtrlStatus.bits.bIntEn)
  65.             NVIC_EnableIRQ(ACMP1_IRQn);            
  66.     }
  67.     /*ACMP正输入和负输入的选择不必相同*/
  68.     pACMPx->C0 = pConfig->sPinSelect.byte;  /*选择ACMP的输入*/
  69.     ACMP_ConfigDAC(pACMPx, &pConfig->sDacSet );  /*设置ACMP内部DAC*/
  70.     //pACMPx->C1 = pConfig->sDacSet.byte;     
  71.     pACMPx->C2 = pConfig->sPinEnable.byte;    /*ACMP输入引脚使能*/
  72.     pACMPx->CS = pConfig->sCtrlStatus.byte; /*配置ACMP控制和状态寄存器*/
  73. }


  74. /*****************************************************************************//*!
  75. *
  76. * @ 向ACMPx_C1寄存器写数据,配置ACMP内部DAC.
  77. *        
  78. * @ 参数   pACMPx      指向其中一个ACMP寄存器基地址.
  79. * @ 参数   pDACConfig   指向 ACMP DAC 控制结构体.
  80. *
  81. * @ 无返回.
  82. *
  83. *
  84. *****************************************************************************/
  85. void ACMP_ConfigDAC(ACMP_Type *pACMPx, ACMP_DACType *pDACConfig)
  86. {
  87.     pACMPx->C1 = pDACConfig->byte;  
  88. }

  89. /*****************************************************************************//*!
  90. *
  91. * @ 复位ACMP模块,使其恢复到默认状态
  92. *        
  93. * @ 参数   pACMPx     指向其中一个ACMP寄存器基地址.
  94. *
  95. * @ 无返回
  96. *
  97. *
  98. *****************************************************************************/
  99. void ACMP_DeInit(ACMP_Type *pACMPx)
  100. {
  101.     if(ACMP0 == pACMPx)
  102.     {   
  103.         if(pACMPx->CS & ACMP_CS_ACIE_MASK)  
  104.             NVIC_DisableIRQ(ACMP0_IRQn);    /*禁用ACMP中断*/
  105.     }
  106.     else
  107.     {
  108.         if(pACMPx->CS & ACMP_CS_ACIE_MASK)
  109.             NVIC_DisableIRQ(ACMP1_IRQn);            
  110.     }
  111.     /*寄存器恢复默认值*/
  112.     pACMPx->CS = 0;
  113.     pACMPx->C0 = 0;
  114.     pACMPx->C1 = 0;
  115.     pACMPx->C2 = 0;
  116.    
  117.                 /*禁用ACMP模块的总线时钟*/
  118.     if(ACMP0 == pACMPx)
  119.     {   
  120.         SIM->SCGC &= ~SIM_SCGC_ACMP0_MASK;
  121.     }
  122.     else
  123.     {
  124.         SIM->SCGC &= ~SIM_SCGC_ACMP1_MASK;           
  125.     }
  126. }

  127. /*****************************************************************************//*!
  128. *
  129. * @  设置ACMP的回调函数,通过中断服务函数调用
  130. *        
  131. * @ 参数  pACMPx       指向ACMP模块基地址
  132. * @ 参数   pfnCallback  指向回调函数
  133. *
  134. * @ 无返回.
  135. *
  136. *
  137. *****************************************************************************/
  138. void ACMP_SetCallback(ACMP_Type *pACMPx, ACMP_CallbackPtr pfnCallback)
  139. {
  140.     if(ACMP0 == pACMPx)
  141.     {
  142.         ACMP_Callback[0] = pfnCallback;
  143.     }
  144.     else
  145.     {
  146.         ACMP_Callback[1] = pfnCallback;
  147.     }
  148. }

  149. /*! @} End of acmp_api_list                                                  */


  150. /*****************************************************************************//*!
  151. *
  152. * @   ACMP0 中断服务函数.
  153. *        
  154. * @ 参数  无.
  155. *
  156. * @ 无返回.
  157. *
  158. *
  159. *****************************************************************************/
  160. void ACMP0_Isr(void)
  161. {

  162.     if(ACMP_Callback[0])
  163.     {
  164.         ACMP_Callback[0]();             /*调用回调函数*/
  165.     }
  166. }

  167. /*****************************************************************************//*!
  168. *
  169. * @   ACMP1 中断函数.
  170. *        
  171. * @ 参数无
  172. *
  173. * @ 无返回
  174. *
  175. * @ Pass/ Fail criteria: none.
  176. *
  177. *****************************************************************************/
  178. void ACMP1_Isr(void)
  179. {

  180.     if(ACMP_Callback[1])
  181.     {
  182.         ACMP_Callback[1]();             /*调用回调函数*/
  183.     }
  184. }



您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

113

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

20

主题

113

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部