日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(12)MSP430F5529 常用内置函数和一些说明

發布時間:2023/12/13 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (12)MSP430F5529 常用内置函数和一些说明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  (1)? MSP430F5529支持最高工作頻率為25MHZ,也就是說你通過

??????????????? 鎖相環倍頻來提高系統運行速度是有一個限制的,

????????????????最高只能到25MHZ(再高沒意思了)

?  2幾個重要的內聯函數

??????????????????????(內聯函數定義在intrinsics.h中,但是這幾個函數使用的時候不需要事先聲明該文件頭)

??????????????????????? __bic_SR_register();

????????????????????????????????????? CPUSR寄存器中的某些位清零。即將括號內的位清零。

????????????????????????????????????? 例:__bic_SR_register(GIE);//GIE位清零,即關閉總中斷

??????????????????????? __bis_SR_register();

????????????????????????????????????? CPUSR寄存器中的某些位置1。即將括號內的位置1

??????????????????????? __interrupt

  放在函數前面,標志中斷函數。下面這段程序是看門狗WDT的中斷服務函數。WDT_VECTOR為看門狗的中斷向量。舉例:

  ?#pragma vector=WDT_VECTOR

  __interrupt void WatchDog(void)

  {… }

?????????????    __monitor

  放在函數前面,功能是聲明當這一函數執行的時候自動關閉中斷。應該盡量縮短這樣的函數,否則,中斷事件無法得到及時的響應。

?????????????    __bic_SR_register_on_exit();

?  功能:用于一個中斷函數或者不可中斷函數(標志為__monitor)返回時,將CPUSR寄存器中的某些位清0.

    ⑥ __bis_SR_register_on_exit();

  功能:用于一個中斷函數或者不可中斷函數(標志為__monitor)返回時,將CPUSR寄存器中的某些位置1.

    ⑦ __no_init

  放在全局變量前面,功能是使程序啟動時不為變量賦初值

    ⑧ __disable_interrupt

????????? 關閉總中斷,另外一個相同作用的表達為:??? _DINT()

    ⑨__enable_interrupt

???????????????????? 開啟總中斷,另外一個相同作用的表達為:??? _EINT()

    ⑩__even_in_range(? ,? );

    常被用在多源中斷的查詢中,如switch( __even_in_range(TAIV10)

    意思是:只有在TAIV的值是在0--10內的偶數時才會執行

  switch函數內的語句。其作用是提高switch語句的效率

?  A. ?????? _NOP()

  空操作,等價于__no_operation指令

  B. __get_SP_register(void)

  功能:返回堆棧指針寄存器SP的值。

  C.__get_SR_register_on_exit(void)

  功能:用于一個中斷函數或者不可中斷函數(標志為__monitor)返回時,返回狀態寄存器SR的值。

?  ?D. __bcd_add_short(unsigned short,unsigned short);

  功能:兩個16BCD格式的數字相加,返回和。

  ?E.__bcd_add_long(unsigned long,unsigned long);

?  功能:兩個32BCD格式的數字相加,返回和。

?  F. __delay_cycles(x);

??????????系統自帶的精確延時。x必須是常量或則是常量表達式,如果是變量則編譯報錯!延時的時間為x乘以MCLK的時鐘周期

  (3關于MSP430大量寄存器如何處理的問題:

????????????MSP430寄存器太多了,把每一個都記住實在太難。所以,我的建議是,學習的時候,把重要的常用的寄存器記住。

???????至于其它眾多寄存器,大家只需要有一個印象,知道這些寄存器可以控制那些設置。到具體用的時候,再查找技術手冊;

?  4)頭文件msp430f5529.h

  里面不僅定義了對各個寄存器的聲明,還定義了很多很方便的東東。

  比如你要進入低功耗模式1LPM1

  比如你要把定時器A0的時鐘選為SMCLK

?????????最原始的做法是TA0CTL=0x0200,但現在有更清晰的做法TA0CTL=TASSEL_2//時鐘源選擇模式2

  所以說要不斷發掘不斷積累!

  (5中斷寄存器的名字

?????????大家都知道中斷函數是怎么寫的,模式為:

  #pragma vector=中斷向量地址(名)

  __interrupt void 自定義中斷函數名(void)

  {… }

?????????但是想要寫出來,你首先得知道中斷向量叫什么名字吧

  到目前,我們已經遇到了看門狗中斷WDT_VECTOR、引腳P2的外部中斷PORT2_VECTOR、定時器A0CCR1-CCR4TAIFG)中斷TIMER0_A1_VECTOR

  還有大量的中斷向量,我們目前還不知道名字該怎么辦。

  打開msp430f5529.h,拉到該文件底部,就展示了定義的各種中斷向量名,還有解釋。

  (6)MSP430的最大特色就是低功耗,這個是體現在各個方面的。在整體層次上,MSP430可以設置整個系統的工作模式以達到適應工作要求且降低功耗的目的。

  為了降低功耗,處理器有幾個考慮:一個是降低工作電壓(F5529為3.3V很低了吧,而且內部核心電壓VCORE更低);?

  第二個就是把暫時不用的模塊功能關閉掉(F5529各個模塊都可以獨立運行,如定時器、A/D轉換、看門狗等都可以在CPU休眠的狀態下獨立工作。若需要主CPU工作,任何一個模塊都可以通過中斷喚醒CPU,從而使系統以最低功耗運行。);

  第三個方法就是降低工作時鐘頻率。

文章摘錄于:http://blog.lehu.shu.edu.cn/879836630/A449074.html

轉載于:https://www.cnblogs.com/qingfengshuimu/p/4357819.html

總結

以上是生活随笔為你收集整理的(12)MSP430F5529 常用内置函数和一些说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。