stm32实验CAN收发实验

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include "sys.h" #include "usart.h"

#include "delay.h"

#include "led.h"

#include "beep.h"

#include "key.h"

#include "exti.h"

#include "wdg.h"

#include "timer.h"

#include "tpad.h"

#include "oled.h"

#include "lcd.h"

#include "usmart.h"

#include "rtc.h"

#include "wkup.h"

#include "adc.h"

#include "dac.h"

#include "dma.h"

#include "24cxx.h"

#include "flash.h"

#include "rs485.h"

#include "can.h"

int main(void){u8 key;

u8 i=0,t=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

//xx初始化

//初始化与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,"WarShip STM32");

LCD_ShowString(60,70,200,16,16,"CAN TEST");

LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");

LCD_ShowString(60,130,200,16,16,"LoopBack Mode");

LCD_ShowString(60,150,200,16,16,"KEY0:Send WK_UP:

Mode");//显示提示信

//显示当前POINT_COLOR=BLUE;//设置字体为蓝色

LCD_ShowString(60,170,200,16,16,"Count:

");

计数值

据LCD_ShowString(60,190,200,16,16,"Send Data:

");

LCD_ShowString(60,250,200,16,16,"Receive Data:

");//提示发送的数据//提示接收到的数while

(1){key=KEY_Scan

(0);

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,"Failed");//提示发送失败

else LCD_ShowString(60+80,190,200,16,16,"OK ");//提示发送成功

}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,"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

4)*32,290,canbuf[i],3,16,0X80);//显示数据

}}}

t++;

delay_ms

(10);

if(t==20){}LED0=!LED0;//提示系统正在运行

t=0;

相关文档
最新文档