void delay(uint32_t t)
{
uint32_t i;
while(t--)
for(i=0;i<10000;i++);
}
delay(1000);
請教,這是延時多久?
有沒有精準的定時器?TIM ? 系統 system ?
uj5u.com熱心網友回復:
回圈只是普通的計數轉時間,當然受中斷等影響,比較精準的是外部時鐘芯片提供的信號。但是用于時間計時的話也難免要校準的。uj5u.com熱心網友回復:
看樣子是按cpu 的時鐘周期算的uj5u.com熱心網友回復:
這個延時不準,可以用定時器,系統嘀嗒定時,你可以模擬仿真,看執行一潭訓編指令是需要多長時間uj5u.com熱心網友回復:
可以用定時器,也可以用系統時鐘uj5u.com熱心網友回復:
systick系統時鐘?
uj5u.com熱心網友回復:
系統時鐘我還不會用
uj5u.com熱心網友回復:
我也覺得用回圈這個不準
uj5u.com熱心網友回復:
// 啟動系統時鐘計數,9M
SysTick->LOAD = SysTick_LOAD_RELOAD_Msk; /* set reload register */
SysTick->VAL = (0x00); /* Load the SysTick Counter Value */
SysTick->CTRL = SysTick_CTRL_ENABLE_Msk; // 9M
while(1)
{
// 實時回圈周期
m_nMainCycle = ((SysTick_LOAD_RELOAD_Msk + 1) - SysTick->VAL) / 9;
SysTick->VAL = 0;
if(m_nMainCycle > m_nMaxCycle)
m_nMaxCycle = m_nMainCycle;
uj5u.com熱心網友回復:
上面的代碼是我用系統測驗主回圈周期uj5u.com熱心網友回復:
不同的主頻不同的CPU延時時間不一樣,你可以寫個代碼,用示波器測一下就知道延時多久
main()
{
while(1)
{
delay(100);
P00=~P00;
}
}
uj5u.com熱心網友回復:
我看看,代碼有些看不懂
uj5u.com熱心網友回復:
可以用滴答時鐘,相對來說還是挺準的uj5u.com熱心網友回復:
我再學習,能賜教一下嗎?
uj5u.com熱心網友回復:
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/67452.html
標籤:單片機/工控
上一篇:win10下的PCIEx1驅動
下一篇:模電分析
