如有错误,还请包涵与指出
1.keil中的GIPO端口配置值与对应寄存器端口配置值
在配置端口模式时,突然想到为什么stm32f10x_gpio.h文件中配置端口的模式值等于图1这些值,这些值与寄存器上介绍的值又感觉不一样,为什么这8种模式就等于对应的这些值。
//8种输出模式
typedef enum
{ GPIO_Mode_AIN = 0x0,
GPIO_Mode_IN_FLOATING = 0x04,
GPIO_Mode_IPD = 0x28,
GPIO_Mode_IPU = 0x48,
GPIO_Mode_Out_OD = 0x14,
GPIO_Mode_Out_PP = 0x10,
GPIO_Mode_AF_OD = 0x1C,
GPIO_Mode_AF_PP = 0x18
}GPIOMode_TypeDef;
//端口的三种速度
typedef enum
{
GPIO_Speed_10MHz = 1,
GPIO_Speed_2MHz,
GPIO_Speed_50MHz
}GPIOSpeed_TypeDef;
图1 Keil中配置端口给的值
在STM32中文参考手册中,可以看到端口配置低寄存器(CRL)的定义,如图2所示,对某个端口配置成推挽输出,速度为50MHz,则这4位为:0011。这里当时想糊涂了,一个是0011,一个是0x10,怎么等价的。去网上百度了一下,在