小学生
最后登录1970-1-1
在线时间 小时
注册时间2023-3-2
|
- #if 0 //注释的意思
- #include <reg52.h>
- sbit LED=P0^0;
- void main(void)
- {
- P0=0xfe;//总线操作
- LED=0;
- }
- #endif
- #include "DELAY.H"
- #include "STM32F10X.H"//实现寄存器映射
- int main()
- {
- #if 0
-
- //直接寻址点亮LED灯并通过delay函数实现延时
-
- int i=0;
- //打开GIOP端口的时钟
- *(unsigned int * )0x40021018 |= ((1)<<3);
-
- //配置IO口为输出 (CRL 寄存器)
- *(unsigned int * )0x40010C00 |= ((1)<<(4*0));
-
- for(i=0;i<20;i++)
- {
- //控制 ODR 寄存器
- *(unsigned int * )0x40010C0C &= ~(1<<0);
- delay();
- *(unsigned int * )0x40010C0C |= (1<<0);
- delay();
- }
- #elseif 0
- //操作RCC_APB2ENR CRL ODR 实现LED灯的点亮
- //打开GPIOB端口的时钟
- RCC_APB2ENR |= ((1)<<3);
-
- //配置IO口为推挽输出 (CRL 寄存器)
- GPIOB_CRL &= ~((0x0f)<<(4*0));//把CRL寄存器低四位(每四位CRL控制相应端口的某一位)的值初始化为零,防止复位值0100B的出现
- GPIOB_CRL |= ((1)<<(4*0));//把初始化后的CRL寄存器低四位赋值为0001B
-
- //设置 ODR 寄存器的最低位为0
- GPIOB_ODR &= ~(1<<0);
-
- #endif
-
- #if 0
-
- //通过操作BSRR实现LED灯的点亮
-
- //打开GPIOB端口的时钟
- RCC_APB2ENR |= ((1)<<3);
-
- //配置IO口为推挽输出 (CRL 寄存器)
- GPIOB_CRL &= ~((0x0f)<<(4*0));//把CRL寄存器低四位(CRL每四位控制相应端口的某一位)的值初始化为零,防止CRL复位值0100B的出现
- GPIOB_CRL |= ((1)<<(4*0));//把初始化后的CRL寄存器低四位赋值为0001B
-
- //设置 BSRR 寄存器的最低位为0
- GPIOB_BSRR &= ~(1<<0);
-
- #endif
- #if 1
-
- //通过操作BRR实现LED灯的点亮
-
- //打开GPIOB端口的时钟
- RCC_APB2ENR |= ((1)<<3);
-
- //配置IO口为推挽输出 (CRL 寄存器)
- GPIOB_CRL &= ~((0x0f)<<(4*0));//把CRL寄存器低四位(CRL每四位控制相应端口的某一位)的值初始化为零,防止CRL复位值0100B的出现
- GPIOB_CRL |= ((1)<<(4*0));//把初始化后的CRL寄存器低四位赋值为0001B
- //设置 BRR 寄存器的最低位为1,会将对应的ODR位变成0
- GPIOB_BRR |= (1<<0);
-
- #endif
- }
- void SystemInit (void)
- {
- //目的是骗过编译器不报错
- }
复制代码
|
|