打印

求助:串口数据在超级终端的反馈

[复制链接]
2836|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
从PC键盘上往板子的COM0送字符,并将COM0收到字符再传回超级终端显示,但现在超级终端没显示输入的字符,只显示原来printf的字符?麻烦大家看看哪错了,谢谢
板子是万利的199元的那块板子
程序大致如下:  

int main(void)  
{  
  u16 i=0;  

#ifdef DEBUG  
  debug();  
#endif  

  /* System Clocks Configuration */  
  RCC_Configuration();  

  /* GPIO Configuration */  
  GPIO_Configuration();  

  /* NVIC configuration */  
  NVIC_Configuration();  

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC, ENABLE);   
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);  
   
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;  
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  GPIO_Init(GPIOA, &GPIO_InitStructure);  

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;  
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  
  GPIO_Init(GPIOA, &GPIO_InitStructure);  

  USART_Configuration();  

  printf("\r\n PLEASE INPUT CHARACTER FROM KEYBOAD \r\n");  

  while (1)  
  {  
if(USART_GetFlagStatus(USART1,USART_IT_RXNE)==SET)  
{  

   i= USART_ReceiveData(USART1);  
   printf("  %c",i&0xFF);  
}  
  }  
}  

void USART_Configuration(void)  
{  
USART_InitTypeDef USART_InitStructure;  
USART_ClockInitTypeDef USART_ClockInitStructure;  

  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_Even;  
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;  
  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;  
  USART_ClockInitStructure.USART_Clock=USART_Clock_Disable;  
  USART_ClockInitStructure.USART_CPOL=USART_CPOL_Low;                  
  USART_ClockInitStructure.USART_CPHA=USART_CPHA_2Edge;  
  USART_ClockInitStructure.USART_LastBit=USART_LastBit_Disable;  

  USART_Init(USART1,&USART_InitStructure);  

  USART_Cmd(USART1,ENABLE);  

}  
/*将C库中prinf函数重定向到USART*/  
int fputc(int ch,FILE *f)  
{  
  USART_SendData(USART1,(u8)ch);  

  while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET)  
  {  
  }  
  return ch;
沙发
yybj| | 2010-2-6 19:56 | 只看该作者
字符没通过超级终端输进去

使用特权

评论回复
板凳
t200017|  楼主 | 2010-2-6 20:15 | 只看该作者
字符没通过超级终端输进去
yybj 发表于 2010-2-6 19:56


怎么说??能详细点指出具体该怎么修改吗?我刚接触STM32,例子是改李宁MDK的书的。。

使用特权

评论回复
地板
香水城| | 2010-2-6 20:29 | 只看该作者
这是超级终端的设置问题,与STM32无关:

File/Properties

HyperTerminal_Setting.gif (154.59 KB )

HyperTerminal_Setting.gif

使用特权

评论回复
5
t200017|  楼主 | 2010-2-6 21:11 | 只看该作者
谢谢香主,也谢谢2楼的,确实是这个原因,谢谢了!

使用特权

评论回复
6
gxgclg| | 2010-2-7 13:04 | 只看该作者
这个是用来设置什么的

使用特权

评论回复
7
歪 歪| | 2010-2-9 15:52 | 只看该作者
用超级终端是看不到传输细节的,回显只是自欺欺人,是否真的发送了需要抓原始数据证明.
这个最好用串口监视分析仪,100%原始数据捕获.

http://www.armecos.com/freedown/ ... good/comspy-v20.rar

使用特权

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

本版积分规则

3

主题

7

帖子

0

粉丝