注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
小子不乖1229的个人空间 https://home.eeworld.com.cn/space-uid-631258.html [收藏] [复制] [分享] [RSS]
日志

求助STM32串口接收数据

已有 423 次阅读2015-6-23 11:40

int main(void)
{        
        

    uint8_t i;
    uint8_t buzzer[20]={0xAA,0xA0,0xFF,0xF8,0x8F,0x88,0xFF};
    SysTick_Config(SystemCoreClock/1000);  
    USART_Config();
    while(1){                        
                if(RXOVER == 1){
                        USART_SendString3(buzzer);        
                        USART_SendString1(USART_RXBUF);
                        for(i=0;i<8;i++){
                                USART_RXBUF = 0;  //清空接收区
                        }
                        RXOVER = 0;
                        USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);
                }
        }
}

void USART_Config(void)

{

    GPIO_InitTypeDef  GPIO_InitStructure;

    USART_InitTypeDef USART_InitStructure;



    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);

       

        NVIC_Configuration();

    //配置USART2 TX引脚工作模式

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOA, &GPIO_InitStructure);



    //配置USART2 RX引脚工作模式

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

    GPIO_Init(GPIOA, &GPIO_InitStructure);



    //串口2工作模式配置

    USART_InitStructure.USART_BaudRate = 19200;

    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(USART2, &USART_InitStructure);

       

        USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);

    USART_Cmd(USART2, ENABLE);

}


/**

  * @说明     配置中断向量控制器

  * @参数     None

  * @返回值   None

  */

void NVIC_Configuration(void)

{

        NVIC_InitTypeDef NVIC_InitStructure;



        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

        /* Enable the RTC Interrupt */

        NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;

        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;

        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

        NVIC_Init(&NVIC_InitStructure);

}





/******************************************************************************/

/**

  * @brief  This function handles PPP interrupt request.

  * @param  None

  * @retval None

  */

void USART2_IRQHandler(void)

{

        uint8_t temp;

       

        if(USART_GetITStatus(USART2,USART_IT_RXNE) != RESET)

        {

                USART_ClearITPendingBit(USART2,USART_IT_RXNE);               

                temp = USART_ReceiveData(USART2);

                if(RXCUNT==8)

                {

                        RXCUNT = 0;

                        RXOVER = 1;  

                        USART_ITConfig(USART2,USART_IT_RXNE,DISABLE);

                }

                else

                {

                        USART_RXBUF[RXCUNT] = temp;

                        ++RXCUNT;                       

                }

        }

}




请大神分析一下为什么用串口调试会显示这样的结果呢?为什么后面会多出3个00.

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章