vs使用GFX和1302库时编译出错

问题描述

VS2019进行编程,使用DS1302库和GFX库时出现编译错误,提示找不到与之对应的函数。相同的代码,直接使用arduino IDE能够通过,但是有警告。
错误代码:

  1. DS1302:
 Time t(2021, 1, 12, 00, 26, 00, 2);
  1. GFX
    //显示汉字声明
static const unsigned char  PROGMEM zi[] =
{
    0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x1F, 0xF0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1F, 0xF0,
    0x10, 0x10, 0x10, 0x10, 0x1F, 0xF0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1F, 0xF0, 0x10, 0x10
};  //"自
oled.drawBitmap(0, 0, zi, 16, 16, 1);

分析原因

查看函数声明和提示的警告发现:Time类中的最后一个参数类型是枚举型Day,而我的代码中是常数2(vs判定其类型默认为int)。draBitmap()函数中第3个参数类型是uint8_t *,而我的代码中用的是unsigned char。从而造成了参数类型无法识别。

解决办法

修改参数类型。

Time t(2021, 1, 12, 00, 26, 00, Time::Day::kMonday); 

typedef unsigned char uint8_t;
static const uint8_t PROGMEM zi[] =
{
    0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x1F, 0xF0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1F, 0xF0,
    0x10, 0x10, 0x10, 0x10, 0x1F, 0xF0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1F, 0xF0, 0x10, 0x10
};  //"自
oled.drawBitmap(0, 0, zi, 16, 16, 1);
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容