[STM32F1] 【我与ST MCU的故事】细节决定成败

[复制链接]
 楼主| ddllxxrr 发表于 2019-3-17 12:57 | 显示全部楼层 |阅读模式
我在很早之前就开始关注ST32了,不是因为今天有这个活动我才这么说。我也不是见人说人话,见鬼说鬼话的人。
我记得STM32刚推出的时候是上海庆科的第一块开发板,我记得还不能用KEIL只能用IAR,对此我还和庆科的技术支持理论了一翻。
  以后么智林开发板。然后是坛子里活动的开发板。反正,手里的ST板子多多。但我也没有白搞这些板子。
  我开发东东,总先想到STM32,十在不行了,或成本问题我才用别的单片机。
  我用STM32F103开发的东东已经投产。
  。。。。。不说以前的了,说说最近我遇到的事吧。
  我用了一个SPI的芯片,管显示和按键的,十分牛。我用STM32F103的SPI硬件驱动它。它的速率非常低,我就得降STM32的系统总线的频率。
来迎和这款芯片,始之来之能战战之能胜,好为我的整体干活。
  这块一切正常,但定时器也挂在了这个总线上,我记得是APB1总线吧。那么,我就得根据我降的频率来算定时时间对吧。
  而且对定时要求也很严,工业级产品是哈!我于是按我给降速率的总线进行计算。
  算好了程序下进芯片,不准,很不准。如果不准我的设计就会画上句号。或换别的方案。但我是老司机了,丢面子是小,工作没了是大吧。
  我于是到论坛里求助。也浏览网页。

  在论坛求助的贴子如下:

  1. 今天看到一个博客写如下:

  2. 假设 系统时钟是72Mhz,TIM1 是由PCLK2 (72MHz)得到,TIM2-7是由 PCLK1 得到

  3. 关键是设定 时钟预分频数,自动重装载寄存器周期的值

  4. /*每1秒发生一次更新事件(进入中断服务程序)。RCC_Configuration()的SystemInit()的

  5. RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2表明TIM3CLK为72MHz。因此,每次进入中

  6. 断服务程序间隔时间为

  7. 时间=1/频率×次数

  8. ((1+TIM_Prescaler )/72M)*(1+TIM_Period )=((1+7199)/72M)*(1+9999)=1秒 */


  9. 我不懂的一句话是“RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2表明TIM3CLK为72MHz”
  10. 明明写着2分频,怎么还是72MHZ,请大神解答。

    然而当贴子刚发出不久,我在一书老书(大家说是数据手册的翻译)上看到了一句话:
  1. 定时器时钟频率是它们连接到APB区域时钟频率的2倍,但是如果APB预分频器是1的话,定时器的时钟和它所连接的APB区或的时钟频率是一样的。
  2.    

 我修改了程序,定时准了。
 我自己认为自己不错,STM32的员老。从这事我看出来了,所有的事都得小心认真,如履薄冰。否则死都不知道怎么死的。现在我开发的东东已经进入小批试验阶段。又想起那句话“细节决定成败”


零三翟邢止胃 发表于 2019-3-18 09:49 | 显示全部楼层
真是不错的啊!
 楼主| ddllxxrr 发表于 2019-3-18 12:20 | 显示全部楼层
wakayi 发表于 2019-4-4 13:53 | 显示全部楼层
楼主很有文采啊
wowu 发表于 2019-4-4 14:39 | 显示全部楼层
恩 哟时候马虎一点就会失败
xiaoqizi 发表于 2019-4-4 14:53 | 显示全部楼层
支持楼主 加油
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2403

主题

6994

帖子

68

粉丝
快速回复 在线客服 返回列表 返回顶部