完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
main函数里初始化CAN配置,使能中断,死循环里赋值发送数据,调用发送函数,即可发出。如
/*************************************************************/ /* 初始化CAN0 */ /*************************************************************/ void INIT_CAN0(void) { if(CAN0CTL0_INITRQ==0) // 查询是否进入初始化状态 CAN0CTL0_INITRQ =1; // 进入初始化状态 while (CAN0CTL1_INITAK==0); //等待进入初始化状态 CAN0BTR0_SJW = 0; //设置同步 CAN0BTR0_BRP = 7; //设置波特率 CAN0BTR1 = 0x1c; //设置时段1和时段2的Tq个数 ,总线频率为250kb/s // 关闭滤波器 CAN0IDMR0 = 0xFF; CAN0IDMR1 = 0xFF; CAN0IDMR2 = 0xFF; CAN0IDMR3 = 0xFF; CAN0IDMR4 = 0xFF; CAN0IDMR5 = 0xFF; CAN0IDMR6 = 0xFF; CAN0IDMR7 = 0xFF; CAN0CTL1 = 0xC0; //使能MSCAN模块,设置为一般运行模式、使用总线时钟源 CAN0CTL0 = 0x00; //返回一般模式运行 while(CAN0CTL1_INITAK); //等待回到一般运行模式 while(CAN0CTL0_SYNCH==0); //等待总线时钟同步 CAN0RIER_RXFIE = 0; //禁止接收中断 } /*************************************************************/ /* CAN0发送 */ /*************************************************************/ Bool MSCAN0SendMsg(struct can_msg msg) { unsigned char send_buf, sp; // 检查数据长度 if(msg.len > 8) return(FALSE); // 检查总线时钟 if(CAN0CTL0_SYNCH==0) return(FALSE); send_buf = 0; do { // 寻找空闲的缓冲器 CAN0TBSEL=CAN0TFLG; send_buf=CAN0TBSEL; } while(!send_buf); // 写入标识符 CAN0TXIDR0 = (unsigned char)(msg.id>>3); CAN0TXIDR1 = (unsigned char)(msg.id<<5); if(msg.RTR) // RTR = 阴性 CAN0TXIDR1 |= 0x10; // 写入数据 for(sp = 0; sp < msg.len; sp++) *((&CAN0TXDSR0)+sp) = msg.data[sp]; // 写入数据长度 CAN0TXDLR = msg.len; // 写入优先级 CAN0TXTBPR = msg.prty; // 清 TXx 标志 (缓冲器准备发送) CAN0TFLG = send_buf; return(TRUE); } void main(void) { DisableInterrupts; INIT_PLL(); INIT_CAN0(); EnableInterrupts; //填写报文内容 msg_send.id = ID; for(k=0;k msg_send.data[k] = senddata[k]; } msg_send.len = data_len_TX; msg_send.RTR = FALSE; msg_send.prty = 0; for(;;) { delay1ms(500); if(!MSCAN0SendMsg(msg_send)) //发送过程出现错误 for(;;); } } |
|
|
|
|
只有小组成员才能发言,加入小组>>
2135个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
37376 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
6775 浏览 1 评论
7793 浏览 1 评论
7642 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
5071 浏览 0 评论
1556浏览 2评论
关于NINA-W132 Wi-Fi模块SPI通信遇到的疑问求解
1208浏览 2评论
如何在MPC PowerPC MCU上首次刷写后禁用BDM?
749浏览 1评论
将HFREFR和LFREFR寄存器值设置为错误的值来将故障注入CMU,但CMU_ISR值始终为零,为什么?
735浏览 1评论
将SPSDK for FRDM-MCX-W71 SDK与VS一起安装时出现hidapi构建错误怎么解决?
678浏览 1评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 07:10 , Processed in 0.485973 second(s), Total 46, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
4435