I Cn Fly 2023-08-11 18:09 采纳率: 60%
浏览 10
已结题

STM8 485发送数据在串口助手中显示全是00

STM8 485发送数据在串口助手中显示全是00 一次发送4个字节,助手收到一个字节并显示00

请问是哪里出了问题呢,是硬件问题还是代码问题?


//IO PB5 接485的DIO PB6接485的DIN PA2接485模块的DE和RE

GPIO_Init(RS_485_PORT, RS_485_PIN, GPIO_MODE_OUT_PP_LOW_SLOW);

void UART1_485_Init(void)
{
  UART1_Init((u32)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);
  UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);
  UART1_Cmd(ENABLE);
}

void UART1_485_Send_Byte(u8 byte)
{

  
  UART1_SendData8(byte);//发送8位数据
  
  while(UART1_SR_TC==0);//待发送完成
  //while( UART1_GetFlagStatus(UART1_FLAG_TC)!=RESET);

}

void UART1_485_Send_Str(void)
{
  u8 i=0;

    RS_485_DIR_H;
    Delay_ms(2);
    for(i=0;i<4;i++)
    {
      UART1_485_Send_Byte(0x61+i);
    }
    Delay_ms(2);
    RS_485_DIR_L;
  }
}

  • 写回答

3条回答 默认 最新

  • I Cn Fly 2023-08-13 13:19
    关注

    https://blog.csdn.net/m0_65835239/article/details/130265709
    由此文得到答案
    1、时钟选择的对不对,
    2、GPIO口的TX引脚应该设置为“复用推挽输出”
    3、中断初始化函数也不可加
    4、硬件方面RXT、TXD电路接反。一直出现00的时候就要怀疑是不是线接反了。

    后换了TX和RX后收发正常了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月18日
  • 已采纳回答 8月13日
  • 修改了问题 8月12日
  • 修改了问题 8月11日
  • 展开全部

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。