我幾乎是全新的PIC32及其在C編程,所以我有點難以解決如何解決以下問題。我被要求打開和關閉PIC32的LED,我可以做得很好;不過,我現在希望在切換之間添加0.25秒的延遲。我被告知假設我正在使用72MHz系統時鐘和36MHz外設總線時鐘。我現在知道Timer2是一個B型定時器,我應該將它配置爲16位非門操作。我認爲在設置TON開始時間之前,我可以首先根據需要在T2CON中設置TMR2,PR2和其他位的初始值,然後通過清零TON並重置初始值來結束它。使用PIC32的Timer2來設置延遲
那麼,如果上述聽起來不錯,我怎麼能用C來做到這一點?我可以從參考手冊收集的是,它可能看起來像以下:
T2CON = 0x0; // Stop Timer and clear control register,
// set prescaler at 1:1, internal clock source
TMR2 = 0x0; // Clear timer register
PR2 = 0xFFFF; // Load period register
T2CONSET = 0x8000; // Start Timer
現在,怎麼可能我設置了分頻,什麼不能讓我可以實現我的0.25秒延遲?我只是不擅長涵蓋C所需要的東西,而且我仍然不太擅長在彙編中進行這種事情......任何指導都是值得讚賞的。這裏是我的代碼迄今:
#include <p32xxxx.h>
int main()
{
while(1)
{
PORTDbits.RD0 = 1; // Turns LED On?
// Delay...?
PORTDbits.RD0 = 0; // Turns LED Off?
// Delay...?
}
return 0;
}
頭文件:p32mx360f512l.h
,如果沒有任何用處的。
是的,我想過使用中斷,但我相信教授會要求我們改變什麼應該是一個循環延遲一個爲下一個實驗室使用中斷。我想我設法弄清楚了。我在回憶什麼的PRx持有的問題......我想這樣的事情會的工作: 'T2CON =爲0x0;'' TMR2 = 0;'' PR2 = 0xFFFF的;'' = TCONSET 0x8000' ' while(TRM2 <(SysClockSpeed * SecondsOfDelay)){}' 'TCONCLR = 0x8000' –