打印

用定时器输出波形遇到的奇怪问题

[复制链接]
2305|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
用STM32的定时器6输出方波遇到了个奇怪的问题,中断服务程序如下:
void TIM6_IRQHandler(void)
{
static int idx = 0;
DAC->DHR12R1 = table[idx]+200;
idx ++;
if(idx >= 2) {
  idx = 0;
}
TIM6->SR  = 0;  //清空标志位
idx = idx;
}
不加最后一句方波波形不对,加上就对了,可最后一句完全没有用啊……谁知道为什么啊……
波形在下面

沙发
香水城| | 2011-8-3 15:30 | 只看该作者
最后一句不是完全没有用,执行这句需要花费时间。

请把TIM6->SR  = 0; 移到idx++之前试试看。

使用特权

评论回复
板凳
307610084|  楼主 | 2011-8-3 16:58 | 只看该作者
2# 香水城
谢谢回复!按你说的,果然可以了,能解释下为什么呢?

使用特权

评论回复
地板
香水城| | 2011-8-3 18:16 | 只看该作者
执行完清除标志语句至标志真正被清除需要一点时间,你把清除标志语句放在中断程序最后,在中断返回时标志还未被真正清除,结果造成再次进入中断;把清除标志语句前移就是要把清除标志的时间留出来。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

32

帖子

0

粉丝