调了一个月,快疯了 系统配置:stm32F103RC+单电机+3shunt+hall 第一:为什么TIM1有update中断入口函数而NVIC中没有配置TIM1的TIM1_UP_IRQn,而tim1的update中断函数应该在每次溢出时配置采样的通道的,肯定每个pwm周期都要进的啊?而在update中断函数中为什么又关掉中断使能(LL_TIM_DisableIT_UPDATE),其他使能的地方只有R3_2_SwitchOnPWM这个函数里,难道只要电机启动 的时候进入一次吗?怎么可能 static void MX_NVIC_Init(void) { /* ADC1_2_IRQn interrupt configuration */ HAL_NVIC_SetPriority(ADC1_2_IRQn, 2, 0); HAL_NVIC_EnableIRQ(ADC1_2_IRQn); /* DMA1_Channel1_IRQn interrupt configuration */ HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0); HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn); /* TIM2_IRQn interrupt configuration */ HAL_NVIC_SetPriority(TIM2_IRQn, 3, 0); HAL_NVIC_EnableIRQ(TIM2_IRQn); /* USART3_IRQn interrupt configuration */ HAL_NVIC_SetPriority(USART3_IRQn, 3, 1); HAL_NVIC_EnableIRQ(USART3_IRQn); } void TIMx_UP_M1_IRQHandler(void) { /* USER CODE BEGIN TIMx_UP_M1_IRQn 0 */ /* USER CODE END TIMx_UP_M1_IRQn 0 */ LL_TIM_ClearFlag_UPDATE(TIM1); R3_2_TIMx_UP_IRQHandler(&PWM_Handle_M1); LL_TIM_DisableIT_UPDATE(TIM1); /* USER CODE BEGIN TIMx_UP_M1_IRQn 1 */ /* USER CODE END TIMx_UP_M1_IRQn 1 */ } 第二:为什么NVIC中配置了DMA中断而没有中断入口函数,真的要疯了 跪求解答。好人一生平安! |
第二:如果没有DMA入口函数,可能是在程序中等dma转换完成直接读取DMA传输到的地址
你的代码NVIC中没有配置和使能高级定时器的update中断,也能进那个中断服务函数吗?