请问在stm32中串口接收到的字符串如何把它一个一个的存到数组里面去?

比如说串口接收到"56"如何才能把5存到[0]把6存到[1]当中去呢?

首先存入缓冲区 char[],然后按照\0切割成字符串

char Rx[] = "56";
char buf[];
buf[0] = Rx[0];
buf[1] = Rx[1];

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇文章:STM32 LL库串口丢包问题与解决 也许能够解决你的问题,你可以看下
  • 除此之外, 这篇博客: STM32(六)库函数串口发送与接收实例(中断)中的 一、串口配置步骤 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    函数和定义主要分布在 stm32f10x_usart.hstm32f10x_usart.c 文件中。

    1.串口时钟使能 串口是挂载在 APB2 下面的外设,所以使能函数为:

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1);

    2.串口复位 当外设出现异常的时候可以通过复位设置,实现该外设的复位,然后重新配置
    这个外设达到让其重新工作的目的。
    复位的是在函数 USART_DeInit()中完成:

    void USART_DeInit(USART_TypeDef* USARTx);//串口复位

    复位串口 1,方法为:

    USART_DeInit(USART1); //复位串口 1

    3.串口参数初始化 串口初始化是通过 USART_Init()函数实现的,

    void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);

    第二个入口参数是USART_InitTypeDef 类型的结构体指针,这个结构体指针的成员变量用
    来设置串口的一些参数。
    一般的实现格式为:

    USART_InitStructure.USART_BaudRate = bound; //波特率;
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为 8 位数据格式
    USART_InitStructure.USART_StopBits = USART_StopBits_1; //一个停止位
    USART_InitStructure.USART_Parity = USART_Parity_No; //无奇偶校验位
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; //无硬件数据流控制
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收发模式
    USART_Init(USART1, &USART_InitStructure); //初始化串口

    4.数据发送与接收 STM32 的发送与接收是通过数据寄存器 USART_DR 来实现的,这是
    一个双寄存器,包含了 TDR 和 RDR。当向该寄存器写数据的时候,串口就会自动发送,当收
    到收据的时候,也是存在该寄存器内。
    STM32 库函数操作 USART_DR 寄存器发送数据的函数是:

    void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);

    STM32 库函数操作 USART_DR 寄存器读取串口接收到的数据的函数是:

    uint16_t USART_ReceiveData(USART_TypeDef* USARTx);

    6.串口使能 串口使能是通过函数 USART_Cmd()来实现的

    USART_Cmd(USART1, ENABLE); //使能串口

    7.开启串口响应中断 使能串口中断的函数是:

    void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState)

    开启其中之一的中断的方法是:

    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启中断,接收到数据中断

    发送数据结束的时候要产生中断:

    USART_ITConfig(USART1,USART_IT_TC,ENABLE);

    8.获取相应中断状态 在中断处理函数中,要判断该中断是哪种中断,使用的函数是:

    ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT)

    判断是否是串口发送完成中断:

    USART_GetITStatus(USART1, USART_IT_TC)

    返回值是 SET,说明是串口发送完成中断发生。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^