1. 程式人生 > >F28335的InitSysCtrl()與DSP2833x_SysCtrl.c檔案(1)

F28335的InitSysCtrl()與DSP2833x_SysCtrl.c檔案(1)

開發DSP除了CCS之外,TI還推出了一個controlSUITE,專門針對C2000系列,主要是官網資源的集中和分類。軟體免費只需要下載安裝,由於不喜歡被別人加工註釋了程式碼與工程,所以controlSUITE是個不錯的選擇。而且裡邊是TI原裝的東西,所以應該是最精華的!

開啟28335的幾個例子,main函式第一個呼叫的就是InitSysCtrl(),而該函式就在DSP2833x_SysCtrl.c檔案,

// Step 1. Initialize System Control:
// PLL, WatchDog, enable Peripheral Clocks
// This example function is found in the DSP2833x_SysCtrl.c file.
   InitSysCtrl()

所以工程裡邊必須包含DSP2833x_SysCtrl.c。開啟

C:\ti\controlSUITE\device_support\f2833x\v142\DSP2833x_common\source裡邊有DSP2833x_SysCtrl.c

其實在main函式裡邊對InitSysCtrl()的作用已經說了:初始換系統控制:具體包括PLL,看門狗,使能外設時鐘。由於是官方例子,就是套路,不用問為什麼這麼做,因為TI就是這樣做的。

進入DSP2833x_SysCtrl.c

//---------------------------------------------------------------------------
// InitSysCtrl:
//---------------------------------------------------------------------------
// This function initializes the System Control registers to a known state.
// - Disables the watchdog
// - Set the PLLCR for proper SYSCLKOUT frequency
// - Set the pre-scaler for the high and low frequency peripheral clocks

// - Enable the clocks to the peripherals

在這裡主要乾的事情有:關掉看門狗,設定鎖相環,為外設設定高低頻時鐘,使能時鐘。

void DisableDog(void)
{
    EALLOW;
    SysCtrlRegs.WDCR= 0x0068;
    EDIS;

}

突然發現,datasheet裡邊沒有看門狗的暫存器介紹,雖然手冊裡有講看門狗的工作原理,標頭檔案裡也有看門狗暫存器的定義。

先記下,但是關閉看門狗就一句話:SysCtrlRegs.WDCR= 0x0068;