木有东南枝。 2024-08-19 16:18 采纳率: 0%
浏览 8
已结题

hc32串口接收数据

hc32f460串口怎么把接收中断中收到的数据放到数组里?这个样子BUF里没有数据

static void UsartRxIrqCallback(void)
{
    uint8_t DATa;
    if(puart->rlen < BUFMAX)                                   
    { 
      puart->buf[puart->rlen++] = USART_RecData(USART_CH);        //接收数据
//        DATa = USART_RecData(USART_CH);
//    USART_SendData(USART_CH, DATa);  
  }
    puart->idleTimeout = 0;
}

  • 写回答

17条回答 默认 最新

  • 一直免费一直爽 2024-08-19 16:18
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    要将接收到的数据放入数组中,首先需要确保数组已经初始化并分配了足够的空间。在这个例子中,BUFMAX 应该是一个常量,表示缓冲区的最大大小。然后,你需要确保 puart->buf 是一个指向已分配内存的指针。

    以下是一个修改后的示例:

    #include <stdint.h>
    
    #define BUFMAX 1024 // 根据实际需求设置缓冲区大小
    
    typedef struct {
        uint8_t buf[BUFMAX];
        uint32_t rlen;
        uint32_t idleTimeout;
    } UARTBuffer;
    
    UARTBuffer uart;
    
    static void UsartRxIrqCallback(void)
    {
        if (uart.rlen < BUFMAX)
        {
            uart.buf[uart.rlen++] = USART_RecData(USART_CH); // 接收数据
        }
        uart.idleTimeout = 0;
    }
    

    在这个示例中,我创建了一个名为 UARTBuffer 的结构体,用于存储接收到的数据和相关状态。然后,我创建了一个全局变量 uart,用于在中断回调函数中使用。

    请注意,这个示例假设你已经正确地初始化了串口硬件和中断。如果你还没有这样做,请参考你的硬件文档和库文档来完成这些步骤。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月21日
  • 赞助了问题酬金15元 8月19日
  • 创建了问题 8月19日

悬赏问题

  • ¥100 请问我基于逐飞库写的这个有关于mp u6050传感器的函数,为什么输出的值是固定的?
  • ¥15 hadoop中启动hive报错如下怎么解决
  • ¥15 如何优化QWebEngineView 加载url的速度
  • ¥15 关于#hadoop#的问题,请各位专家解答!
  • ¥15 如何批量抓取网站信息
  • ¥15 Spring Boot离线人脸识别
  • ¥15 NRF24L01能发送但是不能接收
  • ¥15 想问一下这种情况怎么解决呢(关键词-file)
  • ¥15 python Flassk 模块部署 服务器时报错
  • ¥15 Opencv(C++)异常