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

查看: 5477|回复: 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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版