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

关于STM32G030的串口2问题

[复制链接]
kinni 提问时间:2023-12-28 11:42 / 未解决

我在用stm32cubemax生成的串口程序,我用按键实现按一次发一次数据,但是在实际过程中,我发现发出的数据产生了错位,我第二次按下发送的是第一次按下发送的数据,第一次按下发送的数据是无效的数据。image.png

如图是主函数的循环按键发送程序,第二按键判断是自己直接对TDR寄存器写数据,发现效果与第一个官方库一样的效果。

image.png

这个是生成的串口配置函数,希望大佬能帮忙解决一下问题

收藏 评论4 发布时间:2023-12-28 11:42

举报

4个回答
xmshao 回答时间:2023-12-28 14:55:50

image.png

xmshao 回答时间:2023-12-28 14:57:39
不知是不是你程序逻辑上哪里有点问题,我刚才简单测试了下,正常得很。就是基于每次按键动作发送一个字符出去。


while (1)

  {
       

     if(HAL_GPIO_ReadPin (GPIOC,GPIO_PIN_13)==GPIO_PIN_SET )

       {

            

        while(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13)==GPIO_PIN_SET){} //waiting for the elapse of jitter

            

         HAL_UART_Transmit(&hlpuart1,&TXData,1,0xffff);

            

         HAL_UART_Transmit(&hlpuart1,(uint8_t *)"\r\n",2,0xffff);

            

         TXData++;

            

       }

        
       if(TXData=='z')             {TXData='a';}
  }


你再检查下代码你的代码。我的验证给不了你问题的答案,但愿可以给你信心。
kinni 回答时间:2023-12-28 17:09:31

image.png

会不会有硬件上有影响,我又从新配置了一边,第一次按下按钮串口助手显示接收到的数据是,上一个串口程序的串口发送的值,第二次按下才是本次程序发送的自加的值

butterflyspring 回答时间:2023-12-29 10:01:09
可以单步调试一下,看看第一次按键后,送给串口的数据究竟是啥?

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