本帖最后由 柴库柴库 于 2025-10-2 19:03 编辑
在STM32CubeIDE中使用STM32G030,且未使用HAL。我通过.ioc文件启用了定时器中断。当我在中断处理程序(位于stm32g0xx_it.h文件中)设置断点时,程序并未进入该处理程序。即使尝试为中断设置优先级,问题仍然存在。以下是代码:
GPIO_InitStruct.Pin = IC_mode_Pin;
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_2;
LL_GPIO_Init(IC_mode_GPIO_Port, &GPIO_InitStruct);
/* TIM1 interrupt Init */
NVIC_SetPriority(TIM1_BRK_UP_TRG_COM_IRQn, 0);
NVIC_EnableIRQ(TIM1_BRK_UP_TRG_COM_IRQn);
NVIC_SetPriority(TIM1_CC_IRQn, 0);
NVIC_EnableIRQ(TIM1_CC_IRQn);
使用了TIM1中断,中断处理程序如下。
void TIM1_CC_IRQHandler(void)
{
/* USER CODE BEGIN TIM1_CC_IRQn 1 */
if(TIM1->SR |= TIM_SR_CC3IF) // When a capture occurs, the corresponding CC1IF flag is set
{
TIM1->SR &= ~TIM_SR_CC3IF; //clear the flag by writing it to 0
TIM1->CCMR1 |=TIM_CCMR1_OC1M_2; //Force inactive level
TIM3->CR1 |= TIM_CR1_CEN; // Starts the counter
}
/* USER CODE END TIM1_CC_IRQn 1 */
}
|
|