OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3301|回复: 4

STM8S105内部时钟切换后TIM4定时器需要重新初始化配置吗

[复制链接]

53

主题

167

帖子

0

精华

高级会员

Rank: 4

积分
839
金钱
839
注册时间
2016-8-23
在线时间
116 小时
发表于 2019-9-3 17:43:03 | 显示全部楼层 |阅读模式
1金钱
最近做STM8S105的低功耗模式,实验过程中遇到了个问题。系统时钟(CPU时钟)由HSI切换到LSI之后,TIM4定时器好像出问题了。我的定时器配置如下:
void Init_Timer4(void)
{
  TIM4->CR1 = 0x01; //使能计数器
  TIM4->IER = 0x01; //更新中断使能
  TIM4->EGR = 0x01;
  TIM4->CNTR = 255; //计数器值 (255+1)/125000=2.048ms
  TIM4->ARR = 255; //自动重装的值
  TIM4->PSCR = 0x07; //分频值128 16MHZ/128=0.125MHZ(125000HZ)
}

时钟切换到LSI,定时器的分频是不是不能用的,是不是不可以分频??

最佳答案

查看完整内容[请看2#楼]

代码已经实现,只是时钟改为128KHZ后,运行速度有点慢,感觉还是用16MHZ的直接分频为1MHZ的
天道酬勤
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

53

主题

167

帖子

0

精华

高级会员

Rank: 4

积分
839
金钱
839
注册时间
2016-8-23
在线时间
116 小时
 楼主| 发表于 2019-9-3 17:43:04 | 显示全部楼层
紫气东升 发表于 2019-9-4 11:51
现在想到一种做法,就是在原来的定时器基础上修改计数值和自动重装载值为2,就可以达到16MHZ的定时周期的效 ...

代码已经实现,只是时钟改为128KHZ后,运行速度有点慢,感觉还是用16MHZ的直接分频为1MHZ的
天道酬勤
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2019-9-4 02:13:30 | 显示全部楼层
可以的,你试试不切换,直接用内部HSI,测试下看看?
回复

使用道具 举报

53

主题

167

帖子

0

精华

高级会员

Rank: 4

积分
839
金钱
839
注册时间
2016-8-23
在线时间
116 小时
 楼主| 发表于 2019-9-4 09:05:42 | 显示全部楼层
正点原子 发表于 2019-9-4 02:13
可以的,你试试不切换,直接用内部HSI,测试下看看?

嗯嗯,是可以用。只是在LSI状态下,如果不改定时器(128)分频的话,一次计数溢出需要256ms,时间太长了。
如果改成64分频,在HSI(16MHZ)下,一次计数溢出需要1.024ms,在LSI(128KHZ)下,一次计数溢出需要128ms。
如果改成32分频,在HSI(16MHZ)下,一次计数溢出需要0.512ms,在LSI(128KHZ)下,一次计数溢出需要64ms。
应该改哪种分频最好??
天道酬勤
回复

使用道具 举报

53

主题

167

帖子

0

精华

高级会员

Rank: 4

积分
839
金钱
839
注册时间
2016-8-23
在线时间
116 小时
 楼主| 发表于 2019-9-4 11:51:17 | 显示全部楼层
本帖最后由 紫气东升 于 2019-9-4 13:26 编辑

现在想到一种做法,就是在原来的定时器基础上修改计数值和自动重装载值为2,就可以达到16MHZ的定时周期的效果。有谁知道在程序运行中怎么修改定时器的配置?按照我的想法就是先暂停定时器或者定时器中断,然后修改配置,之后再打开定时器或者定时器中断。但是代码具体怎么写的就不清楚了。
天道酬勤
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 12:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表