我写了个比较器程序,如下:
#include "lpc8xx.h"
#include "type.h"
#include "ioconf.h"
#include "swm.h"
/*********************************************************************************************************
** Function name: AcomInit
** Descriptions: Ä£Äâ±È½ÏÆ÷³õʼ»¯
** input parameters: ÎÞ
** output parameters: ÎÞ
** Returned value: ÎÞ
*********************************************************************************************************/
void AcomInit (void)
{
LPC_SYSCON->PDRUNCFG &= ~(1 << 15); /* Ä£Äâ±È½ÏÆ÷Éϵç */
LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 19); /* ³õʼ»¯ ACMP AHBʱÖÓ */
LPC_IOCON->PIO0_1 &= ~(3 << 3); /* P0_1ÎÞÉÏÏÂÀ µç×è */
LPC_SWM->PINENABLE0 &= ~(1 << 1); /* P0_1ΪACMP_I2 */
LPC_SWM->PINASSIGN8 &= ~(0xFF << 8);
LPC_SWM->PINASSIGN8 |= (2 << 8); /* ±È½ÏÆ÷Êä³öµ½LED */
LPC_CMP->LAD = ( 1 << 0) | /* ʹÄÜLAD */
(10 << 1) | /* 10/31±¶»ù×¼µçѹ */
( 0 << 6); /* »ù×¼µçѹѡÔñVDD */
LPC_CMP->CTRL = (2 << 3) | /* Ë«±ßÑØÖÐ¶Ï */
(0 << 6) | /* Ä£Äâ±È½ÏÆ÷Òì²½Êä³ö */
(2 << 8) | /* ͬÏàÊäÈë¶ËÑ¡ÔñACMP_I2 */
(0 << 11) | /* ·´ÏàÊäÈë¶ËÑ¡ÔñLADÊä³ö */
(3 << 25); /* ÖͻصçѹÉèÖÃΪ 20 mV */
NVIC_DisableIRQ( CMP_IRQn ); /* ¹Ø±ÕÄ£Äâ±È½ÏÆ÷ÖÐ¶Ï */
}
/*********************************************************************************************************
** Function name: main
** Descriptions: GPIO_Led Àý³Ì£º
** LEDÁ¬½ÓP0.7£¬
** ÍⲿÊäÈëÐźŽÓP0.1£¬¼´ACMP_I2¡£LADÊä³ö LAD_OUT = 3300 * 10 / 31 mV = 1064 mV
** ÔËÐгÌÐò£¬µ±£ºACMP_I2 < LAD_OUT ʱ£¬LEDµãÁÁ£»
** µ±£ºACMP_I2 > LAD_OUT ʱ£¬LEDϨÃð¡£
** input parameters: ÎÞ
** output parameters: ÎÞ
** Returned value: ÎÞ
*********************************************************************************************************/
int main()
{
SystemInit();
AcomInit ();
while (1) {
}
}
P0.1做ACMP_I2,输出到LED。下载程序后,没反应。P0.1接按键,按下按键,松开。LED一直为高电平。
请高手指教,谢谢!
此帖出自
小平头技术问答
一周热门 更多>