新手上路
- 积分
- 42
- 金钱
- 42
- 注册时间
- 2019-12-25
- 在线时间
- 7 小时
|
1金钱
uint32_t Rx_id = 0x15;
uint32_t Tx_id = 0x13;
u8 mode = 1; //CAN1¤×÷Ä£ê½;CAN_Mode_Normal(0)£oÆÕí¨Ä£ê½£¬CAN_Mode_LoopBack(1)£o»·»ØÄ£ê½
delay_init(); //Ñóê±oˉêy3õê¼»ˉ
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //éèÖÃÖD¶ÏóÅÏè¼¶·Ö×éÎa×é2£o2λÇàÕ¼óÅÏè¼¶£¬2λÏìó|óÅÏè¼¶
uart_init(115200); //′®¿ú3õê¼»ˉÎa115200
LED_Init(); //3õê¼»ˉóëLEDᬽóμÄó2¼t½ó¿ú
KEY_Init(); //°′¼ü3õê¼»ˉ
CAN_Mode_Init(CAN_SJW_1tq,CAN_BS2_8tq,CAN_BS1_9tq,4,mode);
while(1)
{
key = KEY_Scan(0);
if(key == 1) //KEY1°′ÏÂ,·¢Ëíò»′Îêy¾Y
{
for(i=0;i<8;i++)
{
tx_buf=cnt+i; //ìî3ä·¢Ëí»o3åÇø
}
res = Can_Send_Msg(tx_buf,Tx_id);
if(res)
printf("Failed"); //ìáê¾·¢Ëíê§°ü
else
{
printf("\r\nTx:tx_id=%x,%x,%x,%x,%x,%x,%x,%x,%x\r\n",
Tx_id,tx_buf[0],tx_buf[1],tx_buf[2],tx_buf[3],
tx_buf[4],tx_buf[5],tx_buf[6],tx_buf[7]);
}
}
res1 = Can_Receive_Msg(rx_buf,Rx_id);
if(res1&&(Rx_id==0x13)) //½óêÕμ½óDêy¾Y
{
printf("\r\nRx:rx_id = %x,%x,%x,%x,%x,%x,%x,%x,%x\r\n",
Rx_id,rx_buf[0],rx_buf[1],rx_buf[2],rx_buf[3],
rx_buf[4],rx_buf[5],rx_buf[6],rx_buf[7]);
}
u8 Can_Send_Msg(u8* msg,uint32_t id)
{
u8 mbox;
u16 i=0;
CanTxMsg TxMessage;
TxMessage.StdId = id; // ±ê×¼±êê¶·û
// TxMessage.ExtId = 0x12; // éèÖÃà©Õ1±êê¾·û
TxMessage.IDE=CAN_Id_Standard; // ±ê×¼Ö¡
TxMessage.RTR=CAN_RTR_Data; // êy¾YÖ¡
TxMessage.DLC=8; // òa·¢ËíμÄêy¾Y3¤¶è
for(i=0;i<8;i++)
TxMessage.Data=msg;
mbox= CAN_Transmit(CAN1, &TxMessage);
i=0;
while((CAN_TransmitStatus(CAN1, mbox)==CAN_TxStatus_Failed)&&(i<0XFFF))
i++; //μè′y·¢Ëí½áêø
if(i>=0XFFF)
return 1;
return 0;
}
u8 Can_Receive_Msg(u8 *buf,uint32_t id)
{
u32 i;
CanRxMsg RxMessage;
if( CAN_MessagePending(CAN1,CAN_FIFO0)==0)
return 0; //ûóD½óêÕμ½êy¾Y,Ö±½óíË3ö
CAN_Receive(CAN1, CAN_FIFO0, &RxMessage); //¶áè¡êy¾Y
id = RxMessage.StdId;
for(i=0;i<8;i++)
{
buf=RxMessage.Data;
}
return 1;
}
rxid 一直等于0x15,初始化的值,麻烦大家帮我看看
|
最佳答案
查看完整内容[请看2#楼]
res1 = Can_Receive_Msg(rx_buf,Rx_id);
括号里的是参数传入,在子函数中使用的是Rx_id的副本,用完就丢弃了,你的返回就是res1 .你需要的是定义好一块内存让函数把数据往里面填才可以,自己仔细看看参数的传入传出吧
|