求CH32V307VCT6 高精度計時器用法代碼

我想用CH32V307VCT6的基本定時器TIM6來實現(xiàn)高精度延時1us和1ms,請給一個demo代碼,謝謝!

您好,附件為參考例程,可以簡單參考一下

icon_rar.gifCH32V307 TIM6延時.zip



您的代碼使用了中斷處理函數(shù),但我的想法是能否不用中斷處理函數(shù)來實現(xiàn)延時?就像CH32V307EVT例程里面的:

void Delay_Us(uint32_t n)

{

? uint32_t i;

? SysTick->SR &= ~(1 << 0);

? i = (uint32_t)n * p_us;

? SysTick->CMP = i;

? SysTick->CTLR |= (1 << 4) | (1 << 5) | (1 << 0);

? while((SysTick->SR & (1 << 0)) != (1 << 0)) ;

? SysTick->CTLR &= ~(1 << 0);

}

這個里面使用的是SysTick,我的想法是能否用TIM6代替SysTick來完成延時的功能?
或者說,能否直接操作TIM6的寄存器來實現(xiàn)延時功能?謝謝。


j_0012.gif3樓你這想法是要用定時器來實現(xiàn)多組軟定時器,百度一下這種的會很多。

如果用純C實現(xiàn),原則上就是定義一個軟定時數(shù)組,然后systick每1ms去判斷軟定時器數(shù)組里面的模式進行軟時間的加、減,最后根據(jù)加、減修改狀態(tài)。

可以參考https://blog.csdn.net/qq_39400113/article/details/120500872這個。


在裸機中,我一般都不用這種,而是在每個獨立的C里面直接判斷systick間隔差來執(zhí)行,這樣的話可以避免各個C之間的代碼耦合問題。


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

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