在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

    
    
    <address id="vxupu"><td id="vxupu"></td></address>

      <pre id="vxupu"><small id="vxupu"></small></pre>
      <dfn id="vxupu"></dfn>
      <div id="vxupu"><small id="vxupu"></small></div>
    1. 新聞中心

      EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MSP430F5529 番外(一)常用內(nèi)置函數(shù)和一些說明

      MSP430F5529 番外(一)常用內(nèi)置函數(shù)和一些說明

      作者: 時(shí)間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
      1) MSP430F5529支持最高工作頻率為25MHZ,也就是說你通過
      鎖相環(huán)倍頻來提高系統(tǒng)運(yùn)行速度是有一個(gè)限制的,
      最高只能到25MHZ(再高沒意思了)。

      2)幾個(gè)重要的內(nèi)聯(lián)函數(shù)
      (內(nèi)聯(lián)函數(shù)定義在intrinsics.h中,但是這幾個(gè)函數(shù)使用的時(shí)候
      不需要事先聲明該文件頭)
      ①__bic_SR_register();
      將CPU中SR寄存器中的某些位清零。即將括號(hào)內(nèi)的位清零。
      例:__bic_SR_register(GIE);//將GIE位清零,即關(guān)閉總中斷
      ②__bis_SR_register();
      將CPU中SR寄存器中的某些位置1。即將括號(hào)內(nèi)的位置1。
      ③ __interrupt
      放在函數(shù)前面,標(biāo)志中斷函數(shù)。下面這段程序是看門狗
      WDT的中斷服務(wù)函數(shù)。WDT_VECTOR為看門狗的中斷向量。 舉例:
      #pragma vector=WDT_VECTOR
      __interrupt void WatchDog(void)
      {… }
      ④ __monitor
      放在函數(shù)前面,功能是聲明當(dāng)這一函數(shù)執(zhí)行的時(shí)候自動(dòng)關(guān)閉中斷。應(yīng)該盡量縮短這樣的函數(shù),否則,中斷事件無法得到及時(shí)的響應(yīng)。
      ⑤ __bic_SR_register_on_exit();
      功能:用于一個(gè)中斷函數(shù)或者不可中斷函數(shù)(標(biāo)志為__monitor)返回時(shí),將CPU內(nèi)SR寄存器中的某些位清0.
      ⑥ __bis_SR_register_on_exit();
      功能:用于一個(gè)中斷函數(shù)或者不可中斷函數(shù)(標(biāo)志為__monitor)返回時(shí),將CPU內(nèi)SR寄存器中的某些位置1.
      ⑦ __no_init
      放在全局變量前面,功能是使程序啟動(dòng)時(shí)不為變量賦初值
      ⑧ __disable_interrupt
      關(guān)閉總中斷
      另外一個(gè)相同作用的表達(dá)為: _DINT()
      ⑨ __enable_interrupt
      開啟總中斷
      另外一個(gè)相同作用的表達(dá)為: _EINT()
      ⑩__even_in_range( , );
      常被用在多源中斷的查詢中,如switch( __even_in_range(TAIV,10)
      意思是:只有在TAIV的值是在0--10內(nèi)的偶數(shù)時(shí)才會(huì)執(zhí)行
      switch函數(shù)內(nèi)的語句。其作用是提高switch語句的效率

      A. _NOP()
      空操作,等價(jià)于__no_operation指令

      B. __get_SP_register(void)
      功能:返回堆棧指針寄存器SP的值。

      C. __get_SR_register_on_exit(void)
      功能:用于一個(gè)中斷函數(shù)或者不可中斷函數(shù)
      (標(biāo)志為__monitor)返回時(shí),返回狀態(tài)寄存器SR的值。

      D. __bcd_add_short(unsigned short,unsigned short);
      功能:兩個(gè)16為BCD格式的數(shù)字相加,返回和。

      E. __bcd_add_long(unsigned long,unsigned long);
      功能:兩個(gè)32位BCD格式的數(shù)字相加,返回和。

      F. __delay_cycles(x);
      系統(tǒng)自帶的精確延時(shí)。x必須是常量或則是常量表達(dá)式,如果是變量則編譯報(bào)錯(cuò)!延時(shí)的時(shí)間為x乘以MCLK的時(shí)鐘周期


      (3)關(guān)于MSP430大量寄存器如何處理的問題:
      MSP430寄存器太多了,把每一個(gè)都記住實(shí)在太難。所以,我的建議是,學(xué)習(xí)的時(shí)候,把重要的常用的寄存器記住。
      至于其它眾多寄存器,大家只需要有一個(gè)印象,知道這些寄存器可以控制那些設(shè)置。到具體用的時(shí)候,再查找技術(shù)手冊;

      (4)頭文件msp430f5529.h
      里面不僅定義了對(duì)各個(gè)寄存器的聲明,還定義了很多很方便的東東。
      比如你要進(jìn)入低功耗模式1:LPM1;
      比如你要把定時(shí)器A0的時(shí)鐘選為SMCLK:
      最原始的做法是TA0CTL=0x0200,但現(xiàn)在有更清晰的做法TA0CTL=TASSEL_2;//時(shí)鐘源選擇模式2

      所以說要不斷發(fā)掘不斷積累!


      (5)中斷寄存器的名字
      大家都知道中斷函數(shù)是怎么寫的,模式為:
      #pragma vector=中斷向量地址(名)
      __interrupt void 自定義中斷函數(shù)名(void)
      {… }
      但是想要寫出來,你首先得知道中斷向量叫什么名字吧
      到目前,我們已經(jīng)遇到了看門狗中斷WDT_VECTOR、引腳P2的外部中斷PORT2_VECTOR、定時(shí)器A0(CCR1-CCR4和TAIFG)中斷TIMER0_A1_VECTOR
      還有大量的中斷向量,我們目前還不知道名字該怎么辦。
      打開msp430f5529.h,拉到該文件底部,就展示了定義的各種中斷向量名,還有解釋。

      (6)
      MSP430的最大特色就是低功耗,這個(gè)是體現(xiàn)在各個(gè)方面的。在整體層次上,MSP430可以設(shè)置整個(gè)系統(tǒng)的工作模式以達(dá)到適應(yīng)工作要求且降低功耗的目的。
      為了降低功耗,處理器有幾個(gè)考慮:
      一個(gè)是降低工作電壓(F5529為3.3V很低了吧,而且內(nèi)部核心電壓VCORE更低);
      第二個(gè)就是把暫時(shí)不用的模塊功能關(guān)閉掉(F5529各個(gè)模塊都可以獨(dú)立運(yùn)行,如定時(shí)器、A/D轉(zhuǎn)換、看門狗等都可以在CPU休眠的狀態(tài)下獨(dú)立工作。若需要主CPU工作,任何一個(gè)模塊都可以通過中斷喚醒CPU,從而使系統(tǒng)以最低功耗運(yùn)行。
      );
      第三個(gè)方法就是降低工作時(shí)鐘頻率。


      關(guān)鍵詞: MSP430F5529內(nèi)置函

      評(píng)論


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

      關(guān)閉