打印

STM32F103VC串口问题

[复制链接]
3245|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gdgn_526345|  楼主 | 2011-5-24 11:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位兄弟,在使用STM32串口的时候有没有发现过这样的问题?

发送字节 PC收到的最高位 全部被置1了,如发送0x01  PC串口收到的是0x81   
                                       发送0x55  PC串口收到的是0xd5
以下是我的串口1初始化设置:

void InitCom1(void)
{
      GPIO_InitTypeDef GPIO_InitStructure;
      USART_InitTypeDef USART_InitStructure;   
      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);

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

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

     USART_Cmd(USART1, ENABLE);  
      
}      
}
沙发
yinyangdianzi| | 2011-5-24 12:00 | 只看该作者
路过

使用特权

评论回复
板凳
gaobq| | 2011-5-24 12:34 | 只看该作者
接收软件设置有没有问题

使用特权

评论回复
地板
gdgn_526345|  楼主 | 2011-5-24 14:32 | 只看该作者
接收那边设置没有问题 就普通的串口调试软件。

使用特权

评论回复
5
星辰yyt| | 2011-5-24 14:32 | 只看该作者
没有遇到过这种情况。不知道同步配置初始化对它有没有影响啊
USART_ClockInitTypeDefStructure.USART_Clock = USART_Clock_Disable;
USART_ClockInitTypeDefStructure.USART_CPOL = USART_CPOL_Low;
USART_ClockInitTypeDefStructure.USART_CPHA = USART_CPHA_2Edge;
USART_ClockInitTypeDefStructure.USART_LastBit = USART_LastBit_Disable;
除了初始化,其他地方的设置也有可能影响结果的,最好能详细说明哦。:)

使用特权

评论回复
6
gdgn_526345|  楼主 | 2011-5-25 14:06 | 只看该作者
后来发现 对PE口的配置会导致串口1 发送的数据出错 发送字节的最高位会被强制为1,如果我把下面的代码注释掉,串口1发送的数据正常,但是只要以下的代码一启用 串口1发送的数据 就不对。

但是通过查看资料PE口 与串口1没有任何关系的!而且 我在以下初始化PE口之后 再没有调用 需要用到PE口的程序,也就是说我只是对PE口配置了一下 ,后面的操作程序全部注释掉。 这样也会对串口1(PA9 PA10)有影响,真让人想不通。我用的芯片是STM32F103VC,编译环境IAR5.30
#define LCD_DATA7          (1<<7)
#define LCD_DATA6          (1<<8)
#define LCD_DATA5          (1<<9)
#define LCD_DATA4          (1<<10)
#define LCD_DATA3          (1<<11)
#define LCD_DATA2          (1<<12)
#define LCD_DATA1          (1<<13)
#define LCD_DATA0          (1<<14)
void InitLCDGPIO(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
     
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

   
    //GPIO_E FOR LCD
    GPIO_InitStructure.GPIO_Pin = LCD_DATA7 | LCD_DATA6| LCD_DATA5|
                                  LCD_DATA4 | LCD_DATA3| LCD_DATA2|
                                  LCD_DATA1 | LCD_DATA0;

  GPIO_Init(GPIOE, &GPIO_InitStructure);   
}

使用特权

评论回复
7
gdgn_526345|  楼主 | 2011-5-25 14:11 | 只看该作者
而且,在通过JLINK仿真,调用上述PE口初始化程序的时候,查看过串口1控制寄存器,配置 均没有受到影响。
串口1控制寄存器,配置的值 没有因为调用PE口的初始化程序而改变的。

使用特权

评论回复
8
星辰yyt| | 2011-6-17 10:11 | 只看该作者
真是奇怪的问题,不过任何现象都是有原因的哦。
楼主问题解决了没啊?分享一下哈:)

使用特权

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

本版积分规则

6

主题

19

帖子

0

粉丝