關(guān)于延時的一個很簡單的程序, 但是輸出很詭異的結(jié)果

MCU 用的是CH32V203C8T6, 不能再簡單的程序吧, 應(yīng)該是5秒輸出一個"hello/", 但實際卻一直在連續(xù)輸出, 基本沒有任何延時?

請問是哪里出錯了呢?


#include "debug.h"
int main(void)
{
??? USART_Printf_Init(115200);
??? printf("SystemClk:%d\r\n", SystemCoreClock);

??? while(1)
??? {
??????? printf("hello/");
??????? Delay_Ms(5000);
??? }
}

系統(tǒng)滴答定時器沒有初始化,你這水平,一看就是剛接觸單片機


調(diào)用

Delay_Init();

進行初始化,試試看~~參考代碼中有


Delay_Init();

這句忘記加了,參考代碼里有。另外提一下,以后用了RTOS,是不能在RTOS運行后使用這個Delay的,要換RTOS的。


感謝樓上兩位, 確實加上Delay_Init() 就可以了, 一直用Arduinio, 還沒養(yǎng)成什么設(shè)備都要初始化的編程習慣 ^v^


這段程序看來還有別的問題,? printf 如果不加 "\r\n" 會導(dǎo)致意想不到的后果, 比如下面的這段程序, 本以為會先打印出來一個 "Hello " 5秒后再打印 "world!", 實際運行情況是: 10秒后 "Hello world!" 一起打印出來的!!?

這是在Arduino 里面是不敢想象的....


int main(void)

{

? ? Delay_Init();

? ? USART_Printf_Init(115200);

? ? printf("SystemClk:%d\r\n", SystemCoreClock);

? ? printf("GPIO Toggle TEST\r\n");


? ? while(1)

? ? {

? ? ? ? Delay_Ms(5000);

? ? ? ? printf("Hello ");

? ? ? ? Delay_Ms(5000);

? ? ? ? printf("world!\r\n");

? ? }

}



這是很正常的。換行在c語言的printf里會清空緩沖區(qū),全部輸出(建議自行百度了解一下)。個人不建議把arduino的習慣代入常規(guī)C語言開發(fā)。


https://blog.csdn.net/cxsjabcabc/article/details/107136400,可以參考這篇文章學(xué)習一下。


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

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