OpenEdv-开源电子网

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

mini————调用sd卡显示图片,上一张下一张这样运行9边之后就乱码卡死; 向各位大神求助这是问什么907625158@qq.com

[复制链接]

2

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2016-3-27
在线时间
9 小时
发表于 2016-3-27 00:24:19 | 显示全部楼层 |阅读模式
3金钱
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "lcd.h"
#include "key.h"
#include "usmart.h"
#include "malloc.h"  
#include "MMC_SD.h"
#include "ff.h"  
#include "exfuns.h"
#include "fontupd.h"
#include "text.h"       
#include "piclib.h"       
#include "string.h"       
#include "24cxx.h"
#include "myiic.h"
#include "touch.h"
/*****************************定义函数****************************************/
void show_image(u8 *route,u16 x,u16 y,u16 z,u16 w);
u8 copy(u8 *name);
void Next_one();
/****************************************************************************/

//ALIENTEK Mini STM32开发板范例代码31
//图片显示 实验  
//技术支持:www.openedv.com
//广州市星翼电子科技有限公司  
                                                                        
//得到path路径下,目标文件的总个数
//path:路径                    
//返回值:总有效文件数
/*****************初始定义*****************************/
        u8 res;
        DIR picdir;                         //图片目录
        FILINFO picfileinfo;//文件信息
        u8 *fn;                           //长文件名
        u8 *fn1;
        u8 *fn11;
  u8 *pname;                        //带路径的文件名
        u8 *ddd0="0:/PICTURE/1.jpg";
        u8 *ddd1="0:/PICTURE/2.jpg";
        u8 *ddd2="0:/PICTURE/3.jpg";
        u8 *ddd3="0:/PICTURE/4.jpg";       
        u8 *ddd[32]={"0:/PICTURE/1.jpg","0:/PICTURE/2.jpg","0:/PICTURE/3.jpg","0:/PICTURE/4.jpg","0:/PICTURE/5.jpg","0:/PICTURE/6.jpg","0:/PICTURE/7.jpg","0:/PICTURE/8.jpg","0:/PICTURE/9.jpg","0:/PICTURE/10.jpg","0:/PICTURE/11.jpg","0:/PICTURE/12.jpg",
        "0:/PICTURE/13.jpg","0:/PICTURE/14.jpg","0:/PICTURE/15.jpg","0:/PICTURE/16.jpg"};
       
                char count=0;                                        //标记显示的位置
       
        u16 totpicnum;                 //图片文件总数

        u8 key;                                //键值
        u8 pause=0;                        //暂停标记
        u8 t;
        u8 floag;
       
        u16 *picindextbl;        //图片索引表        
/*************************************************************/

       
       
/**************************************************************/       
       
/**********************************************/
u8 copy(u8 *name)
{
       
        strcpy((char*)pname,(char*)name);                                //复制路径(目录)
        return *pname;
}
/**********************************************/
/********************************************/
void  star()
{
        u8  temp;                                                                                                //控制是否跳出点餐
        tp_dev.scan(0);                

                if(tp_dev.sta&TP_PRES_DOWN)                        //触摸屏被按下
                {       
                         if(tp_dev.x[0]<lcddev.width&&tp_dev.y[0]<lcddev.height)
                        {       
                                if(tp_dev.x[0]>180&&tp_dev.y[0]<280)
                                {
                                show_image(ddd[1],0,0,240,320);               
                                                temp=1;
                        }        }        }       

                       
                       
        while(temp==1);
}


/****************显示图片**********************/
void show_image(u8 *route,u16 x,u16 y,u16 z,u16 w)
{
       
        piclib_init();                                                                                //初始化画图          
        totpicnum=1;
        picfileinfo.lfsize=_MAX_LFN*2+1;                                                //长文件名最大长度
        picfileinfo.lfname=mymalloc(picfileinfo.lfsize);        //为长文件缓存区分配内存
        pname=mymalloc(picfileinfo.lfsize);                                //为带路径的文件名分配内存
        picindextbl=mymalloc(2*totpicnum);                                //申请2*totpicnum个字节的内存,用于存放图片索引                        
        *pname=        copy(route);               
        ai_load_picfile(pname,x,y,z,w,1);
       
}
/**************************显示按下一张****************************************/
void Next_one()
{
        u16 temp;

        u16 x=0;
        u16 y=0;
        // u16 record;                                        //记录目标
        x=0; y=0;
        if(count == 15) {count=11;}
        if(count <= 0)        {count=0; }
       
        if(floag == 1) { count = count;   }
        if(floag == 0) { count = count-8; }
       
       
        {
       
        for(temp=0;temp<2;temp++)
        {
                show_image(ddd[count],x,y,80,80);
                count++;               
                x=x+80;               
        }

        x=x-160;
        y=y+80;
       
        for(temp=0;temp<2;temp++)
        {
                show_image(ddd[count],x,y,80,80);
                x=x+80;
                count++;
        }

        myfree(picfileinfo.lfname);                //释放内存                            
        myfree(pname);                                                                //释放内存                            
        myfree(picindextbl);                                        //释放内存       
       
}
}

       
       
        /**********************************end*************************************/
        /****************************按下shang一张*******************************************/
/*
u16 fuck()
{
        u8 check;                                                        //用作数据的显示
        u8 i,j;
        u16 x=0,y=0;
        if(floag==1)
        {
                for(j=0;j<2;j++)
                {
                        show_image(ddd,x,y,80,80);
                        x=x+80;                       
                }
                x=x-160;
                y=y+80;
        }
       
       
}
*/

        /*********************************end**************************************/

int main(void)
{
                                      
        delay_init();                     //延时函数初始化          
  tp_dev.init();        //触摸屏初始化
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
        uart_init(9600);                 //串口初始化为9600                         
        LCD_Init();                        //初始化液晶
        LED_Init();         //LED初始化         
        KEY_Init();                        //按键初始化                                                                                                                      
        usmart_dev.init(72);//usmart初始化       
        mem_init();                        //初始化内部内存池       
        exfuns_init();                //为fatfs相关变量申请内存  
  f_mount(fs[0],"0:",1);        //挂载SD卡
        f_mount(fs[1],"1:",1);         //挂载FLASH.          
        POINT_COLOR=RED;  
         
        while(font_init())         //检查字库
        {            
                LCD_ShowString(60,50,200,16,16,"Font Error!");
               
                delay_ms(200);                                  
                LCD_Fill(60,50,240,66,WHITE);//清除显示             
                delay_ms(200);                                  
        }           
           
                                                                                                                                                                                                                                                                       
        while(1)
        {
        //show_image(ddd[0],0,0,240,320);
       
                //star();

                tp_dev.scan(0);
                if(tp_dev.sta&TP_PRES_DOWN)                        //触摸屏被按下
                {
               
                         if(tp_dev.x[0]<lcddev.width&&tp_dev.y[0]<lcddev.height)
                        {       
                                if(tp_dev.x[0]>180&&tp_dev.y[0]<280)
                                {
                                        floag = 1;
                                        Next_one();
                                               
                        }       
                                else
                                {
                                        floag = 0;               
                                        Next_one();
                                }
                       
                        }       
       

                }

        }
        }

程序写的不好,希望不要批评。真心向各位大神求助

最佳答案

查看完整内容[请看2#楼]

谢谢,问题已经找到
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2016-3-27
在线时间
9 小时
 楼主| 发表于 2016-3-27 00:24:20 | 显示全部楼层
回复

使用道具 举报

2

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2016-3-27
在线时间
9 小时
 楼主| 发表于 2016-3-27 00:29:16 | 显示全部楼层
程序只将显示mini库函数的显示图片改动了,
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-3-29 22:18:41 | 显示全部楼层
仿真跟踪一下
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 05:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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