新手上路
- 积分
- 38
- 金钱
- 38
- 注册时间
- 2016-9-23
- 在线时间
- 7 小时
|
1金钱
用定时器3的中断控制串口的发送时,加上while(1)判断是否发送完毕就会影响主程序的运行,不加这句串口也不能正常发送数据但是LED灯会正常翻转。哪位大神能帮忙解决一下。
void TIM3_IRQHandler(void)
{
if(TIM_GetITStatus(TIM3,TIM_IT_Update))
{
u8 size = sizeof(SEND_LEN);
u8 t = 0;
LED1=!LED1;//DS1·­×ª
for(t=0;t<size;t++)
{
USART_SendData(USART1,SEND_LEN[t]);
//while(USART_GetFlagStatus(USART1,USART_FLAG_TC)); //Öжϲ»ÄÜÖ´ÐÐÕâ¸öÓï¾ä
}
}
TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
}
|
最佳答案
查看完整内容[请看2#楼]
首先,你一定要等待1个字节发送完成以后,才能发送下1字节,否则发送的数据就会出错,就是你遇到的现象。其次,不要在中断中发送,等待发送完成会花费较多时间,而且你不止发送了一个字节。如果你发送所需的时间超过你定时器中断的时间就会出现问题。建议将发送提到主循环中去执行。
|