1. 建立新專案
從 File 選項, 選擇 New, 在專案選項中, 選擇 CCS Project. 在 Variant 的列表中, 找出所支援的型號. 這個要特別注意. 一旦選定, 就很難再修改. 在 project template 中, 選擇 Empty Project (with main.c). 然後, 輸入專案名稱 (例如 Trial3) 後, 按下 Finish.
2. 設定參考路徑
在左邊的專案列表欄中, 找到新建立的專案 (例如 Trial3). 在專案的名稱上按右鍵, 打開專案屬性表格. 在左邊的設定項目中, 依序打開設定項目: build/ ARM Compiler/Include Options.
在右下方的 include path 窗格的右上方, 找到 “+” 號, 並且點擊. 在目錄中, 填入
"${TIVAWARE_INSTALL}"
這是 Tiva Ware 安裝路徑的環境變數.
輸入完, 按 OK. 回到 Include path 畫面, 應該和下圖相同.
3. 加入 library
在專案名稱上按右鍵, 並且選擇 Add Files. 打開加入檔案的對話框. 瀏覽至 Tiva 的安裝目錄, 並且選擇 driverlib/ccs/Debug. 我的安裝目錄是 C:\ti\TivaWare_C_Series-1.0\driverlib\ccs\Debug, 選擇driverlib.lib 並且打開.
在加入檔案的選項中, 選擇 Link to files, 並且以 TIVAWARE_INSTALL 作為參考. 這樣的做法就不會把 driverlib.lib 複製到專案中, 只有在要用到的時候, 才根據 Tiva Ware 的安裝目錄來加入這個檔案. 除了避免複製一大堆相同的檔案外, 也可以避免版本有差異的情形.
4. 設定語言選項
在專案名稱上按右鍵, 打開專案屬性表格. 依序打開設定項目: Build/ARM Compiler/Advanced Options/Language OPtions
把 Treat C files as C++ files 這一個項目打勾. 是的, 就是把 C 的檔案也當做 C++ 的檔案來編譯.
5. 測試 C++ 程式碼
將以下程式碼, 取代原本 main.c 的內容. 以下的內容, 是根據 TM4C123G_LaunchPad_Workshop lab4 的內容, 只是加入 C++ 的語法, 把程式碼搬移而已. 如果有問題, 可以先參考前面所說的範例.
#include <stdint.h>
#include <stdbool.h>
#include "inc/tm4c123gh6pm.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/sysctl.h"
#include "driverlib/interrupt.h"
#include "driverlib/gpio.h"
#include "driverlib/timer.h"
class HelloWorld
{
public:
HelloWorld() {};
~HelloWorld() {}
public:
static void Blink();
};
void HelloWorld::Blink()
{
TimerEnable(TIMER0_BASE, TIMER_A);
while(1)
{
}
}
int main(void) {
uint32_t ui32Period;
SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);
TimerConfigure(TIMER0_BASE, TIMER_CFG_PERIODIC);
ui32Period = (SysCtlClockGet() / 10) / 2;
TimerLoadSet(TIMER0_BASE, TIMER_A, ui32Period -1);
IntEnable(INT_TIMER0A);
TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT);
IntMasterEnable();
HelloWorld::Blink();
return 0;
}
6. 注意事項
CCS 的編輯器可以做動態的語法檢查. 不過, 有時候似乎不是判斷得很準確. 但是並不影響真正的編譯和執行. 據了解, 這個問題已經列入 bug, 也許下一個版本會有修正.
沒有留言:
張貼留言
請提供您寶貴的意見