OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2539|回复: 0

关于can的问题

[复制链接]

8

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
107
金钱
107
注册时间
2017-10-16
在线时间
16 小时
发表于 2017-10-21 08:24:38 | 显示全部楼层 |阅读模式
1金钱
下载的官方战舰版的源码,只能单向传输?有什么解决的方案吗?
u8 key;
u8 i=0,t=0;
u8 cnt=0;
u8 canbuf[8];
u8 res;
u8 mode=CAN_Mode_LoopBack;
//CAN工作模式;CAN_Mode_Normal(0):普通模式。
//                                         CAN_Mode_LoopBack(1):环回模式。       
void while_1()
{
       
                        key=KEY_Scan(0);
                if(key==KEY0_PRES)//KEY0按下,发送一次数据
                {
                        for(i=0;i<8;i++)
                        {
                                canbuf[i]=cnt+i;//填充发送缓冲区
                                printf("canbuf[%d] = %d\n\r",i,canbuf[i]);
                        }
                        res=Can_Send_Msg(canbuf,8);//发送8个字节
                        if(res)
                        {
                                printf("Failed\n\r");                //提示发送失败
                        }
                        else
                        {
                                printf("OK\n\r");
                        }                               
                }else if(key==WKUP_PRES)//WK_UP按下,改变CAN的工作模式
                {          
                        mode=!mode;
                  CAN_Mode_Init(CAN_SJW_1tq,CAN_BS2_8tq,CAN_BS1_9tq,4,mode);//CAN普通模式初始化, 波特率500Kbps
                        if(mode==0)//普通模式,需要2个开发板
                        {
                                printf("Nnormal Mode\r\n ");            
                        }else //回环模式,一个开发板就可以测试了.
                        {
                                printf("LoopBack Mode\r\n");
                        }
                }                 
                key=Can_Receive_Msg(canbuf);
                if(key)//接收到有数据
                {                       
                        for(i=0;i<key;i++)
                        {                                                                            
                                printf("canbuf[%d] = %d\n\r",i,canbuf[i]);
                        }
                }
                t++;
                delay_ms(10);
                if(t==20)
                {
                        LED0=!LED0;//提示系统正在运行       
                        t=0;
                        cnt++;
                        printf("cnt = %d\r\n",cnt);               
                }
       
       
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 22:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表