OpenEdv-开源电子网

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

定时器打印偶尔出现全是0,或者乱码现象,频率是100Hz

[复制链接]

1

主题

4

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2017-7-30
在线时间
6 小时
发表于 2018-1-16 20:13:45 | 显示全部楼层 |阅读模式
[mw_shl_code=c,true]float* TIM3_IRQHandler(void)
{      
         if(TIM3->SR&0X0001)
         {        
                        
           if(sec_TIM >= 59.99) sec_TIM=0,minute_TIM += 1;        
          sec_TIM+=0.01f;                 //100Hz
           printf("%d,%.2f\r\n",minute_TIM,sec_TIM );
}
[/mw_shl_code]

只是想手动打印个时间戳,但是不知道为什么偶尔出现乱码,或者全是0的现象,降低到10Hz依然有,虽然量会减少

打印的如下图所示


那个全0行就是有问题的时候
求原因啊~感谢

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

88

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
361
金钱
361
注册时间
2016-11-1
在线时间
119 小时
发表于 2018-1-17 08:42:54 | 显示全部楼层
看不到你的图片,但是你的中断函数返回float*是什么龟?
还有中断里最好不要用printf,这个函数占用了比较多的时间。
最好是用snprintf打印到缓冲区中,main中检测到这个缓冲区有数据再打印。
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2017-7-30
在线时间
6 小时
 楼主| 发表于 2018-3-19 17:38:05 | 显示全部楼层
Noctis 发表于 2018-1-17 08:42
看不到你的图片,但是你的中断函数返回float*是什么龟?
还有中断里最好不要用printf,这个函数占用了比较 ...

您好,谢谢您的回答,那个我换了一种方式做的,已经可以了。float*是当时返回的一个指针,和普通变量效果一样,后来让我也替换了。但是看了您的回答想问下,您指的这个snprintf函数我没有用过,一会去搜索下,您的意思是把这个函数放在main函数里面还是中断服务函数里面呢?谢谢
回复 支持 反对

使用道具 举报

0

主题

88

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
361
金钱
361
注册时间
2016-11-1
在线时间
119 小时
发表于 2018-3-28 23:06:55 | 显示全部楼层
liuwenliang 发表于 2018-3-19 17:38
您好,谢谢您的回答,那个我换了一种方式做的,已经可以了。float*是当时返回的一个指针,和普通变量效果 ...

snprintf放在中断服务函数中
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 22:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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