關于CH32V307的RTThread 例程的delay

各位好。

參考CH32V307的RTThread 例程中發(fā)現,WCH提供的Delay_Us函數,對SysTick進行了操作;而RT Thread中也對systick進行了操作。

在線程中使用了Delay_Us函數的時候可能會一直沒有返回。請確認下,謝謝。

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);

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


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

? ? ? ? ;

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

}


void SysTick_Handler(void)

{

? ? GET_INT_SP();

? ? /* enter interrupt */

? ? rt_interrupt_enter();

? ? SysTick->SR=0;

? ? rt_tick_increase();

? ? /* leave interrupt */

? ? rt_interrupt_leave();

? ? FREE_INT_SP();


}



開啟了RTOS線程調度之后,就不要用Delay這些函數了。用RTOS本身自帶的sleep或者delay函數。


謝謝提醒。

官方模板比如說eth里面大部分例程都是裸機的,有用到一些delay us的函數,需要自己處理(RTOS一般是delay ms),我想官方是不是可以稍微處理下,免得直接移植到rtos中還得自己實現。


您好,感謝你的反饋建議,在我們CH32V307 EVT是有RT-Thread例程的。RT-Thread例程中,是有用到延時函數的,可以參考例程用發(fā),如下圖。CH32V307 EVT下載鏈接如下:

http://www.findthetime.net/downloads/CH32V307EVT_ZIP.html?

image.png

image.png


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

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