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

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-22 01:50
易方亮 发表于 2018-8-22 12:03
麻烦再回答我以下这个问题:
        uwPrescalerValue = (uint32_t) ((SystemCoreClock / 1000000) - 1);//1mh ...

不是很懂楼主的意思
首先SystemCoreClock的值如果是8MHZ,那应该是8 000 000
其次在定时器时间计算中  t=(预分频+1)/clk*(重载值+1)
你这里用滴答定时器来举例和正常定时器配置是有区别的,楼主先去看看滴答定时器配置吧

一周热门 更多>