完善资料让更多小伙伴认识你,还能领取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(;;); } } |
|
|
|
只有小组成员才能发言,加入小组>>
1936个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36437 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
5097 浏览 1 评论
6121 浏览 1 评论
6825 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4255 浏览 0 评论
656浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
646浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
648浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
738浏览 2评论
855浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-31 01:05 , Processed in 1.146314 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号