这个是原开发板的例程代码,是正常运行,效果是电脑发送一个数字,串口助手返回一个加1的数值。
void USART1_IRQHandler(void) //串口1中断函数
{
static u8 k;
// static u8 k[6]={'1','2','3','4','5','|'},i;
USART_ClearFlag(USART1,USART_FLAG_TC);
if(USART_GetITStatus(USART1,USART_IT_RXNE)!=Bit_RESET)//检查指定USART1中断是否已经发送
{
k=USART_ReceiveData(USART1);
k++;
USART_SendData(USART1,k);
// for(i=0;i<=5;i++)
// {
// USART_SendData(USART1,k[i]); //通过外设USARTx,发送单个数据
// while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==Bit_RESET);
// }
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==Bit_RESET);
}
}
/***********************************************************************************************/
下面是我自己修改的中断,我先实现的效果是,让串口助手输出 1-5 这5个数字,结果它就死循环了、
void USART1_IRQHandler(void) //′串口1中断函数
{
// static u8 k;
static u8 k[6]={'1','2','3','4','5','|'},i;
USART_ClearFlag(USART1,USART_FLAG_TC);
if(USART_GetITStatus(USART1,USART_IT_RXNE)!=Bit_RESET) //检查指定USART1中断是否已经发送
{
// k=USART_ReceiveData(USART1);
// k++;
// USART_SendData(USART1,k);
for(i=0;i<=5;i++)
{
USART_SendData(USART1,k[i]); //通过外设USARTx,发送单个数据
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==Bit_RESET);
}
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==Bit_RESET);
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
这不是串口中断处理函数中的检测数据是否发送完成语句么。
一周热门 更多>