如何使用嵌入式C将原始JPEG图像存储到STM32F2系列微控制器的内部闪光灯中



i有一个.jpeg文件,我需要将其存储到STM32F2系列控制器的内部内存中。这是否可以在没有任何转换/编码JPEG文件的情况下进行?如果是这样,任何人都可以提供一些示例代码以使我的理解。

通常,一种方法是定义一个常数数组,该数组使用JPEG(或任何二进制)文件的数据初始化。然后,该数组定义与您的代码链接在一起,并成为已编程为Flash的固件的一部分。如果需要,您可以使用链接器指令在Flash中的特定地址找到数组(即文件数据)。

您可以以多种不同的方式完成这个总体想法。以下只是此技术的一个特定示例实现。

首先,创建一个桌面程序,该程序将jpeg文件读取为字节流,然后将这些字节写入新的逗号分隔的文本文件中。这是示例文件的前两行,我将调用my_jpeg.h

0xFF, 0xD8, 0xFF, 0xE0, 0x00, 0x10, 0x4A, 0x46, 0x49, 0x46, 0x00, 0x01, 0x01, 0x01, 0x00, 0x48,
0x00, 0x48, 0x00, 0x00, 0xFF, 0xE1, 0x03, 0xA0, 0x00, 0x01, 0x69, 0x48, 0x00, 0x4D, 0x4D, 0x46,

然后在您的C代码中定义一个数组,然后用您创建的文件中的数据初始化它。

const uint8_t my_jpeg[] = {
    #include "my_jpeg.h"
};

现在,所有jpeg文件数据都将包含在您的固件中,并在编程固件时被编程为闪烁。

您可以使用Makefile食谱或IDE的前构建脚本脚本功能自动运行JPEG转换程序,并在构建过程中生产my_jpeg.h

最新更新