硬汉嵌入式论坛

 找回密码
 立即注册
查看: 6146|回复: 8
收起左侧

[有问必答] stm32f407IGT的USART6的TX和RX端口到底是(PG14和PC7)还是(PC6和PC7)?

[复制链接]

13

主题

56

回帖

95

积分

初级会员

积分
95
发表于 2016-10-13 15:06:29 | 显示全部楼层 |阅读模式
官方提供的软件中看到stm32f407IGTUSART6的发送和接收口为PC7和PC6,参见下图
stm32f407igt.png

   但是我在你们的例程中看到的配置为PG14和PC6,参见如下:

无标题.png

  (1)、可是我配置为PC6和PC7,示波器在PC6发送引脚上始终观察不到数据。
  (2)、当我配置为PG14和PC7,示波器在PG14发送引脚上可以观察到数据,但是我把PG14和PC7短接,
然后主程序不停的每隔100ms发送5个字节,但是却始终不进入【接收中断】
(3)、请问版主,问题到底出在哪里?
               默认情况下,到底是(PC6,PC7)还是(PG14,PC7)
我是新手,请多多关照。
回复

使用道具 举报

34

主题

83

回帖

185

积分

初级会员

积分
185
发表于 2016-10-13 19:19:59 | 显示全部楼层
说明其他IO也有映射关系,就如PG14一样,STM32F4的映射管脚比较多相当方便,默认是普通IO必须要映射
QQ截图20161013191908.jpg
回复

使用道具 举报

13

主题

56

回帖

95

积分

初级会员

积分
95
 楼主| 发表于 2016-10-14 09:52:51 | 显示全部楼层
谢谢楼上的回答,经过你的提醒,USART6我映射到PG14,PG9后通信通啦。
     我把USART6映射到PG14,PG9后,发送和接收都通了,示波器可以观察到数据,然后把PG14和PG9短接,可以进入接收中断,而且接收的数据就是发送的数据。

      (1)、我确信PC7,PC6端口没有被占用
       (2)、把PC7和PC6配置成普通输入端口,可以检测到高电平和低电平,说明端口是好的。


但是我不明白,为什么我把USART6映射到PC6,PC7就不行呢?
      

我是新手,请多多关照。
回复

使用道具 举报

34

主题

83

回帖

185

积分

初级会员

积分
185
发表于 2016-10-14 17:47:28 | 显示全部楼层

回 ba_wang_mao 的帖子

ba_wang_mao:谢谢楼上的回答,经过你的提醒,USART6我映射到PG14,PG9后通信通啦。
     我把USART6映射到PG14,PG9后,发送和接收都通了,示波器可以观察到数据,然后把PG14和PG9短接,可以进入接收中断,而且接收的数据就是发送的数据。

      .. (2016-10-14 09:52) 
只要在设计版图时端口没有被其他硬件占用或冲突一般都不会有问题,既然你说不能用那么有几点可能。

1:GPIOC口有无正确配置为USART6?
2:GPIOC端口时钟是否使能?
回复

使用道具 举报

13

主题

56

回帖

95

积分

初级会员

积分
95
 楼主| 发表于 2016-10-15 08:43:45 | 显示全部楼层

回 shuaigew88 的帖子

shuaigew88:

只要在设计版图时端口没有被其他硬件占用或冲突一般都不会有问题,既然你说不能用那么有几点可能。

1:GPIOC口有无正确配置为USART6?
2:GPIOC端口时钟是否使能?

  1:GPIOC口有正确配置为USART6
  2:GPIOC端口时钟使能了。

       另外,为了防止干扰,我把其余程序全部删除,整个工程只有USART6的程序代码,结果只要USART6映射到PC6,PC7,通信就不通,但是映射到PG14,PG9通信就OK。
        为什么USART6映射到PC6,PC7,通信就不通呢?而映射到PG14,PG9通信就OK呢?

   USART6映射到PC6,PC7初始化程序如下:
void USART6_Configuration(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    USART_InitTypeDef USART_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART6, ENABLE);        //for USART1 and USART6
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);  //  GPIOC时钟使能

    GPIO_PinAFConfig(GPIOC, GPIO_PinSource6, GPIO_AF_USART6); //  GPIOC6
    GPIO_PinAFConfig(GPIOC, GPIO_PinSource7, GPIO_AF_USART6);   //  GPIOC7
    // Configure USART6 Tx (PC.06) as alternate function push-pull
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;//  GPIOC6
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOC, &GPIO_InitStructure);    //  GPIOC6

    // Configure USART6 Rx (PC.07) as input floating
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; //  GPIOC7
    GPIO_Init(GPIOC, &GPIO_InitStructure);    //  GPIOC7

    USART_InitStructure.USART_BaudRate = 57600;
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    USART_InitStructure.USART_StopBits = USART_StopBits_1;
    USART_InitStructure.USART_Parity = USART_Parity_No ;
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
    USART_Init(USART6, &USART_InitStructure);
    USART_Cmd(USART6, ENABLE);

    //CPU的小缺陷:串口配置好,如果直接Send,则第1个字节发送不出去如下语句解决第1个字节无法正确发送出去的问题
    USART_ClearFlag(USART6, USART_FLAG_TC);                     //清发送完成标志,Transmission Complete flag  
    USART_ITConfig(USART6, USART_IT_RXNE, ENABLE);
}
我是新手,请多多关照。
回复

使用道具 举报

34

主题

83

回帖

185

积分

初级会员

积分
185
发表于 2016-10-15 13:01:21 | 显示全部楼层
我看了这款芯片的USART6的确支持PC6.PC7映射,你的配置也没看出什么问题,是不是IO复用产生冲突了?
回复

使用道具 举报

13

主题

56

回帖

95

积分

初级会员

积分
95
 楼主| 发表于 2016-10-17 12:21:46 | 显示全部楼层

回 shuaigew88 的帖子

shuaigew88:
我看了这款芯片的USART6的确支持PC6.PC7映射,你的配置也没看出什么问题,是不是IO复用产生冲突了?

    我为了排除干扰,把其它无关的程序全部删除啦,目前程序只留下了USART6初始化程序和USART6接收和发送中断服务程序,因此不存在IO复用产生冲突的问题。
我是新手,请多多关照。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2024-10-23 00:42:28 | 显示全部楼层
你好,请问问题解决了嘛,我在调试401板子用USART6也遇到相同的问题
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-10-24 09:38:32 | 显示全部楼层
hailuoyin 发表于 2024-10-23 00:42
你好,请问问题解决了嘛,我在调试401板子用USART6也遇到相同的问题

分享你的配置代码看下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 06:35 , Processed in 0.045655 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表