[STM8] STM8S207的奇怪问题

[复制链接]
4368|15
 楼主| xuannin 发表于 2009-11-16 19:26 | 显示全部楼层 |阅读模式
STM8s207的片子谁能解释这样的现象:TIM4开100us的定时器,定时器中断只是将任意一个IO取反, 再打开AD转换,在AD中断也只是读出AD转换值。用示波器测量定时器取反的IO口(实际就是测量100us的定时时间),你会发现100us每隔几百微秒会变短(20--40us),100us定时时间变长可以理解,变短似乎就没道理了,试出来的解决办法就是降低AD中断优先级,但是出现这种情况的原因就无法解释了
Trylin 发表于 2009-11-16 22:38 | 显示全部楼层
我用 TIM4开250us中断,在main函数中的WHILE(1)中,用delay函数延时半秒不停闪动LED,但是闪动有时长,有时短,而不是预想的半秒闪动
 楼主| xuannin 发表于 2009-11-20 07:51 | 显示全部楼层
顶一下,我不信这样的问题只被我碰到!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
xsgy123 发表于 2009-11-20 08:21 | 显示全部楼层
时间变短是很奇怪的
zhaoxinzxzx 发表于 2009-11-20 13:08 | 显示全部楼层
贴程序看看!
ZRL700424 发表于 2009-11-20 13:33 | 显示全部楼层
肯定是程序问题,我用的也是TM4,250US中断一次,很准确
 楼主| xuannin 发表于 2009-11-26 18:42 | 显示全部楼层
程序应该没问题,就这个问题我找过ST代理的技术支持,他自己写了一个很简单的测试程序,也出现同样的问题,他找ST深圳公司的工程师也无法解释,据他说问题已经反映到ST总部去了,另外,6楼,我并不是说TM4定时不准,而是开了AD就出问题,麻烦你看清楚,你有用示波器看看输出的波形吗?不要随便怀疑别人的能力
Trylin 发表于 2009-11-26 20:16 | 显示全部楼层
TM4定时是准确的,但是会影响到其他方面的时间不对啊,例如MAIN里面的DELAY函数,相差也太远了。
Trylin 发表于 2009-11-26 20:19 | 显示全部楼层
delay函数只是用for循环延时,没用TIM4来延时
ZRL700424 发表于 2009-11-27 11:49 | 显示全部楼层
本帖最后由 ZRL700424 于 2009-11-27 11:52 编辑
TM4定时是准确的,但是会影响到其他方面的时间不对啊,例如MAIN里面的DELAY函数,相差也太远了。
Trylin 发表于 2009-11-26 20:16


执行DELAY函数时会产生中断,中断程序执行完再回来,时间当然变长了呀
你用DELAY延时500MS,而TM4每250US就中断一次,你算算这500MS中产生了多少次中断!
Trylin 发表于 2009-11-28 12:32 | 显示全部楼层
中断是会占用一点时间,但是每次delay 500MS间隔应该比较平均,LED闪动看起来应该很平均才对吧,但是事实不是这样,闪动毫无规律,有时快,有时慢,肉眼就可以看出来了
zwll 发表于 2009-11-28 16:46 | 显示全部楼层
程序问题,楼主别急
 楼主| xuannin 发表于 2009-11-30 19:07 | 显示全部楼层
答非我所问!!!!
sinadz 发表于 2009-11-30 21:13 | 显示全部楼层
定时器计时比延时函数要精确些,楼主如果想解决问题,应该把程序拿出来,大家分析下
lo_xiaohua_ve 发表于 2010-5-11 17:49 | 显示全部楼层
我用delay函数延时也会出现有时长,有时短的现象
用TIM4定时器,如果用内部振荡定时器可以正常工作,改为使用外部振荡就不工作了,用的是ST的库,我以为是时钟没配置好导致整个MCU不工作,结果在主函数中直接delay,控制I/O口,程序是正常运行的,不知为何
pkat 发表于 2010-5-11 20:45 | 显示全部楼层
用delay函数有时时间长,有时时间短,不会吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

174

帖子

3

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