STMF407探索者历程代码中的一些疑惑

2019-07-20 19:03发布

问题1 GPIO的配置,从M3迁移到M4对GPIO的配置特别不习惯,而且有些不易理解(在QQ里加了一些相关的群也没人能说清楚)。首先就是这个复用功能的配置:
复用功能配置 复用功能配置

复用功能配置对 I/O 端口进行编程作为复用功能时:●      可将输出缓冲器配置为开漏或推挽●      输出缓冲器由来自外设的信号驱动(发送器使能和数据)●      施密特触发器输入被打开●      根据 GPIOx_PUPDR 寄存器中的值决定是否打开弱上拉电阻和下拉电阻●      输入数据寄存器每隔 1 个 AHB1 时钟周期对 I/O 引脚上的数据进行一次采样●      对输入数据寄存器的读访问可获取 I/O 状态
文档里的说明如上。
再看历程,先拿简单的串口举例,串口的复用配置如下:        //USART1端口配置        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; //GPIOA9与GPIOA10        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //速度50MHz        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉        GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化PA9,PA10
        //串口1对应引脚复用映射        GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1); //GPIOA9复用为USART1        GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1); //GPIOA10复用为USART1
问题是:如果对于串口的TX脚,配置成了复用推完输出,配置上拉下拉还有意义吗?不过这个可以勉强接受,最多就是忽略上拉的作用。(图22的下面部分)如果是RX脚(此时可以有上拉下拉),配置成推挽输出,这个就很不好理解了。推挽输出就有个高低状体,无论是那个状态都会对输入产生影响,希望高人指点一二;
还有定时器的输入捕获实验类似:        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //GPIOA0        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;        //速度100MHz        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; //下拉        GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化PA0
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource0,GPIO_AF_TIM5); //PA0复用位定时器5
配置成推挽输出,无论输出状态是高是低,都会对输入产生影响吧。不知道是我哪里理解有问题,请大神们教育。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。