各位大佬,我写了一个串口发送字符串的程序,但是总是总是发送不出来,找了半天没找到原因,感觉是陷入中断循环了,代码如下:
unsigned char TXBuffer[5]={'a','b','c','d','e'};
unsigned char UART_Flag = 0;
unsigned char DataToBeSent[5];
unsigned char DataPointer=0;
void sendstring(unsigned char *ptr)
{
unsigned char j=0;
if(UART_Flag==0)
{
UART_Flag=1;
for(j=0;j<5;j++)
{
DataToBeSent[j] = *ptr++;
}
USART2->TDR = DataToBeSent[0];
DataPointer=1;
}
}
中断代码:
extern u8 UART_Flag;
extern u8 DataToBeSent[5];
extern u8 DataPointer;
void USART2_IRQHandler (void)
{
if (USART_GetFlagStatus(USART2,USART_FLAG_TC) ==SET)
{
if(UART_Flag == 1)
{
USART2->TDR = DataToBeSent[DataPointer++];
if(DataPointer>(5-1))
{
UART_Flag = 0;
}
}
USART_ClearITPendingBit(USART2,USART_IT_TC);
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
我跑完样例,再参考了别的代码写的,就是看了半天不知道错在哪
一周热门 更多>