仅包含启动文件 "STM32F10x.s"
#define GPIOA_CRL (*(volatile unsigned long *)(0x40000000+0x10000+0x0800+0x00)) #define GPIOA_CRH (*(volatile unsigned long *)(0x40000000+0x10000+0x0800+0x04)) #define GPIOA_IDR (*(volatile unsigned long *)(0x40000000+0x10000+0x0800+0x08)) #define GPIOA_ODR (*(volatile unsigned long *)(0x40000000+0x10000+0x0800+0x0C)) #define RCC_APB2ENR (*(volatile unsigned long *)(0x40000000+0x20000+0x1000+0x18)) void delay(unsigned long i) //超级不精确的软延时 { int j; while(i--) { for(j=0;j<1500;j++) {} } } int main(void) { RCC_APB2ENR = 1<<2; //打开PA时钟,默认启用内部8M时钟 GPIOA_CRH &= 0XFFFFFFF0; //准备配置PA GPIOA_CRH |= 0X00000003; //PA8 推挽输出 GPIOA_ODR |= 1<<8; //PA8 输出高,即先关闭led while(1) { GPIOA_ODR &= 0<<8; delay(3000); GPIOA_ODR |= 1<<8; delay(3000); } }