初级会员

- 积分
- 55
- 金钱
- 55
- 注册时间
- 2013-11-28
- 在线时间
- 0 小时
|

楼主 |
发表于 2014-2-12 11:22:27
|
显示全部楼层
回复【6楼】745021926:
---------------------------------
我在跟踪调试的时候,只有一步一步的运行,当运行到判断按键按下的时候,要先按住按键再单步运行才能修改那个值:下面的程序请帮我看看吧,也许逻辑有点问题,请帮一下忙吧!谢谢哈
A板程序:
int main(void)
{
/*初始化串口模块*/
USART1_Config();
/* 配置CAN模块 */
CAN_Config();
LED_GPIO_Config();
Key_GPIO_Config();
printf( "\r\n***** 这是一个双CAN通讯实验******** \r\n");
printf( "\r\n 这是 “主机端” 的反馈信息: \r\n");
/*设置要通过CAN发送的信息*/
CAN_SetMsg();
if(Key_Scan(GPIOE,GPIO_Pin_5) == KEY_ON)
{
TxMessage.Data[0]=0x01;
}
printf("\r\n将要发送的报文内容为:\r\n");
printf("\r\n 扩展ID号ExtId:0x%x",TxMessage.ExtId);
//printf("\r\n 数据段的内容 ata[0]=0x%x ,Data[1]=0x%x ,Data[2]=0x%x ,Data[3]=0x%x ,Data[4]=0x%x ,Data[5]=0x%x ,Data[6]=0x%x ,Data[7]=0x%x\r\n",TxMessage.Data[0],TxMessage.Data[1],TxMessage.Data[2],TxMessage.Data[3],TxMessage.Data[4],TxMessage.Data[5],TxMessage.Data[6],TxMessage.Data[7]);
printf("\r\n 数据段的内容 ata[0]= 0x%x \r\n",TxMessage.Data[0]);
CAN_Transmit(CAN1, &TxMessage);
void CAN_SetMsg(void)
{ unsigned int i=0;
//TxMessage.StdId=0x00;
TxMessage.ExtId=0x1315; //使用的扩展ID
TxMessage.IDE=CAN_ID_EXT; //扩展模式
TxMessage.RTR=CAN_RTR_DATA; //发送的是数据
TxMessage.DLC=1; //数据长度为2字节
TxMessage.Data;
//TxMessage.Data[1]=0x02;
//TxMessage.Data[2]=0x03;
// TxMessage.Data[3]=0x04;
// TxMessage.Data[4]=0x05;
// TxMessage.Data[5]=0x06;
// TxMessage.Data[6]=0x07;
// TxMessage.Data[7]=0x08;
B板接收:
void USB_LP_CAN1_RX0_IRQHandler(void)
{
unsigned int i;
CAN_Receive(CAN1, CAN_FIFO0, &RxMessage);
/* 比较是否是发送的数据和ID */
if((RxMessage.ExtId==0x1315) && (RxMessage.IDE==CAN_ID_EXT)
&& (RxMessage.DLC==1)&&(RxMessage.Data[0]==0x01))
{
flag=0;
GPIO_SetBits(GPIOD , GPIO_Pin_9);
}
//接收成功
else
{
flag = 0xff; //接收失败
}
} |
|