LED1对应的引脚是PE5(也就是GPIO的端口E) LED0对应的引脚是PB5(也就是GPIO的端口B)
可看到GPIO端口E的基地址为:0x4001 1800 - 0x4001 1BFF 可看到GPIO端口B的基地址为:0X4001 0C00 - 0x4001 0FFF
我们配置的寄存器模式为推挽输出模式,输出模式的最大速度为50MHz。 代码实现: 上面得到了PE5的基地址为:0x40011800 偏移地址为:0x00 得GPIOE_CRL寄存器地址为:0x40011800
*(unsigned int *)0x40011800 &=(0x0f<<20); //设置为推挽输出模式 *(unsigned int *)0x40011800 |=(0x3<<20); //输出模式的最大速度为50MHz我们配置的寄存器模式为推挽输出模式,输出模式的最大速度为50MHz。 代码实现: 上面得到了PB5的基地址为:0X40010C00 偏移地址为:0x00 得GPIOE_CRL寄存器地址为:0X40010C00
*(unsigned int *)0X40010C00 &=(0x0f<<20); //设置为推挽输出模式 *(unsigned int *)0X40010C00 |=(0x3<<20); //输出模式的最大速度为50MHz将GPIOx_ODR寄存器bit5位置0,
代码实现: 上面得到了PE5的基地址为:0x40011800 偏移地址为:0x0C 得GPIOE_ODR寄存器地址为:0x4001180C 配置PE5输出低电平
*(unsigned int *)0x4001180C &= ~(0x01 <<5);配置PB5输出低电平
代码实现: 上面得到了PB5的基地址为:0X40010C00 偏移地址为:0x0C 得GPIOE_CRL寄存器地址为:0X40010C0C
*(unsigned int *)0x40010C00 &= ~(0x01 <<5);其对应得时钟为APB2
其基地址为:0x40021000
代码实现: 复位和时钟控制器得基地址为:0x40021000、 偏移值为:0x18 得到APB2外设寄存器地址为:0x40021018
使能IO端口B和IO端口E:
*(unsigned int *)0x40021018 |=(1<<3); //使能IO端口B开启 *(unsigned int *)0x40021018 |=(1<<6); //使能IO端口E开启