我原来在学习51单片机的时候知道51的定时器可以当一个“闹钟”用,就是打开它,然后让它一直计数,加到预先设定的值后进入中断。我刚开始接触STM32,也想这么试一下,所以没使用TIM的任何通道,就是设置了时间基,然后打开定时器,但是计数器加到预装载值后,为什么进不去中断呢????求哪位专家帮忙解答下,小弟先行谢过了。
这是我写的程序,
主程序:int main(void)
{
// u32 cnt = 0x000fffff;
/* System Clocks Configuration */
RCC_Configuration();
NVIC_Configuration();
/* Configure the GPIO ports */
GPIO_Configuration();
timer_configuration();
}
设置定时器:void timer_configuration(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_DeInit(TIM3); /* deinitiate */
TIM_TimeBaseStructure.TIM_Period =800;
TIM_TimeBaseStructure.TIM_Prescaler=0x5;
TIM_TimeBaseStructure.TIM_ClockDivision=0x0;
TIM_TimeBaseStructure.TIM_CounterMode =TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);
TIM_Cmd(TIM3, ENABLE);
TIM_ITConfig(TIM3,TIM_IT_CC1,ENABLE);
TIM_iTConfig(TIM3,ENABLE);
}
中断嵌套部分的设置:
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
}
此帖出自
小平头技术问答
一周热门 更多>