• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32F103C8T6低功耗的问题

蓝蓝的天 2019-03-06 浏览量:971
我做一个项目,用到低功耗,现在用的片子是STM32F103C8T6。
程序我是这样改的:
Stm32_Clock_Init(2);        
晶振是8M,2倍频,也就是16M。
system_stm32f10x.c里这样改的:



4.jpg


结果程序下进去以后,按键反应异常。
原来72M的时候正常,我按键是定时器中断检测,10ms。
现在需要按得时间长了。
按得时间短了没反应。
我不明白,这是怎么回事?
到底是因为进入低功耗的原因,还是因为降到16M,
导致定时时间变了呢?请大神指教,谢谢!

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 定时器根据主频重新配置了吗,如果没有定时器中断时间就变成了45ms
    • 发布于 2019-03-06
    • 举报
    • 评论 3
    • 0
    • 0
蓝蓝的天 回复了 代人凌峰:原来没有。后来我改成这样了。//TIM_TimebaseStructure.TIM_Prescaler =(7200-1); TIM_TimebaseStructure.TIM_Prescaler =(1600-1); 回复
代人凌峰 回复了 代人凌峰:改完以后按键中断还是有问题吗?在中断里加一个IO口翻转的函数,用示波器看一下波形是不是20ms的周期 回复
蓝蓝的天 回复了 代人凌峰:改完以后就没问题了 回复

其他答案 数量:5
  • 72m到16m频率差的很多所以按键时间也长了,你可以降低一半频率试试
    • 发布于2019-03-06
    • 举报
    • 评论 0
    • 0
    • 0

  • 因为降低到16M,因为这里没有改定时器的时钟分频器,因此定时器的定时值实际上变长了,需要更长时间满足这个防抖动
    • 发布于2019-03-06
    • 举报
    • 评论 0
    • 0
    • 0

  • 应该是你的时钟的配置不对的,可以先做到一个秒事件看看,验证时钟的正确性
    • 发布于2019-03-06
    • 举报
    • 评论 0
    • 0
    • 0

  • 由于频率的降低,你的时钟配置也要进行修改,定时器的配置也要修改的
    • 发布于2019-03-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 主频降低你systick计时自然变慢了,所需的时间自然变长了,很正常,你把systick分频值缩小即可。

    • 发布于2019-03-19
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

STM32F103C8T6低功耗的问题