你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 5507|回复: 1

stm32 tim时钟分频的问题

[复制链接]

1

主题

3

回帖

0

蝴蝶豆

新手上路

最后登录
2020-4-27
发表于 2010-11-28 15:36:31 | 显示全部楼层 |阅读模式
我使用的是stm32f103的芯片,在使用tim定时器时,碰到一个奇怪的现象。
使用如下代码时,能够正常的每200ms产生一次中断事件。
如果将红色的部分改为
TimInitStruct.TIM_ClockDivision = TIM_CKD_DIV2;
或TimInitStruct.TIM_ClockDivision = TIM_CKD_DIV4;
  
执行时仍然是200ms产生一次中断,不知何解?
如果从字面解释看,DIV2之后,应该是400ms产生一次中断才对呀
注:使用std3.3库函数
 /* TIM3 clock enable */
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
 TimInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;   // 系统时钟72M,定时器基准频率APB1*2 
 TimInitStruct.TIM_Prescaler = 36000-1;                    // 计数频率为2KHz
 TimInitStruct.TIM_CounterMode = TIM_CounterMode_Up; // 向上计数
 TimInitStruct.TIM_Period = 400; // ARR 72M/36K=2Khz  2K/400=5  1/5=200ms产生一次中断
 TIM_TimeBaseInit(TIM3, &TimInitStruct);
 TIM_ClearFlag(TIM3,TIM_FLAG_Update);
 TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
 TIM_Cmd(TIM3, ENABLE);     //time3
 NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;  //time3 中断 优先级  显示刷新
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; 
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
 NVIC_Init(&NVIC_InitStructure);
 
回复

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2010-11-29 09:20:12 | 显示全部楼层

RE:stm32 tim时钟分频的问题

TimInitStruct.TIM_Period = 400;
你把这个也改一下,比如改为800,在同一频率下。这个决定输出的时间间隔。
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版