研究生
最后登录1970-1-1
在线时间 小时
注册时间2013-5-4
|
楼主 |
发表于 2013-8-25 14:33:10
|
显示全部楼层
本帖最后由 yangyankunlc 于 2013-8-25 14:37 编辑
今天我又编译了一套类似的程序,定义了一个全局变量temp,利用一个按键(野火板KEY2键),当按键按下 时,进行数据发送(发送temp进行累加)。A和B两块板子下载的时同一套程序,实验现象大致是这样的:A发送temp给B,B接收temp正确,可以连续让A发送temp给B,实验现象正确,temp会累加,现在接着让B发temp给A,数据会在B接收的基础上进行累加发送temp给A,这时也是正确的(temp会累加),而且A接收temp也是正确的。但是接着如果重新让A发送数据,则A发送temp会出现temp数据变量变成了 1 之后,又进行发送,当然B接收是正常的,也是会接收到 1 的,这是为什么呢?望高手指点指点
while(1)
{
if(USART2_flag)//在USART2中断中将USART2_flag置1
{
printf("接收到的数据为%d \r\n",temp);
temp+=1;
USART2_flag=0;
}
if(Key_Scan(GPIOE,GPIO_Pin_6)==0)//当按下按键时
{
GPIO_SetBits(GPIOA,GPIO_Pin_0); //进入发送模式
USART_SendData(USART2, temp); //发送数据
while (USART_GetFlagStatus(USART2,USART_FLAG_TC) !=SET);//轮询直到发送数据完毕
printf("发送数据成功!%d\r\n",temp); //使用串口1打印调试信息到终端
temp+=1;
GPIO_ResetBits(GPIOA,GPIO_Pin_0); //进入接收模式
}
}
这是主函数代码,其他的都是野火历程中的,没有改动,当然这次是开了中断进行接收的数据 |
|