问题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
配置成推挽输出,无论输出状态是高是低,都会对输入产生影响吧。不知道是我哪里理解有问题,请大神们教育。
rx是接收功能,输出电路自动被硬件关闭了。
前面已经说过。
这时,即使有配置为推挽的语句,也不起作用了。
当然,这些语句不应当出现,误导人。
一周热门 更多>