新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 調試STM8/stm32串口時發現的問題

        調試STM8/stm32串口時發現的問題

        作者: 時間:2016-11-27 來源:網絡 收藏
        描述:串口中斷1用來接收到的數據,我是用串口助手發送一個8字節的數據,然后我想查看8個字節是否被單片接收,比如數據是0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08這8個數值,串口中斷
        #pragma vector=ITC_IRQ_UART1_RX + 2
        __interrupt void Uart1RxdInt(void)
        { //此函數內已完成清中斷標志
        u8 ret;
        if(UART1_GetFlagStatus(UART1_FLAG_RXNE)!=RESET)
        {
        tmp = UART1_ReceiveData8();
        ret=UART_KbdPkgRead(tmp);
        if(ret==0)
        {
        KBD_Flag_RECE=1;
        }
        }
        }
        我在ret的地方設了個斷點,然后每次發送進入中斷的時候發現可以停止在那,并且此時接受的數據的確也是0x01,然后有全速運行,接受的數據也是0x02,在全速運行就可能又是0x01或者根本不會停下來,
        此時我才知道我犯了一個錯誤,當發送一串數據時,斷點不應該設在中斷內,因為cpu在斷點停留處,她是不會停下的,也就是那串數據會被錯過,如果你發送一個數字,那就不會錯過了。
        接下來該怎么辦呢?
        進入中斷的函數,比如我的是UART_KbdPkgRead()。進入后可以編寫一個小程序,用來判斷接受得到數據是否是要發送的,比如if(dat==0x01),if(dat==0x02).這樣在他前邊設置斷點,用來判斷這一串數據是否被單片機接收到了。


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 乳源| 若羌县| 临清市| 阿城市| 博乐市| 阳西县| 广安市| 四子王旗| 石楼县| 莒南县| 拉孜县| 永城市| 潞西市| 吴堡县| 新平| 奉化市| 拉孜县| 和平区| 英吉沙县| 瓦房店市| 阳新县| 灌阳县| 襄城县| 滨州市| 北安市| 城市| 长阳| 肇东市| 柞水县| 澄江县| 闽侯县| 昌图县| 奎屯市| 隆回县| 烟台市| 玉门市| 秭归县| 凯里市| 松原市| 习水县| 新和县|