想问原子哥CAN代码中的 if(i<4)LCD_ShowxNum(60+i*32,210,canbuf,3,16,0X80); //显示数据
i为什么只传输4?
else LCD_ShowxNum(60+(i-4)*32,230,canbuf,3,16,0X80); //显示数据
又什么i-4?
key=KEY_Scan(0);
if(key==KEY_RIGHT)//KEY0按下,发送一次数据
{
for(i=0;i<8;i++)
{
canbuf=cnt+i;//填充发送缓冲区
if(i<4)LCD_ShowxNum(60+i*32,210,canbuf,3,16,0X80); //显示数据
else LCD_ShowxNum(60+(i-4)*32,230,canbuf,3,16,0X80); //显示数据
}
res=Can_Send_Msg(canbuf,8);//发送8个字节
if(res)LCD_ShowString(60+80,190,200,16,16,"Failed"); //提示发送失败
else LCD_ShowString(60+80,190,200,16,16,"OK "); //提示发送成功
}else if(key==KEY_UP)//WK_UP按下,改变CAN的工作模式
{
mode=!mode;
CAN_Mode_Init(CAN_SJW_1tq,CAN_BS2_8tq,CAN_BS1_7tq,5,mode);//CAN普通模式初始化, 波特率450Kbps
POINT_COLOR=RED;//设置字体为红色
if(mode==0)//普通模式,需要2个开发板
{
LCD_ShowString(60,130,200,16,16,"Nnormal Mode ");
}else //回环模式,一个开发板就可以测试了.
{
LCD_ShowString(60,130,200,16,16,"LoopBack Mode");
}
POINT_COLOR=BLUE;//设置字体为蓝色
}
key=Can_Receive_Msg(canbuf);
if(key)//接收到有数据
{
LCD_Fill(60,270,130,310,WHITE);//清除之前的显示
for(i=0;i<key;i++)
{
if(i<4)LCD_ShowxNum(60+i*32,270,canbuf,3,16,0X80); //显示数据
else LCD_ShowxNum(60+(i-4)*32,290,canbuf,3,16,0X80); //显示数据
}
} |