完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
哪位高手帮我分析一下这个程序不能同时收发can报文的问题啊,程序如下
/* * File: ert_main.c * * Code generated for Simulink model 'p60010'. * * Model version : 1.107 * Simulink Coder version : 8.2 (R2012a) 29-Dec-2011 * TLC version : 8.2 (Dec 29 2011) * C/C++ source code generated on : Wed Jan 13 12:01:14 2016 * * Target selection: ert.tlc * Embedded hardware selection: Freescale->S12x * Code generation objectives: Unspecified * Validation result: Not run */ #include "p60010.h" /* Model's header file */ #include "rtwtypes.h" /* MathWorks types */ #include #include "derivative.h" #include "CAN.h" #include "p60010_types.h" #include "p60010_private.h" #include #pragma LINK_INFO DERIVATIVE "mc9s12xs128" #define BUS_CLOCK 32000000 //总线频率 #define OSC_CLOCK 16000000 //晶振频率 #define ID1 0x702 //发送标识符 #define data_len_TX 8 //发送数据长度 long i=0; long j=0; unsigned char k; struct can_msg msg_send, msg_get; void INIT_PLL(void) { CLKSEL &= 0x7f; //set OSCCLK as sysclk PLLCTL &= 0x8F; //Disable PLL circuit CRGINT &= 0xDF; #if(BUS_CLOCK == 40000000) SYNR = 0x44; #elif(BUS_CLOCK == 32000000) SYNR = 0x43; #elif(BUS_CLOCK == 24000000) SYNR = 0x42; #endif REFDV = 0x81; //PLLCLK=2×OSCCLK×(SYNR+1)/(REFDV+1)=64MHz ,fbus=32M PLLCTL =PLLCTL|0x70; //Enable PLL circuit asm NOP; asm NOP; while(!(CRGFLG&0x08)); //PLLCLK is Locked already CLKSEL |= 0x80; //set PLLCLK as sysclk } void delay() {for(i=0;i<1000;i++) for(j=0;j<640;j++);} void rt_OneStep(void); void rt_OneStep(void) { static boolean_T OverrunFlag = 0; /* Disable interrupts here */ /* Check for overrun */ if (OverrunFlag) { rtmSetErrorStatus(p60010_M, "Overrun"); return; } OverrunFlag = TRUE; /* Set model inputs here */ /* Step the model */ p60010_step(); /* Get model outputs here */ DDRA=0xff; relay=PORTA_PA0; /* Indicate task complete */ OverrunFlag = FALSE; } void main(void) { /* Initialize model */ p60010_initialize(); DDRA=0xff; INIT_PLL(); INIT_CAN0(); while (1) { /* Perform other application tasks here */ rt_OneStep(); for(k=0;k<8;k++) { msg_send.id = 0x702; //message1 msg_send.data[0] = p702_byte0; msg_send.data[1] = 0; msg_send.data[2] = 0; msg_send.data[3] = 0; msg_send.data[4] = 0; msg_send.data[5] = 0; msg_send.data[6] = 0; msg_send.data[7] = 0;} msg_send.len = data_len_TX; msg_send.RTR = FALSE; msg_send.prty = 0; if(!MSCAN0SendMsg(msg_send)) //发送过程出现错误 for(;;); {msg_send.id = 0x704; //message2 msg_send.data[0] = p704_byte0; msg_send.data[1] = p704_byte1; msg_send.data[2] = p704_byte2; msg_send.data[3] = 0; msg_send.data[4] = 0; msg_send.data[5] = 0; msg_send.data[6] = 0; msg_send.data[7] = 0;} msg_send.len = data_len_TX; msg_send.RTR = FALSE; msg_send.prty = 0; if(!MSCAN0SendMsg(msg_send)) //发送过程出现错误 for(;;); {msg_send.id = 0x666; //message3 msg_send.data[0] = p666_byte0; msg_send.data[1] = p666_byte1; msg_send.data[2] = 0; msg_send.data[3] = 0; msg_send.data[4] = 0; msg_send.data[5] = 0; msg_send.data[6] = 0; msg_send.data[7] = 0;} msg_send.len = data_len_TX; msg_send.RTR = FALSE; msg_send.prty = 0; if(!MSCAN0SendMsg(msg_send)) //发送过程出现错误 for(;;); if(MSCAN0GetMsg(&msg_get)) //接收报文 { if(msg_get.id==0x705&&(!msg_get.RTR)) CAN0RXDSR1=p705_byte0;} if(msg_get.id==0x701&&(!msg_get.RTR)) {CAN0RXDSR4=p701_byte4;CAN0RXDSR5=p701_byte5;} else {for(;;); } /* Disable rt_OneStep() here */ /* Terminate model */ p60010_terminate(); } } |
|
相关推荐
7个回答
|
|
以前只玩过单独接收或者单独发送,这次遇到同时接收和发送不会了
|
|
|
|
学习一下,谢谢!
|
|
|
|
|
|
|
|
can是单工收发,不可能同时收发,两根线是canH和canL不是收发!
|
|
|
|
你这个程序大部分时间都在发送啊,任何一次发送失败都会死在循环里。而且看着好乱,把报文填写封装成函数就好看多了
|
|
|
|
|
|
|
|
楼主,你程序实现多组CAN信息发送和接收?能不能分享下经验?我的QQ:1139471346
|
|
|
|
只有小组成员才能发言,加入小组>>
1897个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36304 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
4372 浏览 0 评论
6027 浏览 1 评论
6746 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4194 浏览 0 评论
603浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
597浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
587浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
675浏览 2评论
770浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-5 15:26 , Processed in 1.201896 second(s), Total 90, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号