作业一:自己实现寄存器配置点亮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总线上的时钟