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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > MSP430 5438 單片機學習筆記

          MSP430 5438 單片機學習筆記

          作者: 時間:2016-11-25 來源:網絡 收藏
          通過430一年的學習遇到的很多問題,也收獲了很多,以下是學習中遇到的一些問題,和解決方法,還有很多沒有整理出來,慢慢整理中。。。。

          一、多源中斷問題
          #pragma vector = PORT2_VECTOR
          __interrupt void port2(void)
          {
          switch(P2IV)
          {
          case P2IV_P2IFG6:
          P2IFG &=~BIT6;
          P1OUT ^= BIT0;break; //LED1 亮滅
          case P2IV_P2IFG7:
          P2IFG &=~BIT7;
          P1OUT ^= BIT1;break; //LED2 亮滅
          default :break;
          }

          本文引用地址:http://www.ex-cimer.com/article/201611/321217.htm

          }


          #pragma vector = PORT2_VECTOR
          __interrupt void port2(void)
          {
          if(P1IFG&BIT6){
          P2IFG &=~BIT6;
          }
          if(P1IFG&BIT7){
          P2IFG &=~BIT7;
          }

          }

          這兩種方法有說明不同嗎?上面一種是通過向量中斷號進行判斷,下面是用中斷標志進行判斷,在上面的判斷中是否需要用軟件把中斷標志清0

          二、關于flash的塊擦除
          void Seg_Erase(void){
          _DINT();
          WDTCTL = WDTPW + WDTHOLD;
          char *flase_erase;
          flase_erase = (char *)0x8000; //指向要檫寫的段地址
          while(FCTL3&BUSY);
          FCTL3 = FWKEY; //清除LOCK
          FCTL1 = FWKEY +ERASE; //段檫除
          *flase_erase = 0; //空寫將0寫為1
          FCTL3 = FWKEY + LOCK; //LOCK置1
          _EINT();
          }
          請問在進行FLASH段擦除的時候,調用這個函數是只擦除一個字節(jié)?要進行整段擦除的時候是用for語句調這個函數128次。
          還是調用一次這個函數把128個字節(jié)一起擦除。

          三、_root問題
          當編譯器碰到該條指令的時候就把它進行編譯。

          四、關于MSP430的中斷嵌套,和優(yōu)先級問題?

          五、msp430沒有自帶的EEPROM,但是information ABCD四個塊相當于EEPROM在5系列中他們的地址分別是
          A:001800H~00187fH
          B:001880H~0018FFH
          C: 001900H~00197FH
          D: 001980H~0019FFH

          六、硬件乘法器
          MPY = 125;
          OP2 = 125;
          result = RESHI;
          result = (result<<16)|RESLO;

          result=125*125;

          這兩個編譯的效率哪個更加高一點,result=125*125編譯器會不會直接把它編譯成
          MPY = 125;
          OP2 = 125;
          result = RESHI;
          result = (result<<16)|RESLO;
          使用硬件乘法器去算這個值。

          七、關于內存的問題
          我在用MSP5438片子求1024點FFT的時候,定義
          float dataR[1024]={0};
          float dataI[1024]={0};在RAN區(qū)

          定義正余弦表在flash程序存儲器里
          const float sin_tab[1024]={.....};
          const float cos_tab[1024]={.....};
          做軟仿的時候可以計算,用JTAG往片子里下的時候就不行,觀察RAM區(qū)時候發(fā)現,是定義的const float sin_tab[1024]
          const float cos_tab[1024]本應該在flash區(qū)的數據,怎么會出現在RAM區(qū)里?導致不能進行仿真。
          編譯以后這里看所消耗的資源應該是可以的承受的。
          892 bytes of CODE memory
          8194 bytes of CONST memory
          8194 bytes of DATA memory
          我是第一次用430的片子,有些問題不太明白,望各位大蝦不吝賜教。謝了。


          上一頁 1 2 下一頁

          評論


          技術專區(qū)

          關閉
          看屁屁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); })();