#include \#include \#include \#include \#include \#include \#include \#include \#include \#include \#include \#include \#include \ #include \#include \#include \#include \#include \
#include \ #include \
#include \ #include \
int main(void) {
u8 key; u8 i=0,t=0; u8 cnt=0; u8 canbuf[8]; u8 res;
息
u8 mode=1;//CAN工作模式;0,普通模式;1,环回模式
Stm32_Clock_Init(9); //系统时钟设置 uart_init(72,9600); delay_init(72); LED_Init(); LCD_Init();
//串口初始化为9600 //延时初始化
//初始化与LED连接的硬件接口 //初始化LCD
usmart_dev.init(72); //初始化USMART KEY_Init();
//按键初始化
CAN_Mode_Init(1,8,7,5,mode);//CAN初始化,波特率450Kbps
POINT_COLOR=RED;//设置字体为红色
LCD_ShowString(60,50,200,16,16,\LCD_ShowString(60,70,200,16,16,\
LCD_ShowString(60,90,200,16,16,\LCD_ShowString(60,110,200,16,16,\LCD_ShowString(60,130,200,16,16,\
LCD_ShowString(60,150,200,16,16,\显示提示信
//显示当前
POINT_COLOR=BLUE;//设置字体为蓝色
LCD_ShowString(60,170,200,16,16,\
计数值
据
LCD_ShowString(60,190,200,16,16,\
LCD_ShowString(60,250,200,16,16,\
//提示发送的数据
//提示接收到的数
while(1)
{
key=KEY_Scan(0);
if(key==KEY_RIGHT)//KEY0按下,发送一次数据 {
for(i=0;i<8;i++) {
canbuf[i]=cnt+i;//填充发送缓冲区
if(i<4)LCD_ShowxNum(60+i*32,210,canbuf[i],3,16,0X80); //显示数据
else LCD_ShowxNum(60+(i-4)*32,230,canbuf[i],3,16,0X80); //显示数据
}
res=Can_Send_Msg(canbuf,8);//发送8个字节
if(res)LCD_ShowString(60+80,190,200,16,16,\//提示发送失败
else LCD_ShowString(60+80,190,200,16,16,\//提示发送成功
}else if(key==KEY_UP)//WK_UP按下,改变CAN的工作模式 {
mode=!mode;
CAN_Mode_Init(1,8,7,5,mode);//CAN普通模式初始化,普通模
式,波特率450Kbps
POINT_COLOR=RED;//设置字体为红色 if(mode==0)//普通模式,需要2个开发板 {
LCD_ShowString(60,130,200,16,16,\
}else //回环模式,一个开发板就可以测试了. {
}
}
LCD_ShowString(60,130,200,16,16,\
POINT_COLOR=BLUE;//设置字体为蓝色
key=Can_Receive_Msg(canbuf); if(key)//接收到有数据 {
LCD_Fill(60,270,130,310,WHITE);//清除之前的显示 for(i=0;i if(i<4)LCD_ShowxNum(60+i*32,270,canbuf[i],3,16,0X80); //显示数据 else LCD_ShowxNum(60+(i-4)*32,290,canbuf[i],3,16,0X80); //显示数据 } } } t++; delay_ms(10); if(t==20) { } LED0=!LED0;//提示系统正在运行 t=0; cnt++; LCD_ShowxNum(60+48,170,cnt,3,16,0X80); //显示数据 }