嵌入式平台 STM32 libqrencode 移植 二维码生成


实验环境

硬件:STM32板 (STM32F207 )

     LCD12864 模块 (ST7565)

USB转串口模块 TTL

     ST-Link V2 调试

软件:MDK Keil v5.12

     PortHelper.exe 串口调试助手

实验目的

     在嵌入式平台上生成QR Code,LCD显示

实验步骤:


  1. 建立STM32工程,包括LCD显示或串口打印,使用MicroLIB

嵌入式平台 STM32 libqrencode 移植 二维码生成_第1张图片

  1. 在https://github.com/fukuchi/libqrencode 下载源码 添加主文件夹下的 .h .c文件到工程,qrenc.c 不要添加
  2. 对所有.C文件做如下修改

    #if HAVE_CONFIG_H

    # include "config.h"

    #endif

    改为

    # include "config.h"

    添加 config.h文件,添加如下信息

/* Define to 1 if you have the `strdup' function. */

#define HAVE_STRDUP 0

 

/* Major version number */

#define MAJOR_VERSION 3

/* Micro version number */

#define MICRO_VERSION 0

/* Minor version number */

#define MINOR_VERSION 9

 

/* Define to the version of this package. */

#define PACKAGE_VERSION "3.9.0"

 

/* Version number of package */

//#define VERSION "3.9.0"

#define LIBQRENCODE_VERSION "3.9.0"

 

/* Define to empty if `const' does not conform to ANSI C. */

/* #undef const */

 

/* Define to `__inline__' or `__inline' if that's what the C compiler

calls it, or to nothing if 'inline' is not supported under any name. */

#ifndef __cplusplus

/* #undef inline */

#endif

 

/* Define to 'static' if no test programs will be compiled. */

#define __STATIC

#define WITH_TESTS 1

  1. 在Main.c中添加测试代码

#include "qrencode.h"

#include "qrspec.h"

#include "mqrspec.h"

#include "bitstream.h"

#include "qrinput.h"

#include "rsecc.h"

#include "split.h"

#include "mask.h"

#include "mmask.h"

 

QRcode*qrcode; //最后结果

 

qrcode= QRcode_encodeString("sissi",2, QR_ECLEVEL_L, QR_MODE_8,0);

printf("====version=%d========\r\n",qrcode->version);

for(y=0;y<qrcode->width;y++)

{

for(x=0;x<qrcode->width;x++)

{

if(qrcode->data[y*qrcode->width+x]&0x01)

{

printf("#");

// LCM_SetPixel(x,y,1);

}

else

{

printf(" ");

// LCM_SetPixel(x,y,0);

}

}

printf("\r\n");

}

printf("\r\n");

 

//DISPLAY_RENCODE_TO_TFT(0,0,2);

QRcode_free(qrcode);

 

  1. 在startup_stm32f2xx.s中修改堆栈,太小了跑步起来 qrcode->version都不对。

    改不了先去掉文件的只读权限

     

 

嵌入式平台 STM32 libqrencode 移植 二维码生成_第2张图片

 

  1. 串口打印结果基本可以基本看到二维码图形

嵌入式平台 STM32 libqrencode 移植 二维码生成_第3张图片

  1. QRcode结构体介绍

     

嵌入式平台 STM32 libqrencode 移植 二维码生成_第4张图片

参考:

http://fukuchi.org/works/qrencode/

https://github.com/fukuchi/libqrencode

工程:

http://download.csdn.net/detail/nolnew/9376151


你可能感兴趣的:(ARM)