发 帖  
原厂入驻New
[问答]

STM32f103使用HAL修改波特率失败

423 单片机
分享
  1.       if(RX_BUFF[0] ==0x01 && RX_BUFF[1] == 0x02 && RX_BUFF[2] == 0x03)    //设置波特率
  2.     {
  3.         
  4.         __HAL_UART_DISABLE_IT(&huart1,UART_IT_IDLE);      //关闭空闲中断
  5.        HAL_UART_DMAStop(&huart1);                         //关闭DMA
  6.        SET_Data[0]  = RX_BUFF[3];
  7.        HAL_UART_MspInit(huart);                           
  8.        USART1_UART_Init(SET_Data[0]);                    //串口初始化

  9. //        BUF();
  10.        __HAL_UART_ENABLE_IT(&huart1,UART_IT_IDLE);      //打开空闲中断
  11.         HAL_UART_Receive_DMA(&huart1, RX_BUFF, 5);      //打开接受中断
  12.        STMFLASH_Write(BANK1_WRITE_SETtiNG_ADDR,(uint16_t *)&SET_Data ,6);
  13.     }
复制代码
使用的HAL库开发。DMA串口接收 。现在通过指令修改波特率。修改完发出的数据被减少了、原来是45个字节,现在只有12个字节、标准库中直接初始化串口就可以实现的操作的。现在在hal中找不到问题
0
2020-11-5 15:21:14   评论 分享淘帖 邀请回答
2个回答
个人习惯if(RX_BUFF[0] ==0x01 && RX_BUFF[1] == 0x02 && RX_BUFF[2] == 0x03)这类的都多加几个括号
if(  (RX_BUFF[0] ==0x01) &&   (RX_BUFF[1] == 0x02)  && (RX_BUFF[2] == 0x03))
不知道有没有关系
2020-11-5 20:07:18 1 评论

举报

1 条评论
  • 2020-11-6 16:45

    嗯,这是一个要注意的细节,但是现在不是这个问题,判断是没有问题的。现在主要的问题是判断完成之后,执行的也是没有问题的。但是就是不太清楚串口为什么少发了数据

撰写答案

你正在撰写答案

如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
我要提问
关闭

站长推荐 上一条 /9 下一条

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