HC32F460PETB的PB2的Vout123

将PB2配置为电压比较器的输出

主函数

复制代码
int32_t main(void)
{
    stc_irq_signin_config_t stcIrqRegCfg;
    /* Unlock peripherals or registers */
    LL_PERIPH_WE(EXAMPLE_PERIPH_WE);
    /* Configure BSP */
    BSP_CLK_Init();
    /* Configure CMP */
    CmpConfig();

    /*NVIC configuration for interrupt */
    stcIrqRegCfg.enIRQn = INT010_IRQn;
    stcIrqRegCfg.enIntSrc = CMP_INT_SRC;
    stcIrqRegCfg.pfnCallback = &CmpIrqCallback;
    (void)INTC_IrqSignIn(&stcIrqRegCfg);
    NVIC_ClearPendingIRQ(stcIrqRegCfg.enIRQn);
    NVIC_SetPriority(stcIrqRegCfg.enIRQn, DDL_IRQ_PRIO_15);
    NVIC_EnableIRQ(stcIrqRegCfg.enIRQn);

    /* Peripheral registers write protected */
    LL_PERIPH_WP(EXAMPLE_PERIPH_WP);
    /* Configuration finished */
    for (;;) {
    }
}

比较器配置

复制代码
static void CmpConfig(void)
{
    stc_cmp_init_t stcCmpInit;
    stc_gpio_init_t stcGpioInit;

    /* Enable peripheral Clock */
    FCG_Fcg3PeriphClockCmd(CMP_PERIP_CLK, ENABLE);

    /* Port function configuration for CMP */
    (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16PinAttr = PIN_ATTR_ANALOG;
    (void)GPIO_Init(CMP2_INP1_PORT, CMP2_INP1_PIN, &stcGpioInit);
    GPIO_SetFunc(CMP_VCOUT2_PORT, CMP_VCOUT2_PIN, GPIO_FUNC_1);

    /* 8bit DAC enable */
    CMP_8BitDAC_WriteData(CMP_8BITDAC_CH2, CMP_8BITDAC_VOLT);
    CMP_8BitDAC_Cmd(CMP_8BITDAC_CH, ENABLE);

    /* Clear structure */
    (void)CMP_StructInit(&stcCmpInit);
    stcCmpInit.u16PositiveInput = CMP2_POSITIVE_CMP2_INP1;
    stcCmpInit.u16NegativeInput = CMP_NEGATIVE_INM3;  /* DAC2 */
    stcCmpInit.u16OutPolarity = CMP_OUT_INVT_OFF;
    stcCmpInit.u16OutDetectEdge = CMP_DETECT_EDGS_BOTH;
    stcCmpInit.u16OutFilter = CMP_OUT_FILTER_CLK_DIV32;
    (void)CMP_NormalModeInit(CMP_TEST_UNIT, &stcCmpInit);

    /* Enable interrupt if need */
    CMP_IntCmd(CMP_TEST_UNIT, ENABLE);
    /* Enable CMP output */
    CMP_CompareOutCmd(CMP_TEST_UNIT, ENABLE);
    /* Enable VCOUT */
    CMP_PinVcoutCmd(CMP_TEST_UNIT, ENABLE);
}

static void CmpIrqCallback(void)

{

if (SET == CMP_GetStatus(CMP_TEST_UNIT)) {

BSP_LED_On(LED_RED);

BSP_LED_Off(LED_BLUE);

} else {

BSP_LED_On(LED_BLUE);

BSP_LED_Off(LED_RED);

}

}

配置

复制代码
#define CMP_INT_SRC                     (INT_SRC_CMP2)
#define CMP_TEST_UNIT                   (CM_CMP2)
#define CMP_PERIP_CLK                   (FCG3_PERIPH_CMP)
/* Define port and pin for CMP */
/* CMP2 compare voltage CMP2_INP1 */
#define CMP2_INP1_PORT                  (GPIO_PORT_A)
#define CMP2_INP1_PIN                   (GPIO_PIN_04)
/* VCOUT2 */
#define CMP_VCOUT2_PORT                 (GPIO_PORT_B)
#define CMP_VCOUT2_PIN                  (GPIO_PIN_02)

#define CMP_8BITDAC_VOLT                (0x80U)
#define CMP_8BITDAC_CH                  (CMP_8BITDAC_CH2)

测试结果:

通过PA4输入PWM,相应的PWM从PB2输出。

相关推荐
硅基手札5 小时前
【串口技术系列文档 10】低功耗与唤醒机制
驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设
HRTOS6 小时前
HRTOS 官网内容调整记录:首页、系统架构与文档页面优化
单片机·系统架构·51单片机
雨田言炎7 小时前
STM32之SysTick--系统定时器(内容简单但重要,附件有程序源码)
stm32·单片机·嵌入式硬件
ccbw167 小时前
CH32M007K8U7:集成48V三相预驱的RISC-V电机MCU
单片机·嵌入式硬件
编程圈子9 小时前
I.MX6U 裸机开发 24. 电容触摸屏与 I2C 驱动
单片机·嵌入式硬件
Zwawa9 小时前
传感器模块都在交出什么:从模拟电压到数字协议
c语言·单片机·嵌入式
FakeOccupational10 小时前
【电路笔记 STM32】Cortex-M7 UART 中断模式(串口接收中断+串口空闲中断)
笔记·stm32·单片机
小李不想当小白10 小时前
USART串口协议(STM32标准库学习笔记)
经验分享·笔记·stm32·单片机·嵌入式硬件·学习
无垠的广袤11 小时前
拆解电子价签
单片机·蓝牙·diy·调试器·jlink·墨水屏
小何好运暴富开心幸福11 小时前
嵌入式历史与生态
stm32·单片机·mcu