相关疑难解决方法(0)

memcpy缓冲区和数组不工作

我有一个要求,我需要将一个空数组作为参数传递给一个函数.在这个被调用的函数中,我应该将一些数据memcpy到传递的数组中.所以我写了一个与我的要求相同的小例子.以下是其代码:

#include <stdio.h>
#include <stdlib.h>
void printArr(int *a)
{
    int i;
    int *b=(int*)malloc(sizeof(int)*10);
    printf("\n\nEnter 10 lements:\n");
    for(i=0;i<10;i++)
        scanf("%d",&b[i]);

    printf("\nContents of array b:\n");
    for(i=0;i<10;i++)
        printf("%d\t",b[i]);
    printf("\n");
    memcpy(a,b,10);
    printf("\nContents of array a:\n");
    for(i=0;i<10;i++)
        printf("%d\t",a[i]);
    printf("\n");
}
int main()
{
    int a[10];
    printArr(a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我将一个数组从main函数发送到printArr函数.现在在被调用的函数中,数据将被存储到数组中.当打印数组内容时,我得到一些垃圾值.此外,编译会发出警告,如下所示:

$ gcc -o arr array.c
array.c: In function ‘printArr’:
array.c:15:2: warning: incompatible implicit declaration of built-in function ‘memcpy’
Run Code Online (Sandbox Code Playgroud)

上述程序的输出如下所示:

Enter 10 lements:
0 1 2 3 4 5 6 7 8 9

Contents of array b: …
Run Code Online (Sandbox Code Playgroud)

c arrays memcpy

5
推荐指数
2
解决办法
1万
查看次数

在 STM32 传输结束时,循环 DMA 外围到内存的行为如何?

我想问一下,在以下情况下,STM32 中的 DMA SPI rx 将如何表现。我有一个名为 A 的指定(例如)96 字节数组,用于存储从 SPI 接收到的数据。我打开对每个字节进行操作的循环 SPI DMA,配置为 96 字节。是否有可能,当 DMA 将填充我的 96 字节数组时,传输完成中断将关闭,以快速将 96 字节数组复制到另一个 - B,然后循环 DMA 将开始写入 A(并破坏保存在 B 中的数据) ? 我想通过 USB 将数据从 B 快速传输(每次我从 B 中的 A 获取新数据时)到 PC。

我只是在想如何通过 USB 将 STM32 的连续数据流 SPI 传输到 PC,因为我认为每隔一定时间通过 USB 传输的 96 字节数据块比通过 STM32 将实时 SPI 流传输到 USB 更容易?我不知道这甚至可能

embedded usb spi stm32 dma

4
推荐指数
1
解决办法
5799
查看次数

标签 统计

arrays ×1

c ×1

dma ×1

embedded ×1

memcpy ×1

spi ×1

stm32 ×1

usb ×1