STM32时间定时器设置TIM_CKD_DIV1是什么意思。

皓月鸣心 2016-07-07 09:03:56
时间定时器的结构体赋值如下:

TIM_TimeBaseInitTypeDef TimeInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);//使能定时器3时钟
TimeInitStructure.TIM_Prescaler=8400-1;
TimeInitStructure.TIM_Period=5000-1;//5000*(8400/84000 000)=500ms
TimeInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TimeInitStructure.TIM_CounterMode=TIM_CounterMode_Up;

其中TimeInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;是进行分频的,但不是很懂。
我的理解是其将APB1时钟进行了分频,但这个分频有什么用?如果APB1的时钟是84MHz,采用 TIM_CKD_DIV2后是42MHz吗?
我试了一下,将TIM_CKD_DIV1改成TIM_CKD_DIV2或TIM_CKD_DIV4,其他设置没变,时间定时器的定时时间好像没有变化。。。

还有另外一个问题:我如何查看各个系统时钟,有没有相应的库函数来读取各个系统时钟的数值?
...全文
12696 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
JULY瓜牛 2020-08-11
  • 打赏
  • 举报
回复 2
定时器时钟预分频设置为1,也就是不分频,直接使用相应总线频率。
一见倾心·L 2020-05-03
  • 打赏
  • 举报
回复 2
TimeInitStructure.TIM_ClockDivision 也是对TIMxCLK进行分频,不过它是输出到ETRP数字滤波部分,会影响滤波器的采样频率。
Hoanc 2019-03-29
  • 打赏
  • 举报
回复
在F4的库里,stm32f4xx_rcc.h里,有 typedef struct { uint32_t SYSCLK_Frequency; /*!< SYSCLK clock frequency expressed in Hz */ uint32_t HCLK_Frequency; /*!< HCLK clock frequency expressed in Hz */ uint32_t PCLK1_Frequency; /*!< PCLK1 clock frequency expressed in Hz */ uint32_t PCLK2_Frequency; /*!< PCLK2 clock frequency expressed in Hz */ }RCC_ClocksTypeDef; 可在main函数里 RCC_ClocksTypeDef get_rcc_clock; //获取系统时钟状态 然后使用 RCC_GetClocksFreq(&get_rcc_clock); printf("SYSCLK:%d\n PCLK1:%d\n HCLK:%d\n PCLK2:%d\n", get_rcc_clock.SYSCLK_Frequency, get_rcc_clock.PCLK1_Frequency, get_rcc_clock.HCLK_Frequency, get_rcc_clock.PCLK2_Frequency ); 这样可以获取这四个时钟的频率。
GleasonWei 2017-07-18
  • 打赏
  • 举报
回复
不知道现在又没用,我的理解是TIM_CKD_DIV0时定时器输入时钟频率为APB的一倍,其他时候是其两倍,如果有错请大神纠正
phanix2016 2016-07-08
  • 打赏
  • 举报
回复 2
分频的问题你要回去看书理解锁相环。不管那种系统都有一个基础时钟,各模块功能不同工作时钟不同,要靠这个基准时钟分频或倍频

27,518

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧