STM32更换晶振后没及时修改定时器参数,导致运算出错

记录一下今天的惨痛经历。

之前板子上面是11.0592M的晶振。现在把晶振换成了8M的,这样9倍频后可以跑72MHz.

但是我换了晶振后,没有及时修改TIM2里面进中断的时间,导致后面的一系列的运算出错。而且我排查了两个小时,一直没想到是这个参数错了。


还有就是keil5软件总体上比keil4好用很多。但是之前keil4有个满好的功能,就是在仿真的时候吗,它的外设选项点开后,能显示各个外设运行的时钟频率,,而现在的版本没有了。

这样我就不能直观的看到定时器的运行时钟了。不过也有一个笨点的办法能够看出来,那就是通过拉高拉低GPIO口,然后用示波器来看。

伪代码如下:

void TIMX_IRQ()

{

if(i == 0)

      {

GPIO_Setbits(XXX);    i = 1;

      }

      else

{

   GPIO_Resetbits(xxxx); i = 0;

}

}

这样通过示波器观察这个IO口,就能推出定时器的时钟,最终也能确定系统时钟对不对。


主意:这里面有个小小的问题。就是用示波器看到的是方波信号,比如量下来是500Hz;但是高电平的时候和低电平的时候都是进了定时器的中断,所以定时器进中断的频率是1000Hz。




2017.8.27更新:

后来我发现翻转IO口来看时钟频率的方法真蠢。

我在库函数里面发现了RCC_GetClocksFreq()这个函数,仿真的时候直接在这里设个断点

然后watch窗口看一下就知道系统时钟拉。




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值