打印
[STM32F1]

USART_SendData函数

[复制链接]
2609|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sunwave|  楼主 | 2016-12-21 12:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家帮我看看下面的程序有什么问题?
1.Lcd_Icon( 0x0200, 0x0002 );运行正常
2.Lcd_Icon( 0x0201, 0x0004 );程序就乱了,单步进去发现是停在USART_SendData(USART2, buf[t]);这个语句很长时间,然后好像是很多变量都复位清零,可能是看门狗的原因。为什么会停止在这个语句很长时间,就是鼠标变成沙漏形状一段时间。
3、void Usart2_Send_Data(u8 *buf, u8 len)
{        u8 t;
        for(t=0;t<len;t++)   //Ñ­»··¢ËÍÊý¾Ý
        {
               
                USART_SendData(USART2, buf[t]);
                while(USART_GetFlagStatus(USART2,USART_FLAG_TC) == RESET){}
               
        }
}
沙发
sunwave|  楼主 | 2016-12-21 13:00 | 只看该作者
少贴了个函数,
void Lcd_Icon( u16 DataAdd, u16 Strbuff )
{
        Iconswitch[4] = (u8)(DataAdd>>8);
        Iconswitch[5] = (u8)DataAdd;
        Iconswitch[6] = (u8)(Strbuff>>8);
        Iconswitch[7] = (u8)Strbuff;
       
        Usart2_Send_Data((u8*)Iconswitch, 8);
}
其中        Iconswitch[0] -        Iconswitch[4]在初始化程序中初始化好了,这里不改动

使用特权

评论回复
板凳
mmuuss586| | 2016-12-21 14:19 | 只看该作者
你可以先把看门狗关了,测试这段语句,花了多长时间;

正常的话,你根据波特率可以算出大概花多长时间;

使用特权

评论回复
地板
mmuuss586| | 2016-12-21 14:20 | 只看该作者
while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);
另外有没有发送完成,我用这句;

使用特权

评论回复
5
sunwave|  楼主 | 2016-12-21 15:31 | 只看该作者
mmuuss586 发表于 2016-12-21 14:19
你可以先把看门狗关了,测试这段语句,花了多长时间;

正常的话,你根据波特率可以算出大概花多长时间; ...

看门狗关了,还是不行

使用特权

评论回复
6
mmuuss586| | 2016-12-21 17:26 | 只看该作者
sunwave 发表于 2016-12-21 15:31
看门狗关了,还是不行

判断有没有发送完的程序也换了吗?

使用特权

评论回复
7
sunwave|  楼主 | 2016-12-21 19:26 | 只看该作者
mmuuss586 发表于 2016-12-21 17:26
判断有没有发送完的程序也换了吗?

换过了,还是不行

使用特权

评论回复
8
sunwave|  楼主 | 2016-12-21 21:08 | 只看该作者
查出来问题了,是完全不相干的地方,都不好意思说出来,用了一个预编译指令,跳错地方了,谢谢各位。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

154

帖子

5

粉丝