代码下载地址:
https://download.csdn.net/download/qq_31806069/12797688
1.添加的代码
2.修改的代码
如果没有使用堆栈的话,可以申请一个2167的BUF给使用。
uint16_t mm_malloc_count=0;
void mm_init(void)
{
mm_malloc_count=0;
}
#if 0
void *mm_malloc(int size)//all size = 2167
{
void*p_data;
p_data = &OLED_GRAM_T[mm_malloc_count];
mm_malloc_count += size;
LOG_DEBUG_PRINTF("mm_malloc:%d-%d\r\n",size,mm_malloc_count);
if (128==size)
{
// LOG_DEBUG_PRINTF("mm_malloc:%d-%d\r\n",size,mm_malloc_count);
}
return p_data;
}
void * mm_realloc(void*prt,int size)
{
void*p_data;
p_data = &OLED_GRAM_T[mm_malloc_count];
mm_malloc_count += size;
LOG_DEBUG_PRINTF("mm_realloc:%d-%d\r\n",size,mm_malloc_count);
return p_data;
}
void mm_free(void *ptr)
{
}
#else
void *mm_malloc(int size)//all size = 2167
{
void*p_data;
p_data = malloc(size);
return p_data;
}
void * mm_realloc(void*prt,int size)
{
void*p_data;
p_data = realloc(prt,size);
return p_data;
}
void mm_free(void *ptr)
{
free(ptr);
}
#endif
修改了这部分的代码
3.使用例子
#include "qrencode.h"
#include "qr_config.h"
#include "qrencode.h"
static void draw_QRcode(QRcode *qrcode, int ox, int oy, int margin, int size)
{
int x, y, width;
unsigned char *p;
uint8_t startx=0;
uint8_t starty=0;
width = qrcode->width;
p = qrcode->data;
for (y = 0; y<width; y++)
{
for (x = 0; x<width; x++)
{
#define QR_BLOW_UP (8)
if (*p&0x01)
{
if (0)
{
lcd_draw_point_to_ram(x,y,WHITE);
} else
{
lcd_draw_point_to_ram(startx+x*QR_BLOW_UP,starty+y*QR_BLOW_UP,WHITE);
lcd_draw_point_to_ram(startx+x*QR_BLOW_UP+1,starty+y*QR_BLOW_UP,WHITE);
lcd_draw_point_to_ram(startx+x*QR_BLOW_UP+2,starty+y*QR_BLOW_UP,WHITE);
lcd_draw_point_to_ram(startx+x*QR_BLOW_UP+3,starty+y*QR_BLOW_UP,WHITE);
lcd_draw_point_to_ram(startx+x*QR_BLOW_UP+4,starty+y*QR_BLOW_UP,WHITE);
lcd_draw_point_to_ram(startx+x*QR_BLOW_UP+5,starty+y*QR_BLOW_UP,WHITE);
lcd_draw_point_to_ram(startx+x*QR_BLOW_UP+6,starty+y*QR_BLOW_UP,WHITE);
lcd_draw_point_to_ram(startx+x*QR_BLOW_UP+7,starty+y*QR_BLOW_UP,WHITE);
lcd_draw_point_to_ram(startx+x*QR_BLOW_UP,starty+y*QR_BLOW_UP,WHITE);
lcd_draw_point_to_ram(startx+x*QR_BLOW_UP,starty+y*QR_BLOW_UP+1,WHITE);
lcd_draw_point_to_ram(startx+x*QR_BLOW_UP,starty+y*QR_BLOW_UP+2,WHITE);
lcd_draw_point_to_ram(startx+x*QR_BLOW_UP,starty+y*QR_BLOW_UP+3,WHITE);
lcd_draw_point_to_ram(startx+x*QR_BLOW_UP,starty+y*QR_BLOW_UP+4,WHITE);
lcd_draw_point_to_ram(startx+x*QR_BLOW_UP,starty+y*QR_BLOW_UP+5,WHITE);
lcd_draw_point_to_ram(startx+x*QR_BLOW_UP,starty+y*QR_BLOW_UP+6,WHITE);
lcd_draw_point_to_ram(startx+x*QR_BLOW_UP,starty+y*QR_BLOW_UP+7,WHITE);
}
}
p++;
}
}
}
extern int Split_splitStringToQRinput(const char *string, QRinput *input,
QRencodeMode hint, int casesensitive);
extern QRcode *QRcode_encodeMask(QRinput *input, int mask);
extern void mm_init_qr_buf(void);
void ui_about_qr(void)
{
QRcode *qrcode;
uint8_t buf[10];
memset(FONT_512GRAM,0,sizeof(FONT_512GRAM));
get_mac(buf);
sprintf((char*)FONT_512GRAM,"%02X%02X%02X%02X%02X%02X",buf[0],buf[1],buf[2],buf[3],buf[4],buf[5]);
mm_init();
mm_init_qr_buf();//QRcode_encodeStringReal
qrcode = QRcode_encodeStringReal((const char*)FONT_512GRAM, 0, QR_ECLEVEL_H, 0, QR_MODE_8, 1);
if (qrcode)
{
draw_QRcode(qrcode, 0, 0, 5, 6);
} else
{
LOG_DEBUG_PRINTF("QRcode_encodeString error");
}
}