正点原子提供的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);
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>