我使用安装在我自己的板上的
STM32MP151CAA3。
我想在 Cortex-M4 中生成
tiM5 全局中断。
的
我写了下面的代码,但是,TIM5 全局中断没有发生(TIM5_IRQHandler 没有被调用)。
在 Keil MDK-ARM Debbuger 中,我已确认反映了以下设置。
的
--TIM5_DIER->UIE = 1
--TIM5_CR1->CEN = 1
--当TIM5 CNT达到TIM5_ARR值时,设置TIM5_SR->UIF。
的
- #include "stm32mp1xx_hal.h"
- void TIM5_Start(void)
- {
- TIM_HandleTypeDef m_handleTim5;
- TIM_ClockConfigTypeDef sClockSourceConfig;
- TIM_MasterConfigTypeDef sMasterConfig;
- __HAL_RCC_TIM5_CLK_ENABLE();
- m_handleTim5.Instance = TIM5;
- m_handleTim5.Init.Prescaler = 41999;
- m_handleTim5.Init.CounterMode = TIM_COUNTERMODE_UP;
- m_handleTim5.Init.Period = 0;
- m_handleTim5.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
- HAL_TIM_Base_Init(&m_handleTim5);
- sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
- HAL_TIM_ConfigClockSource(&m_handleTim5, &sClockSourceConfig);
- sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
- sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
- HAL_TIMEx_MasterConfigSynchronization(&m_handleTim5, &sMasterConfig);
- HAL_NVIC_EnableIRQ(TIM5_IRQn);
- TIM5->ARR = (time * 2) - 1;
- TIM5->EGR |= TIM_EGR_UG;
- TIM5->SR = 0;
- HAL_TIM_Base_Start_IT(&m_handleTim5);
- }
供大家参考,TIM4 global interrupt 不会出现类似情况。
但是TIM6或TIM7全局中断发生没有任何问题。
的
上面的代码有什么遗漏吗?