AVR ATMega169P采用C ++的LCD显示屏

时间:2015-04-08 23:48:24

标签: c++ avr atmelstudio

我正在尝试在ATMega 169P微控制器的液晶显示屏上显示内容。使用C时,我可以使用此代码:

char str[50];
int value = 100;
str = sprintf(str, "some text %d", value);
LCD_puts(str);

它会显示正常。 LCD_puts是我老师给我们的一种方法。 但是,我正在尝试使用C ++进行分配,而且我无法使LCD_puts()工作。我使用了sprintf和snprintf,使用snprintf时收到以下编译错误。我正在使用的代码也在下面。 (格式化道歉,我无法发布图片)。

char str[100];
int rpm = 100; //Genaric value

snprintf(str, 100, '%d in',rpm);
LCD_puts(str);

从'char *'无效转换为'unint8_t *'{aka unsigned char *}'[ - fpermissive]

我认为我的确切代码不是必需的,我只需要知道为什么会出现这个错误,以及是否有一个C ++函数,它等同于我可以使用的sprintf。如果需要,我会发布我的确切代码。

1 个答案:

答案 0 :(得分:2)

您正在尝试将unsigned char数组存储到signed char数组中。将str声明为unsigned char:

unsigned char str[100];

或在参数中将str转换为unsigned char:

snprintf((uint8_t*)str, 100, '%d in',rpm);

在这种情况下,uint8_tunsigned char是等效的。