lcd1602里面写了一个按键切换显示子程序如下
void display(char screens)
{
u8 bluetooth_date_str0[16],bluetooth_date_str1[16];
if (screens==1)
{
if (bluetooth_date[0]=='1')
{
memcpy(bluetooth_date_str0, bluetooth_date + 1, 16);
memcpy(bluetooth_date_str1, bluetooth_date + 17, 32);
}
LCD1602_Show_Str(0, 0, bluetooth_date_str0);
LCD1602_Show_Str(0, 1, bluetooth_date_str1);
}
else if(screens==2)
{
}
else if (screens==3)
{
}
else if (screens==4)
{
}
else if (screens==5)
{
}
我把bluetooth_date_str0[16],bluetooth_date_str1[16]写在display(char screens),编译没提示有错误,但仿真的时候livewatch提示cannot take address xxx
如果是把数组定义在display(char screens)外就没问题
u8 bluetooth_date_str0[16],bluetooth_date_str1[16];
void display(char screens)
{
if (screens==1)
{
if (bluetooth_date[0]=='1')
{
memcpy(bluetooth_date_str0, bluetooth_date + 1, 16);
memcpy(bluetooth_date_str1, bluetooth_date + 17, 32);
}
这2个有什么差别?
|