新手村村民求助各位坛友,我想问一下,定时器的定时时间,下面的代码为什么是将定时器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);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
不是很懂楼主的意思
首先SystemCoreClock的值如果是8MHZ,那应该是8 000 000
其次在定时器时间计算中 t=(预分频+1)/clk*(重载值+1)
你这里用滴答定时器来举例和正常定时器配置是有区别的,楼主先去看看滴答定时器配置吧
一周热门 更多>