查看: 2154|回复: 0

函数解析,路过写下你的答案吧

[复制链接]
发表于 2017-4-8 11:08:49 | 显示全部楼层 |阅读模式
    while (1)
                {
                        if(flag==0x01)
                        {
                                flag=0;//标志位清0
                                iPose=0;
                                USART1_Printf("123456789");
                                memcpy(&XY2_position,Receie_data,9);
                                if(XY2_position.num)Line_Bresenham(XY2_position.x0,XY2_position.y0,XY2_position.x1,XY2_position.y1);
                                else                      Line_DDA(XY2_position.x0,XY2_position.y0,XY2_position.x1,XY2_position.y1);
                        }
                }
}
void USART1_IRQHandler(void)        //串口1中断函数
{
        USART_ClearFlag(USART1,USART_FLAG_TC);
        if(USART1->SR & 0x00000020)//检查指定的USART中断发生与否
        {
                Receie_data[iPose]=USART1->DR & (uint16_t)0x01FF;//读取接收到的数据
                iPose++;//计数器加1
                if(iPose==9)flag=0x01;               
                USART1->DR = (flag & (uint16_t)0x01FF);
                while((USART1->SR&0x00000040) == 0);//准备发送一个数据        
        }
}
程序在一个STM32单片机上运行,可以检测到反馈的数据正常,但是单片机检测不到  flag==1,但是串口反馈的数据中到第9个字节数据时,flag确实=1
更换一个单片机后,程序第一次运行正常,在第二次就会出现flag始终等于1的状况这个是怎么做的?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表