學習筆記-CCS-MSP430F5529[快速入門篇一]


        由於最近競賽需要使用TI公司的MSP430系列芯片,本人在最近兩天匆忙的學習了一下MSP430F5529(下文統一稱作5529)的使用。寫下本文是為了將這兩天學習內容做一個復習,並且將學習過程中遇到的問題和大家分享。本人有些許STM32(下文統稱32)的編程和硬件基礎,所以文章內容會聯合32來講,本系列會圍繞搭建CCS開發環境,5529例程的查找,GPIO初始化,中斷,UART,IIC,TIMER等內容展開敘述。

        因本人技術能力有限,加上第一次寫博客,表述不當請見諒,廢話不多說,以下為正文內容

一·開發環境的選擇

        關於MSP430的開發環境,有很多種選擇,常見的有Energia,CCS,IAR for MSP430,MDK等,本人僅使用過Energia和CCS,這兩個開發環境都是TI公司官方給我們用來開發TI板子的開發環境,其中Energia是一個開源的社區驅動型開發環境,界面與Arduino有97%的類似度,如果你之前有過Arduino的開發經驗,那么大概率可以無縫銜接到Energia,Arduino的開源庫大多都可以移植到Energia,源代碼都托管到了github上面,點擊Energia 可查看。而CCS是Eclipse軟件框架結合嵌入式開發調試功能的產品,對於常用VS,Eclipse以及MDK等環境的朋友們可能會比較友好。

        接下來分享一下我搭建CCS的經驗

        CCS全名為Code Composer Studio™,這個名字聽上去是不是就很專業哈哈,我使用的版本為CCS8.3,選擇這個版本沒有什么特殊原因,大家在官網選擇自己想要的版本進行下載就可以了,盡量不要太低,點擊CCS 進行下載,關於CCS的安裝,在安裝選項里勾選MSP430后不斷點下一步就可以了,由於我下載的8.3版本是32bit軟件,而我的電腦是64bit的,安裝過程報了c++ compiler相關的錯誤,下載DirextX對自己電腦的C++Compiler進行修復就可以了。如果有相同問題的小伙伴,可嘗試此法。

        CCS的主界面是這樣的,左上角的錘子是編譯,錘子左邊的{}是燒錄,{}的左邊是DEBUG仿真調試模式。安裝CCS的過程中就已經自動安裝好了相關的串口驅動,使用mircoUSB數據線連接5529和電腦后,點擊燒錄便可以將程序燒錄進5529的flash中,燒錄時5529的eZ-FET-lite區域(就是插線那一邊)紅燈會閃爍,在Project里就可以新建一個CCS工程,按照自己的需要選擇工程屬性就可以,如果不小心選錯了芯片,可在Project Explorer里右擊工程文件夾后選擇Properties從而更改自己的工程屬性選項。

二·例程-DrvierLib和寄存器操作的選擇

         和32類似,5529的開發也可大體分為寄存器開發和庫函數開發,其中庫函數可以在這里下載DriverLib后導入自己的工程中使用,庫函數文件內有很多example工程,其中MSP430F5xx_6xx中存在着5529能夠用的例程。我個人感覺使用庫函數不如使用寄存器開發來的容易,一來是因為DriverLib的寫法並不是很戳我的編程習慣,並且例程中的庫函數操作並不只是針對5529的,二來是5529的寄存器並不像32那樣多而復雜,也可能是因為我用不到那么多的寄存器。網上有關5529寄存器開發的例程有很多,這大大降低了寄存器操作的上手難度。

三·I/O和常用時鍾

          先給大家介紹一下5529的外設和存儲資源,5529具有128KB的Flash,8KB的RAM,兩類串行通訊接口,其中USCI_Ax具有UART,IrDA,同步SPI功能,USCI_Bx具有IIC,同步SPI功能,四個多通道定時器TA0,TA1,TA2,TB0,12位ADC等。此外,5529的時鍾系統也很有必要了解,與32的SYSCLK,APB1,APB2類似,5529也有系統主時鍾MLCK,高速外設時鍾SMCLK,低速外設時鍾ACLK,其中主時鍾頻率會因為不同模式而改變,一般來講(分頻后)高速外設時鍾SMCLK的頻率為1.05MHz,低速外設時鍾ACLK的頻率為32768Hz(2^15Hz),供不同外設使用。

          引腳初始化可通過改變以下幾個寄存器來實現,

1.I/O方向設定寄存器 PxDIR,I/O相應位置1表示該引腳為輸出模式,置0表示該引腳為輸入模式,與32的GPIO_Mode_有着部分類似效果;

2.輸入設定寄存器PxIN,控制輸入引腳的高低電平;

3.I/O輸出寄存器PxOUT,控制輸出引腳的高低電平;

4.上/下拉電阻使能寄存器PxREN,控制輸出輸入引腳的上拉/下拉/推挽模式;PxSEL功能選擇寄存器,聲明該端口要用做外圍電路特殊功能,與端口復用有關。

5.輸出驅動能力設置寄存器PxDS,默認低電平,置高后可設置為全力驅動,因為MSP430系列主打低功耗,引腳的驅動能力在默認情況下是不能驅動一些功率較大的負載的。

下圖是5529引腳及其復用功能圖。

          這里舉一個引腳初始化的例子,初始化P1.0/P1.2/P1.3引腳分別復用為,TA0_CLK,TA0.1,TA0.2功能,這是一個定時器初始化函數,前五行代碼屬於引腳初始化,作用是先將P1.0的模式設置為輸出,后將P1.0的功能復用為定時器TA0的輸入時鍾(P1.0引腳在CPU上,未引出到PCB),將P1.2和P1.3初始化為輸出模式,復用為定時器TA0的TA0.1和TA0.2。

 1         WDTCTL = WDTPW + WDTHOLD;       // 關閉看門狗
 2         P1DIR |= BIT0;            //P1.0為輸出模式
 3         P1SEL |= BIT0;            //P1.0復用其他外設功能
 4         P1DIR |=BIT2+BIT3;                //  P1.2+P1,3為輸出
 5         P1SEL |=BIT2+BIT3;                // 設置 P1.2為TA0.1輸出
 6         TA0CTL= TASSEL_2 +MC_1;           // 設置TIMERA的時鍾源為SMCLK, 計數模式為up,到CCR0再自動從0開始計數
 7         TA0CCR0 = motor_pwm_period;       // 設置PWM 周期
 8         TA0CCTL1 = OUTMOD_7;              // 設置PWM 輸出模式為:7 - PWM復位/置位模式
 9         TA0CCTL2 = OUTMOD_7;
10         TA0CCR1=0;               //占空比調節
11         TA0CCR2=0

 

 

 

四·外部中斷

        外部中斷是5529中斷優先級最低的中斷,其中P1和P2都可做外部中斷的中斷源,而P1.0的中斷優先級在外部中斷里是最優的,外部中斷可通過以下幾個寄存器進行設置:

1.PxIE 中斷使能寄存  相應位置1表示允許中斷;

2.PxIES中斷觸發方式寄存器,置1表示下降沿觸發,置0表示上升沿觸發;

3.PxIFGx中斷標志寄存器,允許中斷並使能后,中斷來臨后等待相應時,該位會變為高電平;

下面是P2.1做為外部中斷的初始化函數,P2.1引腳默認為板載按鍵,需要說明的是,使能中斷需要開啟全局中斷,開啟方式見下方例程

 1 /*中斷初始化函數*/
 2 void(exti_init)
 3 {
 4            P2IE |= BIT1;                   //P2.1中斷使能
 5            P2IES |= BIT1;                  //設置為下降沿觸發
 6            P2IFG &= ~BIT1;                 //清中斷標志位
 7            P2REN |=  BIT1;                 //上拉電阻
 8            P2OUT |=  BIT1;                 //初始化置高
 9             __enable_interrupt();          //使能中斷,也可寫做_BIS_SR(GIE);
10 }
11 /*中斷服務函數*/
12 #pragma vector=PORT2_VECTOR
13 __interrupt void P2_ISR(void)
14 {
15     if(P2IFG & BIT1)                        //判斷是否有中斷掛起
16         {
17            /*在這里寫你的中斷服務函數*/
18         }
19     P2IFG &=~BIT1;                          //清空中斷標志
20 
21 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM