头文件定义:
#define OTHER_LED_GPIO_PIN GPIO_Pin_11
#define OTHER_LED_GPIO_PORT GPIOB
#define OTHER_LED_GPIO_CLK RCC_APB2Periph_GPIOB
C程序写法一:
void OTHER_GPIO_Config(void)
{
////将PB11设置为GPIO口,取消其作为USART3的串口功能
RCC_APB2PeriphClockCmd(OTHER_LED_GPIO_CLK,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_PinRemapConfig(GPIO_PartialRemap_USART3, DISABLE);
////结构体变量定义
GPIO_InitTypeDef GPIO_InitStruct;
////芯片工作指示灯端口初始化
//芯片工作指示灯
GPIO_InitStruct.GPIO_Pin = OTHER_LED_GPIO_PIN; //配置模式:引脚、输入输出方式、速度
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(OTHER_LED_GPIO_PORT, &GPIO_InitStruct); //调用初始化函数
}
C程序写法二:
void OTHER_GPIO_Config(void)
{
////结构体变量定义
GPIO_InitTypeDef GPIO_InitStruct;
////芯片工作指示灯端口初始化
RCC_APB2PeriphClockCmd(OTHER_LED_GPIO_CLK, ENABLE);
GPIO_InitStruct.GPIO_Pin = OTHER_LED_GPIO_PIN; //配置模式:引脚、输入输出方式、速度
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(OTHER_LED_GPIO_PORT, &GPIO_InitStruct); //调用初始化函数
}
无论上述哪种写法,都没有实现PBout(11) = 0;的输出,也就是没有配置PB11为普通I/O端口,由于是初学STM32,用的是指南者开发板,位带配置是正确无无疑的,所以不太明白怎么配置PB11为普通I/O端口,之前对SMD和JTAG端口的重映射配置使那些被占用的端口成为了普通I/O端口,并且成功输出了高、低电平,但是这个PB11端口通关查看STM32资料,发现他与串口USART3复用,但是重映射并没有实现将其配置为普通I/O端口,然后就一头雾水了。
最好有个例程程序或者实际应用的程序,以便参考,谢谢。希望能有个大神指点一二,谢谢了,急等,请各位大神多给些建议,讨论讨论也行,谢谢啦。。。。 |