首先,得找时钟频率,LED0,LED1为PF8/9,D3和D4为PE13/14
找他们的物理地址0x40023800 + 0X30
d0和d1的是位5 gpiofen,置为1,d2和d3是位4
所以得定义一个物理地址
#define MY_RCC_AHB1_ENR (*(unsigned long*)(0x40023800+0x30))
//开启GPIOE和GPIOF组的时钟脉冲,把[4:5] 设置为 11
MY_RCC_AHB1_ENR |= 3<<4;
其次,设置他们的引脚,9号,10号
//GPIOE组的起始地址是 0x40021000
#define MY_GPIOE_MODE (*(unsigned long*)(0x40021000+0x00))
//GPIOF组的起始地址是 0x40021400
#define MY_GPIOF_MODE (*(unsigned long*)(0x40021400+0x00))
//设置GPIOE组的13和14号引脚为输出模式 [26:29] 0101
//先清空,再设置引脚为1
MY_GPIOE_MODE &= ~( 0xF << 26);
MY_GPIOE_MODE |= 0x05 << 26;
//设置GPIOF组的9号和10引脚为输出模式 0101
MY_GPIOF_MODE &= ~(0xF<<18);//把[18:21]bit清零
MY_GPIOF_MODE |= 0x5<<18;//把[18:21]bit写成 0101
最后设置点灯低电平
#define MY_GPIOE_ODR (*(unsigned long*)(0x40021000+0x14))
#define MY_GPIOF_ODR (*(unsigned long*)(0x40021400+0x14))
//设置GPIOE组的13和14号引脚为低电平 [13:14]bit设置为 00
MY_GPIOE_ODR &= ~(0x3<<13);
//设置GPIOF组的9号和10号引脚输出 低电平
MY_GPIOF_ODR &= ~(3<<9);