STM32串口收发

串口发送:

void Usart_SendString(USART_TypeDef *USARTx, unsigned char *str, unsigned short len)
{

    unsigned short count = 0;
    
    for(; count < len; count++)
    {
        USART_SendData(USARTx, *str++);
        while(USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET);
    }
}
Usart_SendString
void UsartPrintf(USART_TypeDef *USARTx, char *fmt,...)
{
    unsigned char UsartPrintfBuf[296];
    va_list ap;
    unsigned char *pStr = UsartPrintfBuf;
    
    va_start(ap, fmt);
    vsnprintf((char *)UsartPrintfBuf, sizeof(UsartPrintfBuf), fmt, ap);    
    va_end(ap);
    
    while(*pStr != 0)
    {
        USART_SendData(USARTx, *pStr++);
        while(USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET);
    }
}
UsartPrintf

串口接收:

void USART1_IRQHandler(void) 
{
    u8 Res=0;
    Res = USART_ReceiveData(USART1);
    USART1_RX_BUF[First_Int] = Res; 
    First_Int++; 
    if(First_Int >= USART_REC_LEN)
    {
        First_Int = 0;
    }
}     
USART1_IRQHandler

 

posted @ 2021-05-05 23:06  Lin_Ye  阅读(213)  评论(0编辑  收藏  举报