你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

cubemx 串口配置 接收错误 请高手大侠指点迷津

[复制链接]
冰点柔情 提问时间:2017-8-16 10:53 /
我用Cubemx 配置STM32F0xx芯片的串口接收接收及发送,发送功能正常,但接收功能不正常,具体如下:
我用电脑串口助手发送 0x00, 结果接收到的是0x80
我用电脑串口助手发送 0x01, 结果接收到的是0xE0

但我查过代码,并未发现错误,我也直接读过RDR寄存器的值,其实和接收到的值相同。

请各位高手大侠指点迷津
收藏 评论10 发布时间:2017-8-16 10:53

举报

10个回答
mark0668 回答时间:2017-8-16 11:22:25
应该是波特率不对或者时钟不准

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

冰点柔情 回答时间:2017-8-16 11:34:38
mark0668 发表于 2017-8-16 11:22
应该是波特率不对或者时钟不准

我设置的波特率是9600 ,8N2

发送是对的,所以我认为波特率是对的,不知道我这样理解对不对?
gujiamao 回答时间:2017-8-16 11:35:54
冰点柔情 发表于 2017-8-16 11:34
我设置的波特率是9600 ,8N2

发送是对的,所以我认为波特率是对的,不知道我这样理解对不对? ...

2个停止位?
leiyijing 回答时间:2017-8-16 11:36:58
2个停止位?
冰点柔情 回答时间:2017-8-16 11:39:00

是的,有问题吗
冰点柔情 回答时间:2017-8-16 11:39:22

是的,这样会有问题吗?
冰点柔情 回答时间:2017-8-16 11:42:09

串口初始化代码如下:
static void MX_USART2_UART_Init(void)
{

  huart2.Instance = USART2;
  huart2.Init.BaudRate = 9600;
  huart2.Init.WordLength = UART_WORDLENGTH_8B;
  huart2.Init.StopBits = UART_STOPBITS_2;
  huart2.Init.Parity = UART_PARITY_NONE;
  huart2.Init.Mode = UART_MODE_TX_RX;
  huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart2.Init.OverSampling = UART_OVERSAMPLING_16;
  huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
  huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_RXOVERRUNDISABLE_INIT|UART_ADVFEATURE_DMADISABLEONERROR_INIT;
  huart2.AdvancedInit.OverrunDisable = UART_ADVFEATURE_OVERRUN_DISABLE;
  huart2.AdvancedInit.DMADisableonRxError = UART_ADVFEATURE_DMA_DISABLEONRXERROR;
  if (HAL_UART_Init(&huart2) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }
       
          //USART_ITConfig(USART2,USART_IT_TXE,ENABLE);               
    //USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);               
                //__HAL_UART_ENABLE_IT(&huart2, UART_IT_RXNE);
                //__HAL_UART_ENABLE(&huart2);
       
    //_Cmd(USART2,ENABLE);                                 
    //USART_ClearFlag(USART2,USART_FLAG_TC);                     
       
       

}
gujiamao 回答时间:2017-8-16 11:52:30
冰点柔情 发表于 2017-8-16 11:42
串口初始化代码如下:
static void MX_USART2_UART_Init(void)
{

可以改成一个停止位 试试

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

冰点柔情 回答时间:2017-8-16 13:36:26
gujiamao 发表于 2017-8-16 11:52
可以改成一个停止位 试试

我试过了,结果还是一样
gujiamao 回答时间:2017-8-16 13:41:06
冰点柔情 发表于 2017-8-16 13:36
我试过了,结果还是一样

你检查下 TTL和232电平有没有搞错了

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版