下面是 STM32 视频教程上的点灯程序, 但是在Risc-V的 CH32V203F8P6 开发板上编译, 却得不到想要的结果!
延时函数: for(int i=0; i < 50000000; i ++) 实际只执行了一次, 但是如果改用 Delay_Ms() 函数就完全正常,
难道编译器跳过了某些程序段?! 或者是程序段也会缓存运行?!
==================================
#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 ++);
}
}