完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
软件:keil5、EmbededDebug v2.0
目的:按下按键芯片能发送给电脑。当电脑发送时,触发中断,而后芯片把收到的数据返回给电脑 以下必须有,放入主函数: NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2 delay_init(168); //初始化延时函数 LED_Init(); //初始化LED KEY_Init(); //按键初始化 CAN1_Mode_Init(CAN_SJW_1tq,CAN_BS2_6tq,CAN_BS1_7tq,6,CAN_Mode_Normal);//500K while(1) { key=KEY_Scan(0);//按键扫描 if(key==KEY0_PRES)//KEY0按下,发送一次数据 { for(i=0;i《8;i++) { canbuf=i;//填充发送缓冲区 } CAN1_KeySend_Msg(canbuf,8); } } 使用扩展帧,不用标准帧: u8 CAN1_KeySend_Msg(u8* msg,u8 len) { u8 mbox; u16 i=0; CanTxMsg TxMessage; //TxMessage.StdId=0x18; // This parameter can be a value between 0 to 0x7FF. 标准的不用了 TxMessage.ExtId=0x181056f4; // This parameter can be a value between 0 to 0x1FFFFFFF 使用扩展 //TxMessage.IDE=0; TxMessage.IDE=1; //使用扩展置1 TxMessage.RTR=0;// 消息类型为数据帧 TxMessage.DLC=len; for(i=0;i TxMessage.Data=msg; mbox= CAN_Transmit(CAN1, &TxMessage); i=0; while((CAN_TransmitStatus(CAN1, mbox)==CAN_TxStatus_Failed)&&(i《0XFFF))i++;//等待发送结束 if(i》=0XFFF)return 1; return 0; } 最重要的就是:CAN_Transmit() 在stm32f4xx_can.c文件中 如果用例程,使用扩展帧的时候一直都失败 所以需要修改的地方如下: assert_param(IS_CAN_EXTID(TxMessage-》ExtId)); CANx-》sTxMailBox[transmit_mailbox].TIR |= ((TxMessage-》ExtId 《《 3) | TxMessage-》IDE《《2 | TxMessage-》RTR《《1); 现在自己写一个结构体用来存放自己想发送的数据 typedef struct CAN_Tx{ u16 DA; //指定发送的数据 u16 DB; u16 DC; u16 DD; u16 Ide; u16 Rtr; u16 Len; //指定字节数 u32 RevMBXnID ; //指定发送的ID号, }TCAN_Msg; TCAN_Msg CANTxMsg[]={{0,0,0,0, 0,0,0,0x00}}; 再搞一个指针TCAN_Msg *PtrCanTx = &CANTxMsg[0];//指向结构体地址 就可以这样了:PtrCanTx-》 Len = 8; 再写一个和上面u8 CAN1_KeySend_Msg(u8* msg,u8 len)差不多的函数 就叫:u8 CAN1_Send_Msg(TCAN_Msg *CANTx) 对于中断服务函数: 在初始化的时候(用例程就行)已开启中断,所以电脑发送数据就会触发中断(FIFO0消息挂号中断允许。) void CAN1_RX0_IRQHandler(void) 在中断中可以写一些,接收到某消息后的某动作啥的 ================================================================ 按键按下发送:0x01 0x02 0x03 0x04 0x05 0x06 0x07 在程序里写想发送的数据:0x01 0x00 0x00 0x00 0x00 0x00 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1935浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
728浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
567浏览 3评论
593浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
551浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 12:12 , Processed in 0.881610 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号