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输出。

相关推荐
恶魔泡泡糖35 分钟前
stm32F103C8T6标准库串口接收之中断方式2
stm32·单片机·嵌入式硬件
充哥单片机设计1 小时前
【STM32开源项目】智能小区充电桩
stm32·单片机·嵌入式硬件·毕业设计·小区充电桩·智能小区充电桩
嵌入式-老费1 小时前
esp32开发与应用(如何解决SoC冷启动的问题)
单片机·嵌入式硬件
充哥单片机设计3 小时前
【STM32开源项目】智能语音台灯
stm32·单片机·嵌入式硬件·毕业设计·单片机设计·智能语音台灯
EatFan3 小时前
全栈自造 Status Deck(四):硬件终于到了,从点亮屏幕到跑通第一个 Demo
单片机·物联网·esp32
sunoo-2294 小时前
【嵌入式裸机开发Day04】i.MX6ULL 蜂鸣器驱动详解:从引脚地址查找到代码实现全流程
arm开发·单片机·嵌入式硬件·学习·串口·裸机
Brilliantwxx5 小时前
【STM32】 SPI阻塞式通信与HAL源码 (源码分析)
stm32·单片机·嵌入式硬件
老当益壮梁奶奶6 小时前
ARM汇编学习笔记(五):从按键轮询到 GIC 中断控制器(ARM Cortex-A7 )
arm开发·笔记·单片机·嵌入式硬件
西城微科方案开发7 小时前
基于SIC8F0535芯片的红外额温枪开发方案
单片机·嵌入式硬件