作业一:自己实现寄存器配置点亮LED1。
作业二:寄存器配置打开风扇,打开蜂鸣器。
- //1、使能系统时钟
- // 系统时钟初始化 - 不加入会报错 可以尝试一下
- void SystemInit(void)
- {
- //对地址 0xE000ED88 的内容 进行修改:
- //将0X3向左移动20位 或上 0X3 向左移动22位
- *(unsigned int*) 0xE000ED88|=((3UL << 20U)|(3UL << 22U));
- }
- int main()
- {
- //小灯
- //1、GPIOC的RCC寄存器地址,将位2置为1,使能GPIOC的RCC时钟
- *(unsigned int *) 0x56020c8c |=1<<2;
-
- //2、PC13,配置为通用输出模式,GPIO_MODER位27和26置为01
- *(unsigned int*) 0x52020800 &=~(1<<27);
- *(unsigned int*) 0x52020800 |=1<<26;
-
- //3、PC13设置输出类型,GPIO_OTYPER寄存器推挽输出位13设置为0
- *(unsigned int*) (0x52020800+0x04) &=~(1<<13);
-
- //4、PC13设置为低速输出即可,GPIO_OSPEEDR位27和26置为00
- *(unsigned int*) (0x52020800+0x08) &=~(1<<27);
- *(unsigned int*) (0x52020800+0x08) &=~(1<<26);
-
- //5、PC13设置为输出,GPIO_ODR寄存器高电平位13置1
- *(unsigned int*) (0x52020800+0x14) |=(1<<13);
-
- //蜂鸣器
- //1、GPIOC的RCC寄存器地址,将位0置为1,使能GPIOC的RCC时钟
- *(unsigned int *) 0x56020c8c |=1<<0;
-
- //2、PA15,配置为通用输出模式,GPIO_MODER位27和26置为01
- *(unsigned int*) 0x52020000 &=~(1<<31);
- *(unsigned int*) 0x52020000 |=1<<30;
-
- //3、PA15设置输出类型,GPIO_OTYPER寄存器推挽输出位15设置为0
- *(unsigned int*) (0x52020000+0x04) &=~(1<<15);
-
- //4、PA15设置为低速输出即可,GPIO_OSPEEDR位31和30置为00
- *(unsigned int*) (0x52020000+0x08) &=~(1<<31);
- *(unsigned int*) (0x52020000+0x08) &=~(1<<30);
-
- //5、PA15设置为输出,GPIO_ODR寄存器高电平位15置1
- *(unsigned int*) (0x52020000+0x14) |=(1<<15);
-
- //风扇
- //1、GPIOC的RCC寄存器地址,将位2置为1,使能GPIOC的RCC时钟
- *(unsigned int *) 0x56020c8c |=1<<2;
-
- //2、PC6,配置为通用输出模式,GPIO_MODER位13和12置为01
- *(unsigned int*) 0x52020800 &=~(1<<13);
- *(unsigned int*) 0x52020800 |=1<<12;
-
- //3、PC6设置输出类型,GPIO_OTYPER寄存器推挽输出位6设置为0
- *(unsigned int*) (0x52020800+0x04) &=~(1<<6);
-
- //4、PC6设置为低速输出即可,GPIO_OSPEEDR位13和12置为00
- *(unsigned int*) (0x52020800+0x08) &=~(1<<13);
- *(unsigned int*) (0x52020800+0x08) &=~(1<<12);
-
- //5、PC6设置为输出,GPIO_ODR寄存器高电平位6置1
- *(unsigned int*) (0x52020800+0x14) |=(1<<6);
-
- return 0;
- }
- //2、使能GPIO总线上的时钟
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |