CAN通讯实验(接收错误)求助!!!

2019-07-20 06:07发布

正点原子提供的F429的CAN通讯试验历程,我删掉了关于LCD的代码(因为我没有用LCD显示屏),想通过LED的闪烁来检测主板是否能接收到数据,但LED灯是始终没有熄灭
我把程序烧到主板后把它和周立功的CAN分析仪连在一起,按下按键Key0后分析仪能收到主板发来的数据,但是用分析仪给主板发数据,主板的LED没有熄灭,应该是没有接受到数据,也就是if(key)始终为零
其他的代码我都没动过,CAN1_Receive_Msg(canbuf2)函数是例程中原来就写好的
下面是我改过的main函数代码,求大家帮我看看问题,谢谢了

int main(void)
{
    u8 key,res,i=0,data[8]= {0};
    u8 canbuf1[8],canbuf2[8];
    HAL_Init();                     //初始化HAL库   
    Stm32_Clock_Init(360,25,2,8);   //设置时钟,180Mhz
    delay_init(180);                //初始化延时函数
    uart_init(115200);              //初始化USART
    LED_Init();                     //初始化LED
    KEY_Init();                     //初始化按键
    CAN1_Mode_Init(CAN_SJW_1TQ,CAN_BS2_6TQ,CAN_BS1_8TQ,12,CAN_MODE_NORMAL); //CAN初始化,波特率250Kbps
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET); //LED0对应引脚PB1拉低,亮
    while(1)
    {
        key=KEY_Scan(0);
        if(key==KEY0_PRES)//KEY0按下,发送一次数据
        {
               for(i=0;i<8;i++)
               {
                    canbuf1[i]=i;
               }
               res=CAN1_Send_Msg(canbuf1,8);//发送8个字节
        }


        key=CAN1_Receive_Msg(canbuf2);
        if(key) //接收到有数据
       {
             HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);   //LED1对应引脚PB0拉高,灭
             delay_ms(500);                                      //延时500ms
        }
        delay_ms(10);  
    }      
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
qjwmmw
1楼-- · 2019-07-20 08:11
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET); //LED0对应引脚PB1拉低,亮
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);   //LED1对应引脚PB0拉高,灭
你这个灯不是设置的同一个灯。
水墓年华
2楼-- · 2019-07-20 11:45
 精彩回答 2  元偷偷看……
正点原子
3楼-- · 2019-07-20 16:35
仿真看下,确实收到数据没?
goojia
4楼-- · 2019-07-20 21:14
楼主问题解决了嘛,我今天也遇到了相同的问题

一周热门 更多>