日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

我的STM8串口接收中斷為啥總是溢出錯(cuò)誤???

 wwkfisker1 2016-01-22
我用STM8的串口中斷接收GSM模塊的數(shù)據(jù),波特率是38400,串口接收到的字符串有時(shí)候是對(duì)的,有時(shí)候會(huì)少一個(gè)字符。我發(fā)現(xiàn)是串口溢出錯(cuò)誤引起的,如果不清除溢出標(biāo)志,就會(huì)在串口中斷里跳不出來(lái)了。
問(wèn)題是,為啥我的程序老是溢出錯(cuò)誤呢? 有的人說(shuō)是串口的FIFO不夠,所以溢出,有的人說(shuō)是中斷優(yōu)先級(jí)不夠高,是這樣么?我這里也就一個(gè)串口中斷,一個(gè)定時(shí)器中斷。希望高手指教,非常感謝??!

int main( void )
{
    u8 *pr,i;
    u8 loc_temp[20];
    GPIO_Init(GPIOC, GPIO_Pin_3, GPIO_Mode_Out_PP_High_Fast);  //TXD   //txd初始化為高電平互補(bǔ)推挽輸出模式
    GPIO_Init(GPIOC, GPIO_Pin_2, GPIO_Mode_In_PU_No_IT);      //RXD    //rxd初始化為不帶中斷上拉輸入模式  
    CLK_PeripheralClockConfig (CLK_Peripheral_USART1,ENABLE);//開(kāi)啟USART時(shí)鐘
    USART_Init(USART1,38400,USART_WordLength_8b,USART_StopBits_1,USART_Parity_No,USART_Mode_Tx|USART_Mode_Rx);//設(shè)置USART參數(shù)9600,8N1,接收/發(fā)送
    USART_ITConfig (USART1,USART_IT_RXNE,ENABLE);//使能接收中斷
    USART_Cmd (USART1,ENABLE);//使能USART
    CLK_PeripheralClockConfig (CLK_Peripheral_TIM4,ENABLE); //使能外設(shè)時(shí)鐘
    TIM4_TimeBaseInit(TIM4_Prescaler_128, 0xff);
    TIM4_ClearFlag(TIM4_FLAG_Update);
    TIM4_ITConfig(TIM4_IT_Update, ENABLE);
    TIM4_Cmd(ENABLE);   
    enableInterrupts();
    Delay(60000);  
    GSM_Start_Config();
    while(1)
    {
    }
}
//===============================================================
INTERRUPT_HANDLER(USART1_RX_TIM5_CC_IRQHandler,28) //串口中斷處理程序
{
    /* In order to detect unexpected events during development,
       it is recommended to set a breakpoint on the following instruction.
    */
     u8 cc;
     if( USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)//接收中斷處理
     {
         USART_ClearITPendingBit (USART1,USART_IT_RXNE);//清中斷標(biāo)志      
         cc=USART_ReceiveData8 (USART1);
         if(USART_RX_STA<200)
         {
            receive_count=0;
            if(USART_RX_STA==0)
            {
                count_start_flag =1;//計(jì)數(shù)器開(kāi)始計(jì)數(shù)
            }
            USART_RX_BUF[USART_RX_STA++]=cc;         
         }
         else
         {
            USART_RX_STA|=1<<14;
            count_start_flag =0;
         }
     }
     if(USART_GetFlagStatus(USART1,USART_FLAG_OR)==SET)//溢出中斷處理
     {
       USART_ClearFlag(USART1,USART_FLAG_OR);
       USART_ReceiveData8 (USART1);
      
     }     
}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多