[STM32F2] 串口问题

[复制链接]
1617|37
 楼主| zyf部长 发表于 2020-4-19 22:39 | 显示全部楼层 |阅读模式
我配置串口1后发送数据,初始化后,发送0~7,结果我串口监视出的数据是:0x7f,0x3f,0x7e,0x1f,0x7d,0x3e,0x7c,00,目前不知道是什么问题。
liuzaiy 发表于 2020-4-19 22:41 | 显示全部楼层
检查下波特率看看
kangzj 发表于 2020-4-19 22:45 | 显示全部楼层
怎么多了几个东东,这个查看一下波特率看看,是不是设置的不正确,读错了。
 楼主| zyf部长 发表于 2020-4-19 22:48 | 显示全部楼层
我配置的波特率是9600,用串口助手也是9600,这个应该不会错吧、
zwll 发表于 2020-4-19 22:50 | 显示全部楼层
你看一下程序里面的“UartHandle.Init.WordLength = UART_WORDLENGTH_8B;”,如果是这样,你的串口助手的数据位应该是7位,停止位是1位,试试看!
 楼主| zyf部长 发表于 2020-4-19 22:53 | 显示全部楼层
刚试了,还是不行,我配置的波特率是9600,我串口助手上改为4800,数据有错误,但是更加接近输出数值,不规律的输出。
chuxh 发表于 2020-4-19 22:56 | 显示全部楼层

不是让你配置波特率的值,是修改你的程序.........
 楼主| zyf部长 发表于 2020-4-19 22:58 | 显示全部楼层

我的程序配置是“UartHandle.Init.WordLength = UART_WORDLENGTH_8B;”我下载的开发板的示例程序,
我用串口助手发送1~8数值,我串口接收到的分别为:0x7f,0x3f,0x7e,0x1f,0x7d,0x3e,0x7c,0x0f;接收到立即发送出去,我串口助手接收到的数据为:0x40,0x60,0x20,0x70,0x41,0x30,0x10,0x78;我想知道为什么会这样?波特率匹配,串口助手数据位改为7也是不对的。
juventus9554 发表于 2020-4-19 23:00 | 显示全部楼层
把你配置串口的程序贴上来看看
 楼主| zyf部长 发表于 2020-4-19 23:04 | 显示全部楼层
#define GPS                                USART3        
#define GPS_CLK                            RCC_APB1Periph_USART3

#define GPS_TX_PIN                         GPIO_Pin_10
#define GPS_TX_GPIO_PORT                   GPIOC
#define GPS_TX_GPIO_CLK                    RCC_AHB1Periph_GPIOC
#define GPS_TX_SOURCE                      GPIO_PinSource10
#define GPS_TX_AF                          GPIO_AF_USART3


#define GPS_RX_PIN                         GPIO_Pin_11
#define GPS_RX_GPIO_PORT                   GPIOC
#define GPS_RX_GPIO_CLK                    RCC_AHB1Periph_GPIOC
#define GPS_RX_SOURCE                      GPIO_PinSource11
#define GPS_RX_AF                          GPIO_AF_USART3

#define GPS_IRQn                    USART3_IRQn
void test_USART3_Configuration(uint32_t bandrate)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  USART_InitTypeDef USART_InitStructure;

  RCC_AHB1PeriphClockCmd(GPS_TX_GPIO_CLK,ENABLE);
  RCC_AHB1PeriphClockCmd(GPS_RX_GPIO_CLK,ENABLE);
        
  RCC_APB1PeriphClockCmd(GPS_CLK,ENABLE);

  GPIO_PinAFConfig(GPS_TX_GPIO_PORT, GPS_TX_SOURCE, GPS_TX_AF);
  GPIO_PinAFConfig(GPS_RX_GPIO_PORT, GPS_RX_SOURCE, GPS_RX_AF);

        //TX ÍÆÍìÊä³ö
  GPIO_InitStructure.GPIO_Pin = GPS_TX_PIN;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_Init(GPS_TX_GPIO_PORT, &GPIO_InitStructure);

        //RXÉÏÀ­ÊäÈë
  GPIO_InitStructure.GPIO_Pin = GPS_RX_PIN;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
//  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
//  GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_Init(GPS_RX_GPIO_PORT, &GPIO_InitStructure);

        NVIC_InitTypeDef NVIC_InitStructure;
//        NVIC_PriorityGroupConfig
  /* Enable the USARTx Interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = GPS_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);


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

  USART_ITConfig(GPS,USART_IT_RXNE,ENABLE);
//        USART_ClearFlag(USART2,USART_FLAG_TC);
//        USART_ITConfig(WIFI,USART_IT_TXE,ENABLE);
  USART_Cmd(GPS, ENABLE);
        
}
kangzj 发表于 2020-4-19 23:07 | 显示全部楼层
把USART_WordLength_8b修改为USART_WordLength_9b试一试
 楼主| zyf部长 发表于 2020-4-19 23:09 | 显示全部楼层
试了,数据还是那样有问题,不知道是哪里出了问题了。就是初始化,然后发送接收
llljh 发表于 2020-4-19 23:11 | 显示全部楼层

你再多检查一下看看:
1、波特率是否都设置对了?
2、串口配置是否正确了?
3、PC端的串口助手是否设置正确,比如波特率,数据位,停止位,校验位,控制流是否都跟程序的设置一样了?
dingy 发表于 2020-4-19 23:13 | 显示全部楼层
别迷信库程序了,靠自己吧。把数据发送成0x55,循环发送,用示波器检查波特率是否正确。
pengf 发表于 2020-4-19 23:17 | 显示全部楼层
对,还有停止位,停止位,是不是有错。
renyaq 发表于 2020-4-19 23:20 | 显示全部楼层
看这代码没问题啊,是不是串口时钟配置的不对了。
wangpe 发表于 2020-4-19 23:22 | 显示全部楼层
一个串口都弄不好,楼主也是太有才了
shimx 发表于 2020-4-19 23:24 | 显示全部楼层
感觉还是波特率的问题
zwll 发表于 2020-4-19 23:26 | 显示全部楼层

应该是配置问题。
波特率都设置对了吗
mcu430 发表于 2020-4-19 23:29 | 显示全部楼层
1、波特率是否都设置对了?
2、串口配置是否正确了?
3、PC端的串口助手是否设置正确
您需要登录后才可以回帖 登录 | 注册

本版积分规则

694

主题

7102

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部