本文來(lái)源電子發(fā)燒友社區(qū),作者:jf_55236000, 帖子地址:https://bbs.elecfans.com/jishu_2292645_1_1.html
在使用一款新的MCU時(shí),首先要做的事情就是要配置好芯片的系統(tǒng)時(shí)鐘及中斷向量,這樣才能讓MCU的基本內(nèi)核跑起來(lái),看了DSC28034PNT的官方例程,DSP2803x_SysCtrl.c文件中基本已經(jīng)將各種系統(tǒng)時(shí)鐘模式配置的很全面詳細(xì)了,通過(guò)調(diào)用配置好的函數(shù),就可以完成自己想要的系統(tǒng)時(shí)鐘模式配置,由于官方例程是將片上內(nèi)部12Mhz時(shí)鐘通過(guò)PLL倍頻10倍成120Mhz作為系統(tǒng)時(shí)鐘,現(xiàn)在我們將其改為使用外部10Mhz晶振通過(guò)PLL倍頻12倍成120Mhz作為系統(tǒng)時(shí)鐘,具體配置代碼如下:
/******************************************************************
*函數(shù)名:void SystemInit(void) *參 數(shù) :無(wú) *返回值:無(wú) *作 用 :初始化DSP片上外設(shè) ******************************************************************/ void SystemInit(void) { DisableDog(); // Disable the watchdog
(*Device_cal)(); // Oscillator calibration values XtalOscSel(); // SelectExternal CRYSTAL oscillator as Clock Source InitPll(DSP28_PLLCR, DSP28_DIVSEL); // Initialize the PLL control InitPeripheralClocks(); // Initialize the peripheral clocks InitFlash(); // Initializes the Flash Control registers InitPieCtrl(); // Initializes the PIE control registers IER = 0x0000; // Disable CPU Interrupt and Flag IFR = 0x0000; InitPieVectTable(); // Initializes the PIE vector table InitCpuTimer(); // Initializes the Timer
}
首先關(guān)閉看門(mén)狗,防止在喂狗之前系統(tǒng)復(fù)位,然后打開(kāi)并選擇外部10M晶振作為系統(tǒng)PLL的輸入時(shí)鐘,通過(guò)修改宏定義設(shè)置DSP28_PLLCR為12,DSP28_DIVSEL為3,PLL將10M晶振時(shí)鐘倍頻10倍分頻1倍成120Mhz作為系統(tǒng)時(shí)鐘,然后再打開(kāi)各種用到的外設(shè)的時(shí)鐘,并根據(jù)不同的系統(tǒng)時(shí)鐘頻率初始化Flash訪問(wèn)等待時(shí)間,然后再關(guān)閉PIE中斷和系統(tǒng)總中斷,并清除所有中斷的中斷標(biāo)志位,上面所有配置函數(shù)除了InitCpuTimer()為自己配置的,其他均為調(diào)用官方驅(qū)動(dòng)庫(kù)。
InitCpuTimer()為初始化一個(gè)定時(shí)器,計(jì)數(shù)器每1us減1,計(jì)數(shù)周期為1s中,后序?qū)⒗眠@個(gè)定時(shí)器測(cè)量一些函數(shù)或算法的執(zhí)行時(shí)間,以評(píng)估DSC28034PNT的運(yùn)算性能,InitCpuTimer()的初始化代碼如下:
/******************************************************************
*函數(shù)名:void InitCpuTimer(void) *參 數(shù) :無(wú) *返回值:無(wú) *作 用 :初始化定時(shí)器 ******************************************************************/ void InitCpuTimer(void) { //==========CPU Timer 0=========================// CpuTimer0Regs.PRD.all = 1000000; // Initialize timer period to 1s: CpuTimer0Regs.TPR.bit.PSC = 120; // Initialize pre-scale counter to divide by 1 (SYSCLKOUT): CpuTimer0Regs.TPR.bit.TDDR = 120; CpuTimer0Regs.TCR.bit.TSS = 1; // Make sure timer is stopped: CpuTimer0Regs.TCR.bit.TRB = 1; // Reload all counter register with period value: CpuTimer0Regs.TCR.bit.TIE = 0; // 0 = Disable/ 1 = Enable Timer Interrupt CpuTimer0Regs.TCR.bit.TSS = 0; // Start CpuTimer0 }
不知道寫(xiě)啥,暫時(shí)先寫(xiě)這么多
-
中科昊芯
+關(guān)注
關(guān)注
5文章
85瀏覽量
5995 -
開(kāi)發(fā)板試用
+關(guān)注
關(guān)注
3文章
303瀏覽量
2755
發(fā)布評(píng)論請(qǐng)先 登錄
【作品合集】中科昊芯Core_DSC280025C開(kāi)發(fā)板測(cè)評(píng)
中科昊芯Core_DSC280025C開(kāi)發(fā)板的外部中斷問(wèn)題
【中科昊芯Core_DSC280025C開(kāi)發(fā)板試用體驗(yàn)】---定時(shí)器中斷方式的LED流水燈
【中科昊芯Core_DSC280025C開(kāi)發(fā)板試用體驗(yàn)】---LED閃爍燈
[經(jīng)驗(yàn)] 【中科昊芯Core_DSC280025C開(kāi)發(fā)板試用體驗(yàn)】---模擬SPI及定時(shí)器的應(yīng)用
【中科昊芯Core_DSC280025C開(kāi)發(fā)板試用體驗(yàn)】+4. CAN外設(shè)調(diào)試(含源碼)
【中科昊芯Core_DSC280025C開(kāi)發(fā)板試用體驗(yàn)】+SCI測(cè)試與代碼解讀
【中科昊芯Core_DSC280025C開(kāi)發(fā)板試用體驗(yàn)】+epwm輸出測(cè)試與代碼解讀
【中科昊芯Core_DSC280025C開(kāi)發(fā)板試用體驗(yàn)】+3.DSP基礎(chǔ)外設(shè)調(diào)試(含源碼)
【中科昊芯Core_DSC280025C開(kāi)發(fā)板試用體驗(yàn)】+epwm周期性啟動(dòng)光照傳感器工程
【中科昊芯Core_DSC280025C開(kāi)發(fā)板試用體驗(yàn)】+2.RAM工程與FLASH工程對(duì)比
【中科昊芯Core_DSC280025C開(kāi)發(fā)板試用體驗(yàn)】+1.開(kāi)箱之浮點(diǎn)計(jì)算對(duì)比
AioneMotor_DSC28034_L3F驅(qū)控一體板現(xiàn)貨庫(kù)存
中科昊芯Core_DSC280025C開(kāi)發(fā)板免費(fèi)試用
【中科昊芯Start_DSC28034PNT湖人開(kāi)發(fā)板試用體驗(yàn)】DSC28034PNT片上系統(tǒng)時(shí)鐘及中斷向量初始化
評(píng)論