不好意思,各位,初学
STM32,对于定时器的计算和频率的获取有些不太理解
我想稍微可以略精确的控制定时器的时间,
网上看到公式
tica, sans-serif, 脣脦脤氓">f=(72M/(TIM_Prescaler+1)*(1+TIM_Period)) ;
不好意思,各位,初学STM32,对于定时器的计算和频率的获取有些不太理解
我想稍微可以略精确的控制定时器的时间,
网上看到公式
f=(72M/(TIM_Prescaler+1)*(1+TIM_Period)) ;
void MY_TIMERINIT(int arr,int psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
NVIC_InitTypeDef NVIC_InitStruct;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInitStruct.TIM_Period = arr;
TIM_TimeBaseInitStruct.TIM_Prescaler = psc;
TIM_TimeBaseInit( TIM2, &TIM_TimeBaseInitStruct);
TIM_ClearITPendingBit(TIM1, TIM_IT_Update);
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
NVIC_InitStruct.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1 ;
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
NVIC_Init(&NVIC_InitStruct);
}
arr = 9999;
psc = 7199;
打印的非常快
我看到代码里有
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
看上去是APB1总线得到时钟,分频是1,看上去好像是APB1过来多少,那时钟频率就是多少。
我看到手册里的图
APB1的时钟好像是AHB分频来的,AHB的时钟代码哪里可以看到呢?
不是很理解。。。
问的比较基础,,,我也查过一些资料
麻烦各位了 谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
用的是标准库,
如果可以的话,HAL的也顺带求指教,最近一直都没有做,可以马克一下做个笔记。
非常感谢。
一周热门 更多>