STM32的IO口复用为串口之后的IO设置问题

2019-07-20 01:05发布

//USART1_TX PA.9 PA.10
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  


我看官方大大写的程序里(usart.c) 关于IO复用为串口1之后,IO口设置如上。
这里有个重要的疑问,PA9是TX做输出设置为推挽复用输出没错,但是PA10是RX,为什么也设置成推完复用输出????
RX设置成输出还能做接收数据的IO口用吗??
我自己在网上查了下,都说PA9设置成推挽输出,PA10设置成浮空输入,如下
    //USART1 Tx(PA.09)     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;     GPIO_Init(GPIOA, &GPIO_InitStructure);    //USART1 Rx(PA.10)     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;     GPIO_Init(GPIOA, &GPIO_InitStructure);
是不是官方大大写的程序有误呢??本人刚开始学,没去试验程序,请大佬们看看,感谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
14条回答
wxz1029wxz
2019-07-20 18:46
我现在更蒙了,刚查了手册,IO口复用为串口的时候,GPIOx_MODER不应该都配置成GPIO_Mode_AF;//复用功能吗?
官方给的是多加了一个GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出,已经是复用功能了,为什么还设置推挽输出。
网上给的GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  //是把PA10设置成了浮空输入 ,不应该设置成AF复用吗。

一周热门 更多>