下面是 STM32 視頻教程上的點(diǎn)燈程序, 但是在Risc-V的 CH32V203F8P6 開發(fā)板上編譯, 卻得不到想要的結(jié)果!
延時函數(shù):?for(int i=0; i < 50000000; i ++) 實(shí)際只執(zhí)行了一次, 但是如果改用 Delay_Ms() 函數(shù)就完全正常,?
難道編譯器跳過了某些程序段?! 或者是程序段也會緩存運(yùn)行?!
==================================
#include?
#include
int main() {
? ? //init the clock for port C
? ? USART_Printf_Init(115200);
? ? Delay_Init();
? ? RCC->APB2PCENR |= (1 <<3);
? ? GPIOB->CFGHR |= ((1<<20)|(1<<21));? // p106
? ? GPIOB->CFGHR &= ~((1<<22)|(1<<23));
? ? while(1){
? ? ? ? GPIOB->BSHR = (1<<13);? //p107
? ? ? ? printf("ON\r\n");
//? ? ? ? Delay_Ms(1000);??
? ? ? ? for(int i=0; i < 50000000; i ++);? //被跳過??
? ? ? ? GPIOB->BSHR = (1 << (13+16));
? ? ? ? printf("OFF\r\n");
//? ? ? ? Delay_Ms(1000);??
? ? ? ? for(int i=0; i < 50000000; i ++);??
? ? }
}