关于MCU生成二维码的方法实现
网上有很多开源的二维码生成算法
我这里是直接在github上搜别人发上来的例程,这个F407
如上图他的源码
这两个头文件里都有用到uint8_t这个变量,如果编译器认不出来的话,可以添加适当的头文件解决,如上面这个app_main_api.h(仅仅在我目前这里可以用这个)
二维码的生成格式及要求,可以去网上自己看详细资料,上图的纠错等级,编码方式,版本
https://www.cnblogs.com/tuyile006/p/10916075.html
这里根据不同的版本,会有不同的最大容量值。
最后就是调用这个函数,result自己创建的数组存放生成的二维码数组。1代表涂黑,0代表涂白,该函数的返回值是生成二维码的宽度
void QR(){
int side;
uint8_t bitdata[QR_MAX_BITDATA];
side=qr_encode(QR_LEVEL_L,0,"一二三四五六七 一二三四五六七八^^&&@@345543sdfsdgfh七八九一二三四五六七八九",0,bitdata);
Drow_darcode(10,10,side,bitdata);
}
参数中:
第一个参数:纠错等级QR_LEVEL_L
第二个参数:版本号,填0的话自动选择
第三个参数:要转换的字符串
第四个参数:字符串的长度,如果是以'\0'结尾,填0
第五个参数:存放二维码数据的数组
void Drow_darcode(uint16_t x, uint16_t y, uint8_t width,uint8_t *bitdata){
int i=0,j=0,a=0,l=0,n=0;
for(i=0;i<width;i++){
for(j=0;j<width;j++){
a=j*width+i;
if((bitdata[a/8]&(1<<(7-a%8)))){
for(l=0;l<5;l++){
for(n=0;n<5;n++){
LCD_DrawPoint(x+5*i+l,y+5*j+n,BLACK);画点函数
}
}
}
}
}
}
显示的话,这里我使用的芯片为7789的lcd屏幕,上面这个函数的最后两个for循环里面的5和画点函数里面的两个5相当于是二维码的放大倍数,若想修改,可以当做参数传入这个函数里。
Drow_darcode函数的前两个参数为放的位置,其他的照抄就行了
https://note.youdao.com/s/58l4FX5G