CH32X035延時(shí)函數(shù)不生效

微信截圖_20240904191147.png


麻煩技術(shù)人員幫忙分析下,最下面的Delay_Ms(10000);不起作用。

用的是EVT里的低速率鍵盤例程。

代碼不全。建議整個(gè)工程文件夾上傳。


CH32X035_EVT\EXAM\USB\USBFS\DEVICE\CompositeKM_LowSpeed例程,只改了main函數(shù)如上圖部分。

icon_rar.gifCompositeKM_LowSpeed.rar



Delay_Ms(10000);

改成:

for(uint8_t?i=0;i<10;i++){
????Delay_Ms(1000);
}

會(huì)大約延遲5秒;

兩個(gè)問題:

1、延遲較大數(shù)字時(shí)整個(gè)延遲函數(shù)不起作用。

2、延遲較小數(shù)字時(shí)有作用,但是時(shí)間不準(zhǔn)。



您好,關(guān)于Delay_Ms(10000)沒有生效問題,這邊具體看了一下是和USB中斷函數(shù)中掛起下面的延時(shí)沖突了,具體原因應(yīng)該是Delay_Ms(10000)執(zhí)行的時(shí)候進(jìn)入U(xiǎn)SB掛起中斷,然后中斷函數(shù)中延時(shí)函數(shù)執(zhí)行完成后對(duì)應(yīng)狀態(tài)標(biāo)志位被清除導(dǎo)致Delay_Ms(10000)函數(shù)沒有完全執(zhí)行完成。你可以按照下圖將中斷函數(shù)中延時(shí)函數(shù)注釋掉應(yīng)該就可以了。

image.png



謝謝,已驗(yàn)證可以。

PS.

老師麻煩再請(qǐng)教下,這種中斷處理函數(shù)與用戶函數(shù)共享延遲函數(shù)狀態(tài)標(biāo)志位,導(dǎo)致延遲函數(shù)不可重入的問題最好應(yīng)該怎么解決?


原則上中斷快進(jìn)快出,不要在中斷中做耗時(shí)操作。如果由于時(shí)序等特殊情況不得不延時(shí),可以用兩個(gè)方案:死循環(huán)延時(shí),或是改寫循環(huán)邏輯,讓SysTick只負(fù)責(zé)記錄系統(tǒng)啟動(dòng)以來的ms數(shù),具體延時(shí)邏輯寫成可重入的;或者是中斷里放置標(biāo)志位提示主循環(huán)中需要處理某個(gè)延時(shí)邏輯。


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频