typedef struct
{
/* 这个不用解释 */
uint32_t GPIO_Pin;
/* GPIO_Mode_IN = 0x00, /*输入 TTL电平 通用IO模式选择 */
GPIO_Mode_OUT = 0x01, /*输出 TTL 通用IO模式选择 */
GPIO_Mode_AF = 0x02, /*复用功能,IO不做通用IO时选择这个参数 */
GPIO_Mode_AN = 0x03 /*模拟电平 ADC ,DAC 时选这个参数 */
*/
GPIOMode_TypeDef GPIO_Mode;
/*
GPIO_Speed_Level_1 = 0x01, /*!< Medium Speed */
GPIO_Speed_Level_2 = 0x02, /*!< Fast Speed */
GPIO_Speed_Level_3 = 0x03 /*!< High Speed */
#define GPIO_Speed_10MHz GPIO_Speed_Level_1 /*!< Fast Speed:10MHz */
#define GPIO_Speed_2MHz GPIO_Speed_Level_2 /*!< Medium Speed:2MHz */
#define GPIO_Speed_50MHz GPIO_Speed_Level_3 /*!< High Speed:50MHz */
没什么说的IO速度而已,根据IO上信号的频率选择
*/
GPIOSpeed_TypeDef GPIO_Speed; /*!< Specifies the speed for the selected pins.
This parameter can be a value of @ref GPIOSpeed_TypeDef */
/*
GPIO_OType_PP = 0x00, //推挽
GPIO_OType_OD = 0x01 //开漏
在复用功能,和普通IO输出功能 时需要配置,不配置应该默认初始化为0.即推挽
*/
GPIOOType_TypeDef GPIO_OType; /*!< Specifies the operating output type for the selected pins.
This parameter can be a value of @ref GPIOOType_TypeDef */
/*
GPIO_PuPd_NOPULL = 0x00,
GPIO_PuPd_UP = 0x01,
GPIO_PuPd_DOWN = 0x02
不拉,上拉,下拉,根据需要配置,不配置默认0,不拉
*/
GPIOPuPd_TypeDef GPIO_PuPd; /*!< Specifies the operating Pull-up/Pull down for the selected pins.
This parameter can be a value of @ref GPIOPuPd_TypeDef */
}GPIO_InitTypeDef;
有3个参数是必须要配置的 GPIO_Pin GPIO_Mode GPIO_Speed 其它两个不配置就默认选0
void Init()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE); //
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
//定义了 GPIO_InitStructure 后里面各个参数初始化为0,所以下面两句没有意义,可以省略
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;// 有需要就配置,不配置默认0
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//有需要就配置,不配置默认0
//如果是复用模式,就需要下面这个函数
//解释下GPIO_AF_1,在手册引脚表后有个复用表 看了就知道怎么选择了
// GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_1);
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
突然要用STM32F030 IO参数配置和103有点区别,网上有没找到相关解释,
特此记录。
有错误请指出更正
|