robomaster开发板a的usart输出为什么总是00

#include "stm32f4xx.h"
#include "stdio.h"
void Serial_Init(void)
{


    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOD, &GPIO_InitStructure);
    
    USART_InitTypeDef USART_InitStructure;
    USART_InitStructure.USART_BaudRate = 9600;
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_InitStructure.USART_Mode = USART_Mode_Tx;
    USART_InitStructure.USART_Parity = USART_Parity_No;
    USART_InitStructure.USART_StopBits = USART_StopBits_1;
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    USART_Init(USART3, &USART_InitStructure);
    
    USART_Cmd(USART3, ENABLE);
}

void Serial_SendByte(uint8_t Byte)
{
    while (USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);
    USART_SendData(USART3, Byte);
}

我用的是robomaster的开发板a型(芯片stm32f427IIH),请问为啥明明按照江科大的代码敲的,但为啥通过ttl转串口向电脑输入数据得到的都是00呢。我的ch340g自己检测的收发又没有问题。实在没搞懂。线应该是没有接错的,开发板的TX和RX与ch340g的TX和RX交叉相接,串口调试助手波特率设置也是9600

发送的数据内容是啥?上位机能收到数据,但是0x00吗?还是没有收到数据?测试的时候将发送函数里的while循环先注释点,试下!

这些代码看不出什么,要看传入的参数是什么

线连接或者驱动方面有问题

我之前遇到是这样处理的

这不又出问题了,本身应该打印到串口调试助手的东西显示不出来,用十六进制显示出来00,在百度上百度了1个小时,他们的错误我都避免了。在经历了不断调试以及自我检查程序之后,发现USART-Tx端口配置出错,STM32不同于STM8,由于其端口的复用功能,在使用STM32的USART功能时,需要将其Tx端口配置为复用推挽输出,而不是推挽输出(注意:是复用)。
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;//错误的程序
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;//正确的程序


robomaster开发板a的usart输出总是00,需要检查这几个方面的问题:
首先检查下看 RXT、TXD电路是否有问题,比如是否接反了。
其次,看下你的波特率设置是否有问题,是不是你的波特率设置远低于9600
是否存在死循环等逻辑上的问题。

检查一下输入数据、接线是否有问题

引用chatgpt内容作答:
根据您提供的代码,您正在使用STM32F427IIH芯片上的USART3模块进行串口通信。根据代码中的配置,您将USART3配置为仅用于发送(USART_Mode_Tx)数据。这意味着您只能通过USART3发送数据,而无法接收数据。

因此,如果您使用了与USART3的TX引脚连接的CH340G USB转串口模块,并尝试从计算机向开发板发送数据,您将无法在开发板上接收到这些数据。这就是为什么您观察到通过串口调试助手接收到的数据始终为00的原因。

如果您希望能够双向通信,您需要将USART3的模式配置为同时支持发送和接收(USART_Mode_Tx | USART_Mode_Rx),并配置USART3的RX引脚进行接收数据。

另外,请确保您的串口调试助手的串口设置与代码中的配置相匹配(波特率、数据位、停止位等)。

最后,确保您的硬件连接正确,包括正确连接了开发板的TX和RX引脚与CH340G模块的TX和RX引脚,并确保地线连接正常。

通过调整代码和硬件连接,您应该能够实现正常的串口通信。

回答部分参考、引用ChatGpt以便为您提供更准确的答案:

根据您提供的代码和描述,您在使用RoboMaster开发板A型(搭载STM32F427IIH芯片)上的USART进行串口通信时遇到了问题。尽管您的连接和设置都看起来是正确的,但通过TTL转串口将数据发送到电脑时,接收到的数据始终为"00"。以下是一些可能的原因和解决方案:

  1. 波特率不匹配:请确保开发板和电脑上的串口调试助手设置的波特率完全一致,都为9600。不匹配的波特率可能导致数据接收错误或乱码。
  2. 引脚映射错误:在连接TX和RX引脚时,请确保将开发板的TX引脚与CH340G的RX引脚相连,开发板的RX引脚与CH340G的TX引脚相连。如果引脚连接错误,数据将无法正确地传输。
  3. 硬件问题:在排除软件设置问题后,考虑可能存在硬件故障。您可以尝试使用其他设备进行串口通信,或者检查开发板和CH340G之间的物理连接是否正确。
  4. 中断或DMA配置问题:如果在代码的其他部分配置了USART相关的中断或DMA功能,请确保这些配置正确。中断或DMA的错误配置可能导致数据传输问题。
  5. USART初始化问题:请确保USART的初始化代码正确无误,包括时钟使能、GPIO配置和USART参数设置。确保使用的是正确的USART外设和引脚。

如果上述解决方案仍未解决问题,建议参考RoboMaster开发板的官方文档、示例代码或社区论坛,寻求其他开发者的帮助和建议。

请注意,由于无法直接查看硬件连接和其他代码部分,以上提供的解决方案仅是基于常见问题的推测。最终解决问题需要根据您的具体情况进行详细调试和排查。