NUCLEOF412ZG UART1发送AT指令失败

你好,我在NUCLEOF412ZG平台上,打算用UART1去发AT指令给外部设备通信,用下面的代码发现不能通信成功,请帮忙看看是什么原因呢?谢谢!

printf("start \r\n");
UARTSerial test_serial = UARTSerial(PA_9, PA_10, 9600);
ATCmdParser at = ATCmdParser(&test_serial, "\r\n");
at.send("AT") && at.recv("OK");
at.send("AT+CCID") && at.recv("+CCID: %20[^\n]\nOK\n", &value);
printf("value = %d \r\n", value);

Parents
  • 更新一下,原来的问题已经Fix了,Fix的方法:

    波特率设置成57600,并且进行下面寄存器的设置。

    RCC->CFGR &= ~0x0000E000; // PPRE2, Bit 15-13
    RCC->CFGR |= 0x00008000; // PPRE2: PCLK2 = AHB / 2

    但是发现把波特率设置成9600后,还是不行。

    不知道CFGR寄存器应该怎么设置了。

    另外一个方面来说,为什么通过API设置成57600后,还需要手动设置CFGR寄存器呢?

Reply
  • 更新一下,原来的问题已经Fix了,Fix的方法:

    波特率设置成57600,并且进行下面寄存器的设置。

    RCC->CFGR &= ~0x0000E000; // PPRE2, Bit 15-13
    RCC->CFGR |= 0x00008000; // PPRE2: PCLK2 = AHB / 2

    但是发现把波特率设置成9600后,还是不行。

    不知道CFGR寄存器应该怎么设置了。

    另外一个方面来说,为什么通过API设置成57600后,还需要手动设置CFGR寄存器呢?

Children