关于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){
        for(j=0;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屏幕

前两个参数为放的位置,其他的照抄就行了

https://note.youdao.com/s/58l4FX5G