熱度 2|
DSP28335— DELAY_US總結(jié) 在很多程序中都會調(diào)用延時程序DELAY_US(A),在文件DSP2833x_Examples.h中有如下宏定義: #define DELAY_US(A) DSP28x_usDelay(((((long double) A * 1000.0L) / (long double)CPU_RATE) - 9.0L) / 5.0L) 在仿真調(diào)試的情況下運行程序,延時是較準(zhǔn)確的,但是當(dāng)把程序燒寫到flash里運行時,如果程序上不做修改,就會很容易發(fā)現(xiàn)延時的時間比你設(shè)置的要長(通過延時控制LED燈閃爍,很直觀)。這是因為,DSP訪問flash時需要等待時間的,而訪問RAM時幾乎是零等待,所以在使用DELAY_US(A)時要想延時時間準(zhǔn)確必須使其在RAM里運行,在程序上需做如下修改: 1、在DSP2833x_usDelay.asm中,有如下代碼:
.global __DSP28x_usDelay 其中.sect "ramfuncs"語句的作用就是就把用匯編寫的函數(shù)DSP28x_usDelay定位在ramfuncs段。
2、在工程中添加源文件DSP2833x_MemCopy.c,該文件中的函數(shù)void MemCopy(Uint16 *SourceAddr, Uint16* SourceEndAddr, Uint16* DestAddr),實現(xiàn)把你想復(fù)制的代碼從裝載地址RamfuncsLoadStart—RamfuncsLoadEnd拷貝到RamfuncsRunStart開始的SARAM空間中。
3、在文件DSP2833x_SysCtrl.c開頭,通過偽指令定義一個代碼段,注意位置一定要放在函數(shù)前面(如下圖所示)。 4、在main函數(shù)中要調(diào)用MemCopy函數(shù),注意該函數(shù)放置的位置。
6、注意在頭文件DSP2833x_GlobalPrototypes.h 別忘做如下聲明: |
Powered by 單片機教程網(wǎng)