新聞中心

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

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

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

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

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

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

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

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

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

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


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

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

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


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

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


        關鍵詞: MSP430F5529內置函

        評論


        技術專區(qū)

        關閉
        主站蜘蛛池模板: 田林县| 和硕县| 柞水县| 大城县| 临沂市| 光泽县| 兴海县| 阿城市| 海丰县| 莎车县| 新源县| 招远市| 荣成市| 古蔺县| 湖北省| 红安县| 额尔古纳市| 互助| 清镇市| 乳山市| 大连市| 景洪市| 枝江市| 嘉善县| 大名县| 高陵县| 卢湾区| 商南县| 武强县| 沂源县| 扎囊县| 巢湖市| 泸水县| 沙河市| 永春县| 遂宁市| 龙陵县| 文山县| 平凉市| 渭南市| 六盘水市|