OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4230|回复: 2

STM32F107VC串口2能收PC端数据,但是不能发数据给PC

[复制链接]

4

主题

9

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2013-11-19
在线时间
1 小时
发表于 2013-11-19 18:02:09 | 显示全部楼层 |阅读模式
新手研究STM32,想要实现串口的数据收发。现在串口2已经重映射了,能收到调试助手发过来的数据,但是想将收到的数据发回去,就不行了,调试助手没显示。

找了挺多资料的,还是搞不明白,各位大哥帮忙看下什么原因吧!串口的配置函数:  void USART_Configuration(void)
{ 
  
  GPIO_InitTypeDef GPIO_InitStructure;
  USART_InitTypeDef USART_InitStructure; 

  // 串口2配置  
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
  GPIO_PinRemapConfig(GPIO_Remap_USART2,ENABLE);

  /*
  *  USART1_TX -> PA9 , USART1_RX ->	PA10
  */				
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;	         
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
  GPIO_Init(GPIOD, &GPIO_InitStructure);		   

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;	        
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
  GPIO_Init(GPIOD, &GPIO_InitStructure);

  USART_InitStructure.USART_BaudRate = 115200;
  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(USART2, &USART_InitStructure); 

  USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
  //USART_ITConfig(USART2, USART_IT_TXE, ENABLE);
  USART_Cmd(USART2, ENABLE); 
  USART_ClearITPendingBit(USART2, USART_IT_TC);
} 发送部分的函数:  
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)[/mw_shl_code]
{[/mw_shl_code]
  /* Check the parameters */[/mw_shl_code]
  assert_param(IS_USART_ALL_PERIPH(USARTx));[/mw_shl_code]
  assert_param(IS_USART_DATA(Data)); [/mw_shl_code]
  /* Transmit Data */[/mw_shl_code]
  USARTx->DR = (Data & (uint16_t)0x01FF);[/mw_shl_code]
}[/mw_shl_code][/mw_shl_code]
void Send_Array(u8 * Array, u16 Len) {
  u16 i = 0;
  if(Len)    
  {
    for(; i<Len; i++)
    {
       USART_SendData(USART2, Array);    
	  while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);
    }
  }    
}[/mw_shl_code] 
 [/mw_shl_code]


[/mw_shl_code]
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

109

主题

1606

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2222
金钱
2222
注册时间
2011-12-15
在线时间
37 小时
发表于 2013-11-19 22:11:50 | 显示全部楼层
能收不能发,你可以看下发送寄存器数据是否有,以及发送寄存器是否使能,查下硬件,看看是否正常
专业制作STM32 物联网通信模块板,模块交流群:369840039。
回复 支持 反对

使用道具 举报

4

主题

9

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2013-11-19
在线时间
1 小时
 楼主| 发表于 2013-11-20 11:58:45 | 显示全部楼层
回复【2楼】ST-FAE-SALE:
---------------------------------
问题已经解决了,是串口2的端口错了,应该用5、6,可是用2也可以接收,这就纳闷了。不过总之还要谢谢你的回答!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-8 22:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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