137的和135的是一样的。
#include "bat32g137.h"
#include "cmp.h"
int main(void)
{
// postive input CMP_PSIDE_VCIN12--P20
// negtive input CMP_NSIDE_IVREF 内部电压参考源
// 默认是双边沿触发中断
CMP_Init(CMP_CHANNEL_1,CMP_PSIDE_VCIN12,CMP_NSIDE_IVREF);
// 内部VCC GND 作为 比较器电压
CMP_VREF_Init(CMP_CHANNEL_1,CMP_VDD_VSS_REFERENCE_VOLTAGE);
// 启动比较器
CMP_Start(CMP_CHANNEL_1);
// 设置以内部电源为参考电压,可以256等级细分
CMP_VREF_Set_Value(CMP_CHANNEL_1,128); // VCC*128/256,VCC = 3.3,3.3*128/256 = 1.65V
while(1)
{
}
}
void IRQ25_Handler(void) __attribute__((alias("cmp1_interrupt")));
/***********************************************************************************************************************
* Function Name: cmp1_interrupt
* @brief CMP0 interrupt service routine
* @param None
* @return None
***********************************************************************************************************************/
void cmp1_interrupt(void)
{
INTC_ClearPendingIRQ(CMP1_IRQn); /* clear INTCMP1 interrupt flag */
/* Start user code. Do not edit comment generated here */
/* End user code. Do not edit comment generated here */
}
实际测试比较器输出OK,和预期吻合。