OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6277|回复: 10

printf问题

[复制链接]

14

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2013-1-19
在线时间
0 小时
发表于 2013-2-24 16:39:49 | 显示全部楼层 |阅读模式
char buffer[1];

void read_file(u8 *path)
{
u8 res;
u16 time=0;
u8 t;
f_opendir(&dir,(TCHAR*)"0:/PHOTO");
f_open(&fp,(const TCHAR*)"0:/PHOTO/PIC00000.bmp",FA_OPEN_ALWAYS | FA_READ);
while(1)
{
if(time==0)
{
uartsend("AT+CIPSEND");//准备发送程序
while(1)//等待收到的连接成功的信息,连接成功就会跳出循环
{
if(USART_RX_STA&0x80 && strstr(USART_RX_BUF,">"))
{
// LCD_ShowString(60,190,200,200,16,"CONNECT OK");
break;
}
}
}  
res=f_read(&fp,buffer,sizeof(buffer),&bw);
if(res||bw==0)
{
sendchar(0x1a);//以0x1a结?
while(1)//等待收到的连接成功的信息,连接成功就会跳出循环
{
if(USART_RX_STA&0x80 && strstr(USART_RX_BUF,"SEND OK"))
{
break;
}
}
USART_RX_STA=0;
break;
}
save[time]=buffer[0];
delay_ms(2);   
printf("%c",buffer[0]);
time++;
if(time==10)
{
sendchar(0x1a);//以0x1a结?
while(1)//等待收到的连接成功的信息,连接成功就会跳出循环
{
if(USART_RX_STA&0x80 && strstr(USART_RX_BUF,"SEND OK"))
{
time=0;
break;
}
else if(USART_RX_STA&0x80 && strstr(USART_RX_BUF,"ERROR"))
{
uartsend("AT+CIPSEND");
while(1)//等待收到的连接成功的信息,连接成功就会跳出循环
{
if(USART_RX_STA&0x80 && strstr(USART_RX_BUF,">"))
{
// LCD_ShowString(60,190,200,200,16,"CONNECT OK");
break;
}
}
for(t=0;t<time;t++)
{
printf("%c",save[t]);
}
sendchar(0x1a);
USART_RX_STA=0;
}
}
// delay_ms(1000);
}
}
}


标红的地方不知道为什么经常出现当time==9要加一变10的时候拿上一句printf就会莫名其妙的跳过去 一共就只能输出9个字符 总是少一个 但我用jtag模拟的时候却没问题 但也有时会跳过去  请问这是怎么回事?


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2013-1-19
在线时间
0 小时
 楼主| 发表于 2013-2-24 16:47:31 | 显示全部楼层
我用jtag一步一步模拟就不会跳过 试过好几次 但一旦连续不一步一步经过printf的话就会出现第十次printf就会跳过去 请各位指点指点
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-2-24 17:37:19 | 显示全部楼层
你是说printf("%c",buffer[0]);,只输出了9次,不输出10次?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

14

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2013-1-19
在线时间
0 小时
 楼主| 发表于 2013-2-24 18:08:47 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
恩 对 不论我time等于多少 他都会少一次 例如time=100 它输出99次
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-2-24 18:30:26 | 显示全部楼层
那我就不解了,呵呵。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

14

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2013-1-19
在线时间
0 小时
 楼主| 发表于 2013-2-24 22:14:38 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
我也是 模拟的时候要是一步一步地走 他绝对没问题 只要不是一步一步走 就绝对出问题
回复 支持 反对

使用道具 举报

14

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2013-1-19
在线时间
0 小时
 楼主| 发表于 2013-2-25 17:37:29 | 显示全部楼层
不能让他沉啊 大家帮帮我把 或者有什么解决办法  为什么无故会跳过一段程序
回复 支持 反对

使用道具 举报

14

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2013-1-19
在线时间
0 小时
 楼主| 发表于 2013-2-25 18:28:21 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
我把printf换成 USART1->DR=ch;
while((USART1->SR&0X40)==0);//等待发送结束

就不会出现问题了
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-2-25 20:02:39 | 显示全部楼层
回复【8楼】人生如茶:
---------------------------------
哦哦,你的printf fputc是不是这么定义的:
//重定义fputc函数 
int fputc(int ch, FILE *f)
{      
while((USART1->SR&0X40)==0);//循环发送,直到发送完毕   
USART1->DR = (u8) ch;      
return ch;
}
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

14

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2013-1-19
在线时间
0 小时
 楼主| 发表于 2013-2-25 20:57:23 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
en  为什么这样子就会出现跳过的情况啊?? 还是不明白
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-2-25 21:03:22 | 显示全部楼层
应该不会才对,我都是这么用的,没出现过你这么怪异的情况。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-22 12:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表