求助各位坛友,关于定时器定时的问题!!!

2019-07-20 06:33发布

新手村村民求助各位坛友,我想问一下,定时器的定时时间,下面的代码为什么是将定时器4定时1S。用的是8M的晶振,芯片是STM32l4RGT,我想的是用8M除以Prescaler再乘以Period应该是等于10 000 000Hz应该就是10MHz不应该是10S秒吗?
void tim4_init(void)
{
__HAL_RCC_TIM4_CLK_ENABLE();
Tim4Handle.Instance=TIM4;                          
Tim4Handle.Init.Prescaler=(uint32_t) (8000 - 1);                  
Tim4Handle.Init.CounterMode=TIM_COUNTERMODE_UP;   
Tim4Handle.Init.Period=10000-1;                        
Tim4Handle.Init.ClockDivision = 0;
HAL_TIM_Base_Init(&Tim4Handle);   
HAL_TIM_Base_Start_IT(&Tim4Handle);
HAL_NVIC_SetPriority(TIM4_IRQn,9,0);   
HAL_NVIC_EnableIRQ(TIM4_IRQn);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
13条回答
易方亮
2019-07-21 23:16
HXYDJ 发表于 2018-8-22 11:24
外部晶振还要经过倍频和分频才会得到定时器的时钟频率

麻烦再回答下我这个问题,谢谢   :   
uwPrescalerValue = (uint32_t) ((SystemCoreClock / 1000000) - 1);//1mhz 1us
这句代码也是其中一个定时器的,它的注释写着1us是为什么的?
其中SystemCoreClock的值是80 000 000 ,也就是预分频Prescaler是80 ,为什么预分频80,就是1us,晶振和上面一样的定时器是一样的

一周热门 更多>