[STM32F1] 串口和定时器中断组合问题

[复制链接]
2508|6
 楼主| liu1004010308 发表于 2015-8-31 10:57 | 显示全部楼层 |阅读模式
void TIM3_IRQHandler(void)
{        
       
        if(TIM3->SR&0X0001)//溢出中断
        {
                LED1=!LED1;               
                printf("%4.3f",SJZ[i]);
                printf("\t");
         }                                  
        TIM3->SR&=~(1<<0);//清除中断标志位             
}
用示波器观察LED1的方波生成情况。频率是500hz,但是只要加入printf("%4.3f",SJZ[i])频率变成了250hz,而只加入printf("\t")又是正常的500hz.改变波特率还是不行。各位大神,这是什么原因啊
amanda_s 发表于 2015-8-31 11:30 | 显示全部楼层
你把这一句放到前面来呢:
TIM3->SR&=~(1<<0);//清除中断标志位
再看看中断优先级上有没有什么问题。
 楼主| liu1004010308 发表于 2015-8-31 13:17 | 显示全部楼层
amanda_s 发表于 2015-8-31 11:30
你把这一句放到前面来呢:
TIM3->SR&=~(1

这样其实是没有问题的,就是如果加上for(i=0;i<2;i++){ printf("%4.3f",SJZ);
                printf("\t");}就有问题了,是不是串口程序占用的时间太多了。引起的
 楼主| liu1004010308 发表于 2015-8-31 13:47 | 显示全部楼层
liu1004010308 发表于 2015-8-31 13:17
这样其实是没有问题的,就是如果加上for(i=0;i

问题解决了,将波特率设置成最大就可以了,还是要计算下传输时间啊
qqcaiyin 发表于 2015-8-31 13:52 | 显示全部楼层
500HZ就是2MS ,你算下你发送字节需要的时间
chenyu988 发表于 2015-9-7 09:05 | 显示全部楼层
中断里面不要串口打印!!!!!!!!!!!!!
android2 发表于 2015-9-7 09:17 | 显示全部楼层
问题解决了,将波特率设置成最大就可以了

楼主设置的多少波特率
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

41

帖子

0

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