串口问题。。。。。

2019-10-16 07:03发布

[mw_shl_code=c,true]/*******************************************************************************
*******************************************************************************/
void USART1_Init(u32 bound)
{
    GPIO_InitTypeDef  GPIO_InitStructure;
    USART_InitTypeDef USART_InitStructure;
    NVIC_InitTypeDef  NVIC_InitStructure;       
    /* config USART1 clock */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);
    /* USART1 GPIO config */
    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);   
    /* Configure USART1 Rx (PA.10) as input floating */
    GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOA, &GPIO_InitStructure);
    /* USART1 mode config */
    USART_InitStructure.USART_BaudRate            = bound;
    USART_InitStructure.USART_WordLength          = USART_WordLength_8b;
    USART_InitStructure.USART_StopBits            = USART_StopBits_1;
    USART_InitStructure.USART_Parity              = USART_Parity_No;
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_InitStructure.USART_Mode                = USART_Mode_Rx | USART_Mode_Tx;
    USART_Init(USART1, &USART_InitStructure);

    NVIC_InitStructure.NVIC_IRQChannel                   = USART1_IRQn; //????2??
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;           //?????2?
    NVIC_InitStructure.NVIC_IRQChannelSubPriority        = 0;           //????2?
    NVIC_InitStructure.NVIC_IRQChannelCmd                = ENABLE;      //????????
    NVIC_Init(&NVIC_InitStructure);                                     //??NVIC_InitStruct???????????NVIC???

    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);                      //????  
    USART_Cmd(USART1, ENABLE);
}
/*******************************************************************************
*******************************************************************************/
void Usart_SendString(USART_TypeDef *USARTx, unsigned char *str, unsigned short len)
{
    unsigned char *s=str;
        unsigned short count = 0;
       
        for(; count < len; count++)
        {
                USART_SendData(USARTx, *(s++));
                while(USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET);
                delay_us(2);
        }

}
/*******************************************************************************
*******************************************************************************/
void USART1_XmtChar(unsigned char c)
{
    USART_SendData(USART1, c);
   
    while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET)
        ;
}
/*******************************************************************************
*******************************************************************************/
void USART1_XmtStr(unsigned char *str)
{
    unsigned char *s=str;
    while(*s!='')
    {
        USART1_XmtChar(*(s++));        
    }   
}
/*******************************************************************************
*******************************************************************************/
void USART1_SendData(u8 *buf,u8 len)
{
        u8 t;

          for(t=0;t<len;t++)                //&#209;-&#187;··¢&#203;íêy&#190;Y
        {                  
                while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);          
                USART_SendData(USART1,buf[t]);
        }         

        while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);               

}[/mw_shl_code]



主函数:
[mw_shl_code=c,true]
unsigned char ww[]="01234 ";
int main(void)
{
                delay_init();                     //&#209;óê±oˉêy3&#245;ê&#188;&#187;ˉ          
             NVIC_Configuration();          //éè&#214;&#195;NVIC&#214;D&#182;&#207;·&#214;×é2:2&#206;&#187;&#199;à&#213;&#188;ó&#197;&#207;è&#188;&#182;£&#172;2&#206;&#187;&#207;ìó|ó&#197;&#207;è&#188;&#182;

                USART1_Init(9600);
//                M6311_Init();
         
         
        while(1)
        {
        
                    USART1_XmtStr(ww);
Usart_SendString(USART1,ww,7);
        USART1_SendData(ww,7);

        }
}[/mw_shl_code]




有什么不对的?????三个发送函数发的字符完全不一样,且没有一个正确
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。