您好!
战舰中的所有例程都能顺利编译,没有半点问题,如果使用下面红色部分定义的字符串,能通过编译,所有程序模块运行正常, 但想把时间和采集的变量数据用蓝色的格式化函数处理时编译通不过,提示出错的就是下面sprintf函数。
我的主函数如下:
unsigned char buf[100];
sprintf(buf,"RTC TIME:%04d %02d %02d %02d %02d %02d",calendar.year,calendar.month,calendar.date,calendar.hour,calendar.min,calendar.sec);
unsigned char shu[20];
char shu[20]="2013 08 16 12 NS28 EM89";
int main(void)
{
u8 t=0;
delay_init(); //延时函数初始化
NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(9600); //串口初始化为9600
LED_Init(); //LED端口初始化
LCD_Init();
KG_Init();
Adc_Init();
RTC_Init();
//显示时间
  OINT_COLOR=BLUE;//设置字体为蓝色
LCD_ShowString(1,1,200,11,16," - - /");
  OINT_COLOR=RED;//设置字体为红色
LCD_ShowString(88,1,200,8,16," : : ");
while(1)
{
if(t!=calendar.sec) //如果 calendar日历
{
t=calendar.sec; //时间t在正秒时
LCD_ShowNum(1,1,calendar.w_year,4,16); //显示年
LCD_ShowNum(40,1,calendar.w_month,2,16); //显示月
LCD_ShowNum(64,1,calendar.w_date,2,16); //显示日
LCD_ShowNum(88,1,calendar.hour,2,16); //显示小时
LCD_ShowNum(112,1,calendar.min,2,16); //显示分
LCD_ShowNum(136,1,calendar.sec,2,16); //显示秒
LED0=!LED0;
}
else if (chf==1) //
{
xianshi(); //执行ADC的采集和显示程序
f_mount(0,&fs); //在sd卡的0逻辑盘上注册工作区域,挂载o盘即sd卡
res=f_open(&fsrc,"0:/shj/a.txt",FA_OPEN_ALWAYS|FA_WRITE); //以写的方式打开sd卡上shj文件夹中名为a的文件
if(res==FR_OK) //如果文件成功打开
{
res=f_lseek(&fsrc,fsrc.fsize); //将移动文件指针函数,的指针移到文件末尾,否则写入的新数据会覆盖原数据
res=f_write(&fsrc,buf,strlen(buf),&bw);
}
f_close(&fsrc); //关闭文件
LED3=!LED3;
delay_ms(200);
}
else //否则
{
continue; //跳过以下部分回到上面继续循环 continue结束本次循环
}
}
我把战舰板中的RTC,ADC,LDC,SD,及文件系统fatfs各模块稍加修改,加入了屏幕显示控制KG,能顺利编译,程序运行正常。
如果定义一个数组 unsigned char buff[26]="2013,08,28,16,28.2798,hao";能把2013,08,28,16,28.2798,hao写入SD卡中
只是上面蓝色部分报错,好久没有找出问题所在。
|