第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

學(xué)嵌入式的時(shí)候 ,碰到以下延時(shí)函數(shù),麻煩高手幫幫忙~

學(xué)嵌入式的時(shí)候 ,碰到以下延時(shí)函數(shù),麻煩高手幫幫忙~

冉冉說 2022-10-02 14:10:53
void Delay(int time){U32 val = (PCLK>>3)/1000-1;rTCFG0 &= ~(0xff<<8);rTCFG0 |= 3<<8; //prescaler = 3+1rTCFG1 &= ~(0xf<<12);rTCFG1 |= 0<<12; //mux = 1/2rTCNTB3 = val;rTCMPB3 = val>>1; // 50%rTCON &= ~(0xf<<16);rTCON |= 0xb<<16; //interval, inv-off, update TCNTB3&TCMPB3, start timer 3rTCON &= ~(2<<16); //clear manual update bitwhile(time--) {while(rTCNTO3>=val>>1);while(rTCNTO3<val>>1);};}
查看完整描述

2 回答

?
ibeautiful

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊

一種最原始,最沒有效率的延時(shí)程序。在調(diào)用這個(gè)延時(shí)程序時(shí),CPU將在while(time--){}這個(gè)循環(huán)處不停的等待,直到time減到零,標(biāo)志著延時(shí)結(jié)束。程序也隨之退出。
從函數(shù)第一句開始,直到while循環(huán)語句之前,都屬于定時(shí)器配置。通過注釋可以看出,使用了定時(shí)器3。由于不知道單片機(jī)的型號(hào),只能做一個(gè)通用的解釋??炊@一解釋的基礎(chǔ)是你知道單片機(jī)定時(shí)器的配置方法和工作原理。
首先,表示時(shí)間的變量time不是時(shí)間單位,并不表示毫秒或者秒,他代表了延時(shí)多少個(gè)脈沖。而變量val也是脈沖,他定義了一個(gè)定時(shí)器工作周期所經(jīng)過的脈沖數(shù)。單個(gè)脈沖表示的時(shí)間間隔則通過單片機(jī)工作頻率計(jì)算出來。比如說,單片機(jī)的頻率為10mHz,那么每個(gè)脈沖的時(shí)間就是1uS(假設(shè)分頻電路為1:1)。如果需要定時(shí)器的一個(gè)工作周期為1ms,那么val就需要設(shè)為1000。如果延時(shí)10ms,則time=100??梢?,延時(shí)時(shí)間只能是定時(shí)器工作周期的整數(shù)倍。
rTcon3是定時(shí)器3的計(jì)數(shù)器,每個(gè)脈沖過后,會(huì)根據(jù)定時(shí)器的設(shè)定而自動(dòng)進(jìn)行+1操作。完成一個(gè)工作周期后,恢復(fù)為0。

查看完整回答
反對(duì) 回復(fù) 2022-10-06
?
HUH函數(shù)

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊

這是利用定時(shí)器3的計(jì)數(shù)功能來延時(shí)的程序
void Delay(int time)
{
U32 val = (PCLK>>3)/1000-1;

rTCFG0 &= ~(0xff<<8);
rTCFG0 |= 3<<8; //prescaler = 3+1
rTCFG1 &= ~(0xf<<12);
rTCFG1 |= 0<<12; //mux = 1/2 //這四句設(shè)置定時(shí)器輸入的頻率,PCLK/8

rTCNTB3 = val; //設(shè)置計(jì)數(shù)值,輸入頻率除以1000,即計(jì)數(shù)器到底時(shí)正好1ms
rTCMPB3 = val>>1; // 50% //這個(gè)是設(shè)置比較值,計(jì)數(shù)到這個(gè)值時(shí),引腳會(huì)有輸出
rTCON &= ~(0xf<<16);
rTCON |= 0xb<<16; //interval, inv-off, update TCNTB3&TCMPB3, start timer 3
rTCON &= ~(2<<16); //clear manual update bit //這幾行是啟動(dòng)定時(shí)器,開始進(jìn)行計(jì)數(shù),計(jì)數(shù)到0時(shí)自動(dòng)重新裝載計(jì)數(shù)值
while(time--) {
while(rTCNTO3>=val>>1);
while(rTCNTO3<val>>1); //這兩行是讀取計(jì)數(shù)器的值,每次到一半時(shí),將time減一次,因?yàn)橛?jì)數(shù)器一直在走的,所以要使用范圍讀取,不能像這樣while(rTCNTO3 == 0),這樣的話,估計(jì)會(huì)永遠(yuǎn)都等等不到的。
};
}


查看完整回答
反對(duì) 回復(fù) 2022-10-06
  • 2 回答
  • 0 關(guān)注
  • 126 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)