打印

关于串口初始化GPIO模式设置

[复制链接]
551|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
冷冻链|  楼主 | 2018-7-9 20:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在调试esp8266模块,把原来在stm32f103上使用的程序移植到兼容stm32f429。在串口初始化程序中发现了一些不同,有以下疑惑:在stm32f103模板程序中关于串口GPIO模式设置的一段历程如下,
        //USART1_TX   GPIOA.9
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //推挽输出模式
  GPIO_Init(GPIOA, &GPIO_InitStructure);

  //USART1_RX          GPIOA.10
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;// 浮点输入模式
  GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化PA10


而在stm32f429的串口初始化中,对于GPIO模式设置的历程如下,
                GPIO_Initure.Pin=GPIO_PIN_9;                        //PA9
                GPIO_Initure.Mode=GPIO_MODE_AF_PP;                //推挽输出模式
                GPIO_Initure.Pull=GPIO_PULLUP;                        //上拉
                GPIO_Initure.Speed=GPIO_SPEED_FAST;                //高速
                GPIO_Initure.Alternate=GPIO_AF7_USART1;        //复用为串口1
                HAL_GPIO_Init(GPIOA,&GPIO_Initure);                   //初始化GPIOA9

                GPIO_Initure.Pin=GPIO_PIN_10;                        //PA10
                HAL_GPIO_Init(GPIOA,&GPIO_Initure);                   //初始化GPIOA10

这里的异同点是在stm32f103例程中PA10设置为浮点输入模式,而在stm32f429中设置为推挽输出模式。
疑惑在于:PA10 作为USART1_RX设置为推挽输出模式为什么也可以?相反设置为浮点输入模式反而不能正常工作?GPIO输出模式怎么可以触发串口接收中断?


希望遇到过同样问题的前辈能够给予解惑,也希望没有解决这类疑惑的人可以和我一起讨论。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

397

主题

397

帖子

0

粉丝