<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 調(diào)試STM8/stm32串口時發(fā)現(xiàn)的問題

          調(diào)試STM8/stm32串口時發(fā)現(xiàn)的問題

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


          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();