OpenEdv-开源电子网

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

sprintf有问题!!!

[复制链接]

14

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2013-1-19
在线时间
0 小时
发表于 2013-2-15 19:15:13 | 显示全部楼层 |阅读模式
在mini上做照相实验是发现总在sprintf这里卡主 但又不是每次都卡 总是运行几次就突然在这里卡住了  不知道是为什么、、、、
void camera_new_pathname(u8 *pname)
{  
u8 res;  
u16 index=0;
while(index<0XFFFF)
{
sprintf((char*)pname,"0HOTO/PIC%05d.bmp",index);//就是这里 不知道为什么 运行几次就突然卡住了 
res=f_open(&ftemp,(const TCHAR*)pname,FA_READ);
if(res==FR_NO_FILE)break;
index++;
}  
}

请各位帮小弟解决一下。。。。。。。

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-2-15 19:44:35 | 显示全部楼层
你的参数定义是怎么定义的?
调用void camera_new_pathname(u8 *pname)
函数的pname参数.
要4字节对齐.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

14

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2013-1-19
在线时间
0 小时
 楼主| 发表于 2013-2-16 18:17:29 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
四字节对齐不明白 这个是主函数 

int main(void)
{
u8 key;
u8 i;
u8 *pname;
    Stm32_Clock_Init(9); //系统时钟设置
uart_init(72,9600);   //串口初始化为9600
delay_init(72);       //延时初始化 
   OV7670_Init();   
KEY_Init();
LED_Init();    //初始化与LED连接的硬件接口
LCD_Init();     //初始化LCD
if(lcddev.id==0X6804)  //强制设置屏幕分辨率为320*240.以支持3.5寸大屏
{
lcddev.width=240;
lcddev.height=320; 
}
usmart_dev.init(72); //初始化USMART
      
  POINT_COLOR=RED;//设置字体为红色 
LCD_ShowString(60,50,200,200,16,"Mini STM32");
LCD_ShowString(60,70,200,200,16,"OV7670 TEST");
LCD_ShowString(60,90,200,200,16,"ATOM@ALIENTEK");
LCD_ShowString(60,110,200,200,16,"2012/10/31");    
LCD_ShowString(60,130,200,200,16,"Use USMART To Set!");  
   LCD_ShowString(60,150,200,200,16,"OV7670 Init...");  
while(SD_Initialize()!=0)//检测不到SD卡
{
LCD_ShowString(60,130,200,200,16, "SD Card Failed!");
delay_ms(500);
LCD_ShowString(60,130,200,200,16,"Please Check!      ");
delay_ms(500);
LED0=!LED0;//DS0闪烁
}
//检测SD卡成功      
LCD_ShowString(60,130,200,200,16,"SD Card Checked OK ");
if(f_mount(0,&fs))
{
LCD_ShowString(60,150,200,200,16,"SD Card NO");
}
newfile();
// delay_ms(10);
// newwenjian();
// f_close(&fp);
//write_file();
// read_file(); 
while(OV7670_Init())//初始化OV7670
{
LCD_ShowString(60,150,200,200,16,"OV7670 Error!!");
delay_ms(200);
    LCD_Fill(60,230,239,246,WHITE);
delay_ms(200);
}
  LCD_ShowString(60,150,200,200,16,"OV7670 Init OK");
delay_ms(1500);         
Timerx_Init(10000,7199); //TIM3,10Khz计数频率,1秒钟中断   
EXTI15_Init(); //使能定时器捕获
OV7670_Window_Set(10,174,240,320); //设置窗口   
   OV7670_CS=0;    
  while(1)
{
key=0;
key=KEY_Scan();
// key=1;
if(key==1)
{
f_mount(0,&fs);
camera_new_pathname(pname);
LED1=!LED1;
if(bmp_encode(pname,0,0,240,320,0))//拍照有误
{
printf("%s","拍照失败");
LCD_ShowString(40,130,240,12,12,"写入文件错误!");  
}else 
{
printf("%s","拍照成功");
LCD_ShowString(40,130,240,12,12,"拍照成功!");
LCD_ShowString(40,150,240,12,12,"保存为:");
  LCD_ShowString(40+42,150,240,12,12,pname);     
//  BEEP=1; //蜂鸣器短叫,提示拍照完成
delay_ms(100);
  }
}
  camera_refresh(); //更新显示  
  if(i!=ov_frame) //DS0闪烁.
{
i=ov_frame;
LED0=!LED0;
  }
}    
}
回复 支持 反对

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2201
金钱
2201
注册时间
2012-2-8
在线时间
35 小时
发表于 2013-2-16 18:41:54 | 显示全部楼层
"四字节对齐不明白"

为什么不自己用百度或者谷歌搜索一下?
https://github.com/roxma
回复 支持 反对

使用道具 举报

14

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2013-1-19
在线时间
0 小时
 楼主| 发表于 2013-2-16 20:07:49 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
上网查了查4字节对齐 但想了想 就算没有进行4字节对齐 也不之一出现在printf卡死现象 最多只是运行速度减慢啊??
回复 支持 反对

使用道具 举报

14

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2013-1-19
在线时间
0 小时
 楼主| 发表于 2013-2-16 20:08:26 | 显示全部楼层
回复【4楼】Pony279:
---------------------------------
谢谢指点 不过仍然有问题 问什么会出现卡死现象??
回复 支持 反对

使用道具 举报

14

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2013-1-19
在线时间
0 小时
 楼主| 发表于 2013-2-17 16:06:33 | 显示全部楼层
问题解决了 的确是四字节对齐 申请一个u32的字符数组就可以了
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-22 06:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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