初级会员

- 积分
- 62
- 金钱
- 62
- 注册时间
- 2015-5-2
- 在线时间
- 8 小时
|
5金钱
int TIME2_Init(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//?ì????????
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//????????
NVIC_Init(&NVIC_InitStructure);
TIM_DeInit(TIM2);
TIM_TimeBaseInitStructure.TIM_Prescaler = 7199;//?¤·?????
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Down;//?¨??????????
TIM_TimeBaseInitStructure.TIM_Period = 9999;//??????,1000ms????????
TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;//?¨?±?÷???±??·?????1·???
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);//?ò???¨?±?÷????
TIM_Cmd(TIM2, ENABLE);//?????¨?±?÷
return 0;
}
请忽略掉那些变成乱码的注释,,
本来想要实现定时器1秒定时,但是观察到定时时间非常小,好像根本就没分频一样,7199分频系数时按理应该是2秒中断一次吧,我这边看到led闪烁不对,debug模式中看到自动装填标记位没有被置位,这样也能自动装填吗?单步运行也没看到TIM_TimeBaseInit函数中去设置那个自动装填位啊,怎么个意思?还有改过计数方向,没有解决问题,改过计数值为9也都看不出变化,中断函数中有用串口发送数据,串口通信是正常的,说明72m的系统时钟应该是没有问题的。找找茬,大神,拜谢!
|
|