定时器中断与串口发送

2019-07-20 19:52发布

用定时器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));  //&Ouml;&ETH;&para;&Iuml;&sup2;&raquo;&Auml;&Uuml;&Ouml;&acute;&ETH;&ETH;&Otilde;&acirc;&cedil;&ouml;&Oacute;&iuml;&frac34;&auml;
  }
}
TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
62021732
1楼-- · 2019-07-21 01:29
 精彩回答 2  元偷偷看……
山峰雪狼
2楼-- · 2019-07-21 03:23
利用串口发送完成中断发送数据,不要使用定时器中断
yujinyao
3楼-- · 2019-07-21 03:34
山峰雪狼 发表于 2016-9-23 09:04
利用串口发送完成中断发送数据,不要使用定时器中断

二者相互之间会有什么冲突吗?
qw186187
4楼-- · 2019-07-21 04:35
//while(USART_GetFlagStatus(USART1,USART_FLAG_TC)); 发送完了,程序一直在这里循环。
改为 while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);试试

一周热门 更多>