搜索
bottom↓
回复: 13

请教一个stm32F407 systick时间不准的问题

[复制链接]

出0入0汤圆

发表于 2019-5-27 21:56:39 | 显示全部楼层 |阅读模式
  使用systick定时,运行1秒时间,CCSTEP显示168000000左右正常,但实际走了3秒时间,比标准时间慢,同样的硬件条件下,重新找了一个Demo,删掉无用的部分,只剩systick定时,1秒的时间又是准的,此时CCSTEP同样显示168000000左右,不知道有没有人知道这个问题可能的原因,配置部分找了几遍,也看不出啥异常,软件在F103上面是正常的,移植到F407就出了一堆问题,定时不准是个大问题,正Debug中。。。。

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入24汤圆

发表于 2019-5-27 22:20:37 | 显示全部楼层
24位定时器,有没有考虑溢出的问题?

出0入0汤圆

发表于 2019-5-28 00:09:43 | 显示全部楼层
一般来说误差呈倍数关系,基本上是配置问题。

出0入0汤圆

 楼主| 发表于 2019-5-28 07:54:26 | 显示全部楼层
20061002838 发表于 2019-5-27 22:20
24位定时器,有没有考虑溢出的问题?

  时钟变量放到Debug窗口看过,3个时钟频率分别是168M、84M、42M,没有问题,SysTick_Config()函数的输入变量是168000000/6000=28000,16位都不会溢出,不要说24位了。

出0入0汤圆

发表于 2019-5-28 07:59:01 来自手机 | 显示全部楼层
不知你的hse和实际的晶振差了多少,是不是晶振是8m但hse定义的是25000000?

出0入0汤圆

发表于 2019-5-28 08:04:00 | 显示全部楼层
以前做某电力设备时,也遇到过407定时有抖动问题,我是定时器里定时采样SPI-ADC,最终导致采样结果有抖动。
当时 我认为是浮点运算导致定时器中断无法及时响应,删除FFT浮点运算后抖动不再有。
后来是软件做了修改,只取其中一小段数据来运算。

出0入0汤圆

 楼主| 发表于 2019-5-28 08:28:01 | 显示全部楼层
本帖最后由 coleyao 于 2019-5-28 08:31 编辑
XA144F 发表于 2019-5-28 07:59
不知你的hse和实际的晶振差了多少,是不是晶振是8m但hse定义的是25000000?


   非常感谢,确实晶振是8M的,以前M0、M3还有Mega12、MSP430一直都用8M晶振,原以为M4默认也是8M晶振的,没想到居然默认是25M晶振!
   另外感慨一句,从M3移植到M4也太费事了,不光要改端口初始化部分的时钟使能函数参数,还有老版本库文件不支持UART7的问题,加上这个晶振频率的修改,还有没暴露出来的问题,感觉比从M0改M3都费事!

出0入4汤圆

发表于 2019-5-28 08:47:31 | 显示全部楼层
coleyao 发表于 2019-5-28 07:54
时钟变量放到Debug窗口看过,3个时钟频率分别是168M、84M、42M,没有问题,SysTick_Config()函数的输 ...

Debug窗口看到的频率,好像有时候不对,还是要看实际运行效果

出0入362汤圆

发表于 2019-5-28 08:47:33 | 显示全部楼层
coleyao 发表于 2019-5-28 08:28
非常感谢,确实晶振是8M的,以前M0、M3还有Mega12、MSP430一直都用8M晶振,原以为M4默认也是8M晶振的 ...

以及GPIO的寄存器BSRR/BRR居然改成BSRRH/BSRRL了,实在是闲得蛋疼。。。

出0入0汤圆

发表于 2019-5-28 08:53:41 | 显示全部楼层
coleyao 发表于 2019-5-28 08:28
非常感谢,确实晶振是8M的,以前M0、M3还有Mega12、MSP430一直都用8M晶振,原以为M4默认也是8M晶振的 ...

MARK....................

出0入0汤圆

 楼主| 发表于 2019-5-28 09:12:26 | 显示全部楼层
本帖最后由 coleyao 于 2019-5-28 09:13 编辑
tomzbj 发表于 2019-5-28 08:47
以及GPIO的寄存器BSRR/BRR居然改成BSRRH/BSRRL了,实在是闲得蛋疼。。。


  谢谢,这个已经改过了,而且BSRR对应BSRRL,BRR对应BSRRH。突然感觉我英文都没学好,为啥L(低电平)对应位设置,H(高电平)对应位清零!

出0入362汤圆

发表于 2019-5-28 09:14:24 | 显示全部楼层
coleyao 发表于 2019-5-28 09:12
谢谢,这个已经改过了,而且BSRR对应BSRRL,BRR对应BSRRH。突然感觉我英文都没学好,为啥L(低电平)对 ...

其实是BSRRL在低地址,BSRRH在高地址吧。。
问题是作用完全没变,干嘛要改呢

出30入54汤圆

发表于 2019-5-28 09:53:19 | 显示全部楼层
F4的那个库默认是25M的晶振,我刚开始用的时候也奇怪,觉得官方Discovery的板子应该不会有问题,结果发现板子上面晶振是8M,但是库里面默认写的是25M,贼坑

出0入0汤圆

 楼主| 发表于 2019-5-28 10:18:38 | 显示全部楼层
cloudboy 发表于 2019-5-28 09:53
F4的那个库默认是25M的晶振,我刚开始用的时候也奇怪,觉得官方Discovery的板子应该不会有问题,结果发现板 ...

嗯,总算还好,有不少人都遇到过这个问题,要不一下子还真不一定能找出来,后面还有个更棘手的,SPI网络芯片要改双网口,移植后单网口都没调通呢,想想改双网口要改底层一堆变量、函数就头大了!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-21 22:51

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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