使用STM32F3的COMP1,外部信号可以引发比较器输出反转. 但死活不进比较器中断.我尝试开启外部中断21,开启后程序会卡住。有没有用过这个功能的帮忙分析下。我将比较器输出屏蔽掉也不起作用。
LL_COMP_InitTypeDef COMP_InitStruct = {0};
LL_GPIO_InitTypeDef GPIO_InitStruct = {0};
LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOA);
/**COMP1 GPIO Configuration
PA1 ------> COMP1_INP
*/
GPIO_InitStruct.Pin = LL_GPIO_PIN_0;
GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
GPIO_InitStruct.Alternate = LL_GPIO_AF_8;
LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.Pin = LL_GPIO_PIN_1;
GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/* COMP1 interrupt Init */
NVIC_SetPriority(COMP_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),5, 0));
NVIC_EnableIRQ(COMP_IRQn);
COMP_InitStruct.PowerMode = LL_COMP_POWERMODE_ULTRALOWPOWER;
COMP_InitStruct.InputPlus = LL_COMP_INPUT_PLUS_IO1;
COMP_InitStruct.InputMinus = LL_COMP_INPUT_MINUS_VREFINT;
COMP_InitStruct.InputHysteresis = LL_COMP_HYSTERESIS_NONE;
COMP_InitStruct.OutputSelection = LL_COMP_OUTPUT_NONE;
COMP_InitStruct.OutputPolarity = LL_COMP_OUTPUTPOL_NONINVERTED;
LL_COMP_Init(COMP1, &COMP_InitStruct);
LL_COMP_Enable(COMP1);
void COMP1_2_IRQHandler(void)
{
/* USER CODE BEGIN COMP_IRQn 0 */
/* USER CODE END COMP_IRQn 0 */
printf("\r\nCOMP_IRQHandler");
//LL_EXTI_ClearFlag_0_31(LL_EXTI_LINE_21);
//LL_EXTI_DisableIT_0_31(LL_EXTI_LINE_21);
/* USER CODE BEGIN COMP_IRQn 1 */
/* USER CODE END COMP_IRQn 1 */
} |