(2)写入代码
注意项目结构,使用的引脚是PA7,PB9,PC15
代码如下:- #include "stm32f10x.h"
- //----------------APB2使能时钟寄存器 ---------------------
- #define RCC_APB2ENR *((unsigned volatile int*)0x40021018)
- //----------------GPIOA配置寄存器 -----------------------
- #define GPIOA_CRL *((unsigned volatile int*)0x40010800)
- #define GPIOA_ODR *((unsigned volatile int*)0x4001080C)
- //----------------GPIOB配置寄存器 -----------------------
- #define GPIOB_CRL *((unsigned volatile int*)0x40010C00)
- #define GPIOB_ODR *((unsigned volatile int*)0x40010C0C)
- //----------------GPIOC配置寄存器 -----------------------
- #define GPIOC_CRH *((unsigned volatile int*)0x40011004)
- #define GPIOC_ODR *((unsigned volatile int*)0x4001100C)
- //延时函数
- void Delay()
- {
- u32 i=0;
- for(;i<5000000;i++);
- }
- int main(void)
- {
- RCC_APB2ENR|=1<<2|1<<3|1<<4; //APB2-GPIOA、GPIOB、GPIOC外设时钟使能
-
- GPIOA_CRL&=0xFFF0FFFF; //设置位 清零
- GPIOA_CRL|=0x00020000; //PB5推挽输出
- GPIOA_ODR&=~(1<<4); //设置初始灯为灭
-
- GPIOB_CRL&=0xFF0FFFFF; //设置位 清零
- GPIOB_CRL|=0x00200000; //PB5推挽输出
- GPIOB_ODR&=~(1<<5); //设置初始灯为灭
-
- GPIOC_CRH&=0xF0FFFFFF; //设置位 清零
- GPIOC_CRH|=0x02000000; //PB5推挽输出
- GPIOC_ODR&=~(1<<14); //设置初始灯为灭
-
-
- while(1){
- //A灯
- GPIOA_ODR|=1<<4; //PB5高电平
- Delay();
- GPIOA_ODR&=~(1<<4); //PB5低电平,因为是置0,所以用按位与
-
- //B灯
- GPIOB_ODR|=1<<5; //PB5高电平
- Delay();
- GPIOB_ODR&=~(1<<5); //PB5低电平,因为是置0,所以用按位与
-
-
- //C灯
- GPIOC_ODR|=1<<14; //PB5高电平
- Delay();
- GPIOC_ODR&=~(1<<14); //PB5低电平,因为是置0,所以用按位与
-
- }
- }
|