在线时间2 小时
UID95847
ST金币0
蝴蝶豆0
注册时间2008-12-2
新手上路
- 最后登录
- 2020-4-27
|
a0a.1 0b0c
我使用的是stm32f103的芯片,在使用tim定时器时,碰到一个奇怪的现象。
使用如下代码时,能够正常的每200ms产生一次中断事件。
如果将红色的部分改为
TimInitStruct.TIM_ClockDivision = TIM_CKD_DIV2;
或TimInitStruct.TIM_ClockDivision = TIM_CKD_DIV4;
执行时仍然是200ms产生一次中断,不知何解?
如果从字面解释看,DIV2之后,应该是400ms产生一次中断才对呀
注:使用std3.3库函数
/* TIM3 clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
TimInitStruct.TIM_ClockDivision = TIM_CKD_DIV1; // 系统时钟72M,定时器基准频率APB1*2
TimInitStruct.TIM_Prescaler = 36000-1; // 计数频率为2KHz
TimInitStruct.TIM_CounterMode = TIM_CounterMode_Up; // 向上计数
TimInitStruct.TIM_Period = 400; // ARR 72M/36K=2Khz 2K/400=5 1/5=200ms产生一次中断
TIM_TimeBaseInit(TIM3, &TimInitStruct);
TIM_ClearFlag(TIM3,TIM_FLAG_Update);
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
TIM_Cmd(TIM3, ENABLE); //time3
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //time3 中断 优先级 显示刷新
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
|
|