stm32通用定时器中断问题。。。求解答
想写一个4ms中断的程序,发现程序进不了中断。请大侠们帮帮我。不甚感激!部分代码如下:
VOID funSysApiTimer2Init( VOID )
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE);
TIM_DeInit(TIM2);
TIM_TimeBaseStructure.TIM_Period=4; /* 自动重装载寄存器周 期的值(计数值) *//* 累计 TIM_Period个频率后产生一个更新或者中断 */
TIM_TimeBaseStructure.TIM_Prescaler= (36000 - 1);/* 时钟预分频数 例如:时钟频率=25MHZ/(时钟预分频+1) */
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; /* 采样分频 */
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; /* 向上计数模式 */
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
TIM_ClearFlag(TIM2, TIM_FLAG_Update);/* 清除溢出中断标志 */
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
TIM_Cmd(TIM2, ENABLE);/* 开启时钟 */
}
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
中断程序如下:
if ( TIM_GetITStatus(TIM2 , TIM_IT_Update) != RESET )
{
TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update);
gbDrvScanFlag = ON;
}
[解决办法]
我也正在郁闷中,整了一下午到现在,我就不明白了,代码都和网上的一样,我一遍遍的查过去了,还是不会发生中断。
解决了交流下啊。
帮你顶上去
[解决办法]
问题解决了,很陌名其秒的,程序基本没怎么改,调试前和调试后
出在这
TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct)
没有中断前这TIMX(0X40000000)的地址上 全是空值。赋值语句都没用,全是0。
这下面是成功过的
这个地址上就有东西了。