单片机程序
u8 Adr=0xA5; //板子地址
int main(void)
{
Send_Data_Ser(Adr); //地址
Send_Data_Ser(0x03);
Send_Data_Ser(0x04);
Send_Data_Ser(0x00);
Send_Data_Ser(0x00);
Send_Data_Ser((Adr>>4)*17);
Send_Data_Ser((Adr&0x0F)*17);
}
这样就对串口发送了a5 03 04 00 00 AA 55,但是我现在的要求是想把这个7字节数据放入一个数组,而使用这样的方法,编译会有问题。
vu8 array[7]={Adr,0x03,0x04,0x00,0x00,(Adr>>4)*17,(Adr&0x0F)*17}; ,请问怎样才能将上面这7字节数据存入array[7]数组?
我猜是因为数组初始化的值必须都是编译期常量,而你的Adr是一个变量,跟它相关的(Adr>>4)*17,(Adr&0x0F)*17也都是变量,所以不能用来初始化数组。
可以把Adr定义为一个符号常量试试看,即
#define Adr (0xA5)来代替
u8 Adr=0xA5;追问定义为常量就可以了,但是这个地址需要更改,也就是Adr必须是变量才行
追答既然Adr必须是变量,不如直接写一个数组的初始化函数,
init_array(array, adr);里面直接给每个元素赋值。。。
追问请明示怎么写,本人新手,将这7个数据存入array[7]即可
追答u8 Adr = 0xA5; //板子地址这样。。。