stm32串口停止位波形异常问题,停止位有2位高电平

int fputc(int ch, FILE *f)
{
    
    
    USART_SendData(USART1, (unsigned char)ch);
    while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);

    return ch;
    
}

 

当使用USART_FLAG_TC标志时,停止位是2bit宽度的高电平;

当使用USART_FLAG_TXE标志时,停止位是1bit宽度的高电平;

 

void USART_Config_Init(void)
{
    GPIO_InitTypeDef   GPIO_InitStruct; 
    USART_InitTypeDef   USART_InitStruct;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1, ENABLE);
    
    //PA9-USART1--TX
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOA, &GPIO_InitStruct);
    //PA10-USART1-RX
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10;
//    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOA, &GPIO_InitStruct);

    
    
    USART_InitStruct.USART_BaudRate = 9600;
    USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_InitStruct.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
    USART_InitStruct.USART_Parity = USART_Parity_No;
    USART_InitStruct.USART_StopBits = USART_StopBits_1;
    USART_InitStruct.USART_WordLength = USART_WordLength_8b;


    USART_Init(USART1, &USART_InitStruct);


//    USART_ITConfig(USART1, USART_IT_TC, ENABLE);

    USART_Cmd(USART1, ENABLE);
      
}

 

posted @ 2025-05-28 20:47  了解2号  阅读(35)  评论(0)    收藏  举报