OpenEdv-开源电子网

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

STM32F767NIH6+TFT+GSM+GPRS+蓝牙+GPS+FM+WM8978+SHT20+MPU9250+HMC5883+BMP180+8002+SD+AP3216+0V2640+N25Q256+IS42S22800G...

  [复制链接]

19

主题

490

帖子

4

精华

论坛元老

Rank: 8Rank: 8

积分
5174
金钱
5174
注册时间
2016-7-21
在线时间
1147 小时
发表于 2017-6-27 11:03:36 | 显示全部楼层 |阅读模式
本帖最后由 天道酬勤8988 于 2017-6-27 11:58 编辑

加入论坛也一年多了在坛友和原子老师的帮助下解决了很多困惑学到了很多知识,此次综合在电子方面的学习制作一个自名为"MINI"的电子作品,在此发帖与志同道合的朋友交流学习,此次投入重大希望在作品完成之际有喜欢的朋友收藏学习“MINI”来犒劳小弟的劳动力。由于本人语言组织能力差此次发帖后续将采用短视频的方式更新。
整体尺寸10*5.4CM集成:锂电池供电和充电+STM32F767NIH6+TFT+GSM+GPRS+蓝牙+GPS+FM+WM8978+SHT20+MPU9250+HMC5883+BMP180+8002+SD+AP3216+0V2640+N25Q256+IS42S22800G...,目前所有硬件调试完毕,正在基于UCOSIII+STEMWIN5.3编写代码。现已实验:
1、收音机播放,支持耳机和扬声器(板载功放),耳机和功放播放声音可单独控制。
2、播放音乐,支持耳机和扬声器(板载功放),耳机和功放播放声音可单独控制。
3、拨打/接听电话,支持耳机和扬声器(板载功放),耳机和功放播放声音可单独控制。
4、发送/接收短信。
5、GPRS联网。
6、GPS定位,地速,时间和日期。
7、温度湿度气压海拔。
8、九轴加速度。
9、绝对航向。
10、手势操作。
11、距离检测,光线检测。
12、蓝牙串口传输。
13、LCD显示和触摸屏操作。14、USB HOST。
15、USB SLAVE。
...
其余的继续在调试持续更新请关注...



背面

背面

正面

正面
@野生程序员
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

19

主题

490

帖子

4

精华

论坛元老

Rank: 8Rank: 8

积分
5174
金钱
5174
注册时间
2016-7-21
在线时间
1147 小时
 楼主| 发表于 2017-6-27 15:39:54 | 显示全部楼层
本帖最后由 天道酬勤8988 于 2017-6-27 15:41 编辑

MPU9250调试视频:

@野生程序员
回复 支持 1 反对 0

使用道具 举报

19

主题

490

帖子

4

精华

论坛元老

Rank: 8Rank: 8

积分
5174
金钱
5174
注册时间
2016-7-21
在线时间
1147 小时
 楼主| 发表于 2017-6-27 11:14:01 | 显示全部楼层
本帖最后由 天道酬勤8988 于 2017-6-27 11:17 编辑

第一个核心板直接焊接的大概调试了半个月出了问题,邮票孔不会拆,整个底板和核心板都报废了,后来又就换成了排针连接,核心板出问题可以直接更换,核心板奖金300大元那个心疼
360截图20170627111703744.jpg
@野生程序员
回复 支持 1 反对 0

使用道具 举报

5

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2017-6-2
在线时间
21 小时
发表于 2017-6-30 23:02:49 | 显示全部楼层
请问你是买500那块板子学的吗
回复 支持 0 反对 1

使用道具 举报

19

主题

490

帖子

4

精华

论坛元老

Rank: 8Rank: 8

积分
5174
金钱
5174
注册时间
2016-7-21
在线时间
1147 小时
 楼主| 发表于 2017-6-27 11:18:29 | 显示全部楼层
排针连接
360截图20170627111141130.jpg
360截图20170627111108042.jpg
360截图20170627111132343.jpg
回复 支持 反对

使用道具 举报

35

主题

309

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2641
金钱
2641
注册时间
2016-8-10
在线时间
470 小时
发表于 2017-6-27 11:37:03 | 显示全部楼层
回复 支持 反对

使用道具 举报

19

主题

490

帖子

4

精华

论坛元老

Rank: 8Rank: 8

积分
5174
金钱
5174
注册时间
2016-7-21
在线时间
1147 小时
 楼主| 发表于 2017-6-27 15:43:14 | 显示全部楼层
STEMWIN移植视频:

@野生程序员
回复 支持 反对

使用道具 举报

11

主题

108

帖子

0

精华

高级会员

Rank: 4

积分
627
金钱
627
注册时间
2016-2-5
在线时间
100 小时
发表于 2017-6-27 18:11:45 来自手机 | 显示全部楼层
大佬,大佬
回复 支持 反对

使用道具 举报

40

主题

250

帖子

0

精华

高级会员

Rank: 4

积分
854
金钱
854
注册时间
2016-11-13
在线时间
705 小时
发表于 2017-6-27 18:58:11 | 显示全部楼层
学一年多就这样了,实在佩服啊
回复 支持 反对

使用道具 举报

17

主题

329

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2530
金钱
2530
注册时间
2016-3-6
在线时间
392 小时
发表于 2017-6-27 20:02:49 | 显示全部楼层
很强势,关注学习
路漫漫其修远兮,吾将上下而求索。
回复 支持 反对

使用道具 举报

95

主题

549

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3293
金钱
3293
注册时间
2016-1-7
在线时间
541 小时
发表于 2017-6-28 08:11:39 | 显示全部楼层
不错,核心板没重做吗?好像用原子哥的。
回复 支持 反对

使用道具 举报

19

主题

490

帖子

4

精华

论坛元老

Rank: 8Rank: 8

积分
5174
金钱
5174
注册时间
2016-7-21
在线时间
1147 小时
 楼主| 发表于 2017-6-28 09:18:02 | 显示全部楼层
cmz 发表于 2017-6-27 18:58
学一年多就这样了,实在佩服啊

没日没夜的学啊
@野生程序员
回复 支持 反对

使用道具 举报

19

主题

490

帖子

4

精华

论坛元老

Rank: 8Rank: 8

积分
5174
金钱
5174
注册时间
2016-7-21
在线时间
1147 小时
 楼主| 发表于 2017-6-28 09:18:41 | 显示全部楼层
challenger 发表于 2017-6-28 08:11
不错,核心板没重做吗?好像用原子哥的。

核心板适型找的
@野生程序员
回复 支持 反对

使用道具 举报

19

主题

490

帖子

4

精华

论坛元老

Rank: 8Rank: 8

积分
5174
金钱
5174
注册时间
2016-7-21
在线时间
1147 小时
 楼主| 发表于 2017-6-28 09:19:23 | 显示全部楼层
WM8978播放音乐实验:

@野生程序员
回复 支持 反对

使用道具 举报

95

主题

549

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3293
金钱
3293
注册时间
2016-1-7
在线时间
541 小时
发表于 2017-6-28 10:21:04 | 显示全部楼层
本帖最后由 challenger 于 2017-6-28 10:22 编辑

很好,我只设计过F103,F407的主板,F767还没做过,改天也来做一板。 不知F767及所带的SRAM芯片成本各是多少钱一片?是否就这两个芯片成本价最高?
回复 支持 反对

使用道具 举报

19

主题

490

帖子

4

精华

论坛元老

Rank: 8Rank: 8

积分
5174
金钱
5174
注册时间
2016-7-21
在线时间
1147 小时
 楼主| 发表于 2017-6-28 10:53:27 | 显示全部楼层
challenger 发表于 2017-6-28 10:21
很好,我只设计过F103,F407的主板,F767还没做过,改天也来做一板。 不知F767及所带的SRAM芯片成本各 ...

SDRAM不贵的 就是F7芯片贵点
@野生程序员
回复 支持 反对

使用道具 举报

95

主题

549

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3293
金钱
3293
注册时间
2016-1-7
在线时间
541 小时
发表于 2017-6-28 11:17:17 | 显示全部楼层
天道酬勤8988 发表于 2017-6-28 10:53
SDRAM不贵的 就是F7芯片贵点

F7现在多少钱一片?
回复 支持 反对

使用道具 举报

21

主题

243

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2015-3-12
在线时间
166 小时
发表于 2017-6-28 13:17:38 | 显示全部楼层
邮票孔要用风枪拆~!~!而且要仔细
回复 支持 反对

使用道具 举报

19

主题

490

帖子

4

精华

论坛元老

Rank: 8Rank: 8

积分
5174
金钱
5174
注册时间
2016-7-21
在线时间
1147 小时
 楼主| 发表于 2017-6-28 13:53:47 | 显示全部楼层
challenger 发表于 2017-6-28 11:17
F7现在多少钱一片?

BGA的应该上百了
@野生程序员
回复 支持 反对

使用道具 举报

95

主题

549

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3293
金钱
3293
注册时间
2016-1-7
在线时间
541 小时
发表于 2017-6-28 13:58:54 | 显示全部楼层

价格不便宜,如果不是项目非用不可,一般为节省成本,估计很难去考虑它。
回复 支持 反对

使用道具 举报

19

主题

490

帖子

4

精华

论坛元老

Rank: 8Rank: 8

积分
5174
金钱
5174
注册时间
2016-7-21
在线时间
1147 小时
 楼主| 发表于 2017-6-29 21:41:19 | 显示全部楼层
本帖最后由 天道酬勤8988 于 2017-6-30 22:51 编辑

硬件解码AVI:贴上颜色转换核心代码

ycomp = (int32_t)(*(pLum +j));

            *(__IO uint16_t *)pOutAddr =
              ((CLAMP(ycomp + c_red) >> 3) << JPEG_RED_OFFSET)     | \
              ((CLAMP( ycomp + c_green) >> 2) << JPEG_GREEN_OFFSET) | \
              ((CLAMP(ycomp + c_blue) >> 3) << JPEG_BLUE_OFFSET);
            /**********/
            ycomp = (int32_t)(*(pLum +j +1));

            *((__IO uint16_t *)(pOutAddr + 2)) =
              ((CLAMP(ycomp + c_red) >> 3) << JPEG_RED_OFFSET)     | \
              ((CLAMP( ycomp + c_green) >> 2) << JPEG_GREEN_OFFSET) | \
              ((CLAMP(ycomp + c_blue) >> 3) << JPEG_BLUE_OFFSET);

            /**********/
            ycomp = (int32_t)(*(pLum +j +8));

            *(__IO uint16_t *)pOutAddr2 =
              ((CLAMP(ycomp + c_red) >> 3) << JPEG_RED_OFFSET)     | \
              ((CLAMP( ycomp + c_green) >> 2) << JPEG_GREEN_OFFSET) | \
              ((CLAMP(ycomp + c_blue) >> 3) << JPEG_BLUE_OFFSET);

            /**********/
            ycomp = (int32_t)(*(pLum +j +8 +1));

            *((__IO uint16_t *)(pOutAddr2 +2)) =
              ((CLAMP(ycomp + c_red) >> 3) << JPEG_RED_OFFSET)     | \
              ((CLAMP( ycomp + c_green) >> 2) << JPEG_GREEN_OFFSET) | \
              ((CLAMP(ycomp + c_blue) >> 3) << JPEG_BLUE_OFFSET);   



@野生程序员
回复 支持 反对

使用道具 举报

19

主题

490

帖子

4

精华

论坛元老

Rank: 8Rank: 8

积分
5174
金钱
5174
注册时间
2016-7-21
在线时间
1147 小时
 楼主| 发表于 2017-6-30 22:53:38 | 显示全部楼层
本帖最后由 天道酬勤8988 于 2017-7-1 08:32 编辑

开始搭建软件主框架,插播下STemwin知识:
先看下最终需要实现的效果:
未按下时
图片:360截图20170630222341186.jpg[[url=]删除[/url]]




按下时
图片:360截图20170630222348934.jpg[[url=]删除[/url]]




上面图标使用的是Button按钮控件,STemwin自带的有ICONVIEW控件个人觉得使用不方便就使用按钮代替。
先使用BUILDE软件排版:
图片:360截图20170630222812601.jpg[[url=]删除[/url]]




下载到单片机显示:
图片:360截图20170630222332446.jpg[[url=]删除[/url]]




按钮的颜色使用的自定义的,背景和其他显示这次不做介绍,只关注这九个按钮,默认按钮是上图所示,加入位图显示如下
图片:360截图20170630222322812.jpg[[url=]删除[/url]]




第一个图标是在按钮上添加位图,使用的是BNG图片,但是按钮已经赋予了颜色图片只能显示在按钮之上,第三个按钮是使用按钮自绘皮肤,可以绘制jpg、bmp、bng图片,可以去掉背景显示,这样就达到了我们想要的效果,自绘皮肤使用方式:
在初始化窗口时调用WM_INIT_DIALOG消息时
    hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1);
    BUTTON_SetFont(hItem, &GUI_FontHZ16);
    BUTTON_SetText(hItem, "相册");
加入自绘皮肤
  BUTTON_SetSkin(hItem, _DrawSkinFlex_BUTTON2);//自绘皮肤函数
BUTTON_SetSkin第一个参数为按钮的句柄第二个为自绘皮肤回掉函数
_DrawSkinFlex_BUTTON2函数:

//BUTTON按钮自绘皮肤回调函数
int _DrawSkinFlex_BUTTON2(const WIDGET_ITEM_DRAW_INFO * pDrawItemInfo) {

// GUI_RECT Rect={0,56,56,72};//文字显示的区域
const char *txt="相册";
  
switch (pDrawItemInfo->Cmd) {
  
case WIDGET_ITEM_CREATE: //创建小工具后立即发送。
     
break;  
case WIDGET_ITEM_DRAW_TEXT: //换肤函数将绘制可选的按钮文本。
   
//  GUI_SetTextMode(GUI_TEXTMODE_NORMAL|GUI_TEXTMODE_TRANS);
//  GUI_SetFont(&GUI_FontHZ12);
//  GUI_DispStringAt(txt,10,10);      
break;
case WIDGET_ITEM_DRAW_BACKGROUND : //换肤函数将绘制背景。
   
   switch(pDrawItemInfo->ItemIndex)
   {
    case BUTTON_SKINFLEX_PI_PRESSED: //已按下状态的属性。

    GUI_DrawBitmap(&bmXiangCe1, 0, 0); //按下后的图片

     GUI_SetTextMode(GUI_TEXTMODE_NORMAL|GUI_TEXTMODE_TRANS);
     GUI_SetFont(&GUI_FontHZ12);   
     GUI_SetColor(BUTTON_TXT_AnXia_Clocr);

     GUI_DispStringInRect(txt, &BUTTON_TXT_Rect, GUI_TA_HCENTER | GUI_TA_VCENTER);

    break;

    case BUTTON_SKINFLEX_PI_FOCUSSED:// 已聚焦状态的属性。

    GUI_DrawBitmap(&bmXiangCe0, 0, 0); //未按下时的图片

     GUI_SetTextMode(GUI_TEXTMODE_NORMAL|GUI_TEXTMODE_TRANS);
     GUI_SetFont(&GUI_FontHZ12);     
     GUI_SetColor(BUTTON_TXT_JuJiao_Clocr);

     GUI_DispStringInRect(txt, &BUTTON_TXT_Rect, GUI_TA_HCENTER | GUI_TA_VCENTER);

    break;   
    case BUTTON_SKINFLEX_PI_ENABLED:// 启用状态的属性。

      GUI_DrawBitmap(&bmXiangCe0, 0, 0); //按钮可用时的图片

     GUI_SetTextMode(GUI_TEXTMODE_NORMAL|GUI_TEXTMODE_TRANS);
     GUI_SetFont(&GUI_FontHZ12);     
     GUI_SetColor(BUTTON_TXT_QiYong_Clocr);

     GUI_DispStringInRect(txt, &BUTTON_TXT_Rect, GUI_TA_HCENTER | GUI_TA_VCENTER);

    break;   
    case BUTTON_SKINFLEX_PI_DISABLED:// 禁用状态的属性。
     GUI_DrawBitmap(&bmXiangCe0, 0, 0); //按钮不可用时的图片

     GUI_SetTextMode(GUI_TEXTMODE_NORMAL|GUI_TEXTMODE_TRANS);
     GUI_SetFont(&GUI_FontHZ12);     
     GUI_SetColor(BUTTON_TXT_JinYong_Clocr);
     GUI_DispStringInRect(txt, &BUTTON_TXT_Rect, GUI_TA_HCENTER | GUI_TA_VCENTER);
    break;   

   }

break;

case WIDGET_ITEM_DRAW_BITMAP://换肤函数将绘制可选的按钮位图。

break;
default:
return BUTTON_DrawSkinFlex(pDrawItemInfo); //其他命令将执行默认设置  
}
return 0;
}
@野生程序员
回复 支持 反对

使用道具 举报

5

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2017-6-2
在线时间
21 小时
发表于 2017-6-30 22:59:02 | 显示全部楼层
回复 支持 反对

使用道具 举报

19

主题

490

帖子

4

精华

论坛元老

Rank: 8Rank: 8

积分
5174
金钱
5174
注册时间
2016-7-21
在线时间
1147 小时
 楼主| 发表于 2017-7-1 08:32:07 | 显示全部楼层
小恒心 发表于 2017-6-30 23:02
请问你是买500那块板子学的吗

推荐使用阿波罗开发板学习,资料多,例程多,教程多,很容易掌握STM32
@野生程序员
回复 支持 反对

使用道具 举报

53

主题

566

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2092
金钱
2092
注册时间
2017-2-11
在线时间
306 小时
发表于 2017-7-1 16:22:40 | 显示全部楼层
6666
回复 支持 反对

使用道具 举报

19

主题

490

帖子

4

精华

论坛元老

Rank: 8Rank: 8

积分
5174
金钱
5174
注册时间
2016-7-21
在线时间
1147 小时
 楼主| 发表于 2017-7-1 21:41:16 | 显示全部楼层
本帖最后由 天道酬勤8988 于 2017-7-1 21:47 编辑

主界面滑动页面设计:主界面滑动页面设计:
滑动核心代码:
创建一个单独的任务
void EMWIN_task(void *p_arg)
{
OS_ERR err;
GUI_PID_STATE State;
long  x1=0, x2=0, x3=0, x4=0, x5=0;
char flag = 1;
char flag1=0;
char page =1;
GUI_RECT pRect={0,0,10,10};
WM_HWIN _hwin;
while (1)
{
  _hwin = WM_GetFocussedWindow();//获取当前聚焦窗口
  if(_hwin==ZhuJieMian_hWin)
  {
   printf("已聚焦在主界面\r\n");
  GUI_TOUCH_GetState(&State);
  if (State.Pressed == 1)
  {
   flag1=1;
   if (flag == 1)
   {
    flag = 0;
    x1 = State.x;//储存第一个触点
    x4 = WM_GetWindowOrgX(ZhuJieMian_hWin);//当前窗口X坐标
   }
   x2 = State.x;

   if (x1 != x4)
   {
    if (page==1)
     WM_MoveTo(ZhuJieMian_hWin, x2-x1-320, 0); //移动窗口
    else
    if (page == 2)
     WM_MoveTo(ZhuJieMian_hWin, x2 - x1-320-320, 0);

   }
  }
  else
  {
   x4 = WM_GetWindowOrgX(ZhuJieMian_hWin);


   if (page == 1)
   {
//    printf("第一页\r\n");
    if ((x2 - x1) >= 1)
     WM_MoveTo(ZhuJieMian_hWin, 0-320, 0);
    else
    if ((x2 - x1) <= -100)
    {
     page = 2;
     WM_MoveTo(ZhuJieMian_hWin, -320-320, 0);
    }
    else
     WM_MoveTo(ZhuJieMian_hWin, 0-320, 0);

   }
   else if (page == 2)
   {

//    printf("第二页\r\n");
    if ((x2 - x1) >= 100)
    {
     page = 1;
     WM_MoveTo(ZhuJieMian_hWin, 0-320, 0);

    }     
    else
    if ((x2 - x1) <=0)
    {

     WM_MoveTo(ZhuJieMian_hWin, -320-320, 0);
    }else
     WM_MoveTo(ZhuJieMian_hWin, -320-320, 0);

   }

   x1 = x2 = 0;
   flag = 1;

  }
}

  OSTimeDlyHMSM(0,0,0,10,OS_OPT_TIME_PERIODIC,&err
}
}






@野生程序员
回复 支持 反对

使用道具 举报

0

主题

17

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2016-4-3
在线时间
74 小时
发表于 2017-7-2 13:31:26 | 显示全部楼层
棒!
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2017-7-2
在线时间
7 小时
发表于 2017-7-2 19:52:54 来自手机 | 显示全部楼层
这个是我之前做的一个界面
IMG_20170702_195105.jpg
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2017-7-2
在线时间
7 小时
发表于 2017-7-2 19:54:25 来自手机 | 显示全部楼层
楼主这个板子花了几多大洋?
回复 支持 反对

使用道具 举报

19

主题

490

帖子

4

精华

论坛元老

Rank: 8Rank: 8

积分
5174
金钱
5174
注册时间
2016-7-21
在线时间
1147 小时
 楼主| 发表于 2017-7-3 13:54:09 | 显示全部楼层
lili1013 发表于 2017-7-2 19:54
楼主这个板子花了几多大洋?

上千大洋是有了
@野生程序员
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2017-7-2
在线时间
7 小时
发表于 2017-7-3 14:09:03 来自手机 | 显示全部楼层
玩这些还是比较烧钱的
回复 支持 反对

使用道具 举报

19

主题

490

帖子

4

精华

论坛元老

Rank: 8Rank: 8

积分
5174
金钱
5174
注册时间
2016-7-21
在线时间
1147 小时
 楼主| 发表于 2017-7-4 11:48:27 | 显示全部楼层
lili1013 发表于 2017-7-3 14:09
玩这些还是比较烧钱的

你上面的图片中是使用什么芯片做的?
@野生程序员
回复 支持 反对

使用道具 举报

30

主题

158

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1525
金钱
1525
注册时间
2015-11-11
在线时间
163 小时
发表于 2017-7-4 14:02:00 | 显示全部楼层
lili1013 发表于 2017-7-2 19:52
这个是我之前做的一个界面

你这个代码可以参考下吗
好好学习
回复 支持 反对

使用道具 举报

4

主题

40

帖子

0

精华

高级会员

Rank: 4

积分
920
金钱
920
注册时间
2014-1-9
在线时间
114 小时
发表于 2017-7-4 22:26:50 | 显示全部楼层
相当硬气,,,不过  那些伸手党 要失望了
回复 支持 反对

使用道具 举报

19

主题

490

帖子

4

精华

论坛元老

Rank: 8Rank: 8

积分
5174
金钱
5174
注册时间
2016-7-21
在线时间
1147 小时
 楼主| 发表于 2017-7-6 10:33:28 | 显示全部楼层
关于图标和背景显示:
方法一:
准备好需要显示的图片使用BmpCvtST.exe生成C文件
微信截图_20170630195608.png
微信截图_20170630195631.jpg
将C文件添加到工程里
360截图20170701141750838.jpg
360截图20170706102331008.jpg
添加到按钮自绘皮肤函数里
360截图20170706102506175.jpg
在初始化按钮是设置自绘函数
360截图20170706102619142.jpg
这种方式图片文件都在工程里比较占FLASH内存,下面介绍方法二将图片存放在内存卡或外部FLASH里
第二种方法:
把图片放在内存卡的某个目录里,然后在开机时将图片加载到SDRAM里:

FIL *ZhuJieMian_TuBiao_File;
APP_TuBiao *ZhuJieMian_TuBiao_BUF;
u8 ZhuJieMian_TuBiao_Flag[ZhuJieMian_TuBiao_NUM]={0};

//图片存放的地址
u8* const ZhuJieMian_TuBiao_Addr[]=
{
"0:/SYSTEM/APP/ICOS/GongJuXiang0.png",
"0:/SYSTEM/APP/ICOS/GongJuXiang1.png",
        
"0:/SYSTEM/APP/ICOS/XiangCe0.png",
"0:/SYSTEM/APP/ICOS/XiangCe1.png",
        
"0:/SYSTEM/APP/ICOS/ZaoXiangJi0.png",
"0:/SYSTEM/APP/ICOS/ZaoXiangJi1.png",
        
"0:/SYSTEM/APP/ICOS/WenJianLiuLan0.png",
"0:/SYSTEM/APP/ICOS/WenJianLiuLan1.png",        

"0:/SYSTEM/APP/ICOS/YinYue0.png",
"0:/SYSTEM/APP/ICOS/YinYue1.png",

"0:/SYSTEM/APP/ICOS/ShiPin0.png",
"0:/SYSTEM/APP/ICOS/ShiPin1.png",
        
"0:/SYSTEM/APP/ICOS/LianXiRen0.png",
"0:/SYSTEM/APP/ICOS/LianXiRen1.png",        
        
"0:/SYSTEM/APP/ICOS/DianHua0.png",
"0:/SYSTEM/APP/ICOS/DianHua1.png",

"0:/SYSTEM/APP/ICOS/DuanXin0.png",
"0:/SYSTEM/APP/ICOS/DuanXin1.png",
        
};



/**********************************************************************************************************
*        函 数 名: u8 Get_ZhuJieMian_TueBiao(void)
*        功能说明: 获取主界面图片数据
*        形    参:
*        返 回 值: 0 正确 1错误
*********************************************************************************************************
*/
u8 Get_ZhuJieMian_TueBiao(void)
{
        u8 res;
        u8 i,j;
        u32 bread;
//申请文件信息内存
        ZhuJieMian_TuBiao_File=(FIL*)mymalloc(SRAMEX,sizeof(FIL));//申请内存        
        if(ZhuJieMian_TuBiao_File==0)//申请失败 返回失败
        {
                myfree(SRAMEX,ZhuJieMian_TuBiao_File);               
                return 1;
        }
        printf("文件信息内存申请成功\r\n");
        
        
//打开所有文件        并读取图片数据
  for(i=0;i<ZhuJieMian_TuBiao_NUM;i++)
        {        

                res=f_open(ZhuJieMian_TuBiao_File,(const TCHAR*)ZhuJieMian_TuBiao_Addr,FA_READ);        //打开文件        
                if(res==FR_OK)
                {
                        printf("TuBiao[%d]打开成功\r\n",i);
                        ZhuJieMian_TuBiao_BUF.TuBiao=(char*)mymalloc(SRAMEX,ZhuJieMian_TuBiao_File->obj.objsize);//申请内存        
//                        printf("TuBiao[%d]:%dB\r\n",i,ZhuJieMian_TuBiao_File->obj.objsize);
                        if(ZhuJieMian_TuBiao_BUF.TuBiao==0) //内存申请失败
                        {
                                printf("TuBiao[%d]内存申请失败\r\n",i);
                                myfree(SRAMEX,ZhuJieMian_TuBiao_BUF.TuBiao);//释放此图片内存
                                ZhuJieMian_TuBiao_Flag=0;//标记为无图标        
                                continue; //继续下一次        
                        }                        
                        
                        ZhuJieMian_TuBiao_Flag=1;                        //标记为有图标
                        f_read(ZhuJieMian_TuBiao_File,ZhuJieMian_TuBiao_BUF.TuBiao,ZhuJieMian_TuBiao_File->obj.objsize,(UINT *)&bread); //读取数据
                        f_close(ZhuJieMian_TuBiao_File);                        //关闭文件        
                        printf("TuBiao[%d]获取数据成功\r\n",i);        

                }else//有一个文件打开失败关闭文件并标记为无图标
                {        
                        printf("TuBiao[%d]打开文件失败\r\n",i);        
                        ZhuJieMian_TuBiao_Flag=0;//标记为无图标         
                        f_close(ZhuJieMian_TuBiao_File);                        //关闭文件        
                }
                                       
        }        
        myfree(SRAMEX,ZhuJieMian_TuBiao_File);               
        return 0;
}

在开机时先调用此函数然后按钮自绘时直接使用图片数组,加载到SDAM里要比内部FLASH显示快,这个方法即省了FLASH内存又提高的显示速度。

@野生程序员
回复 支持 反对

使用道具 举报

19

主题

490

帖子

4

精华

论坛元老

Rank: 8Rank: 8

积分
5174
金钱
5174
注册时间
2016-7-21
在线时间
1147 小时
 楼主| 发表于 2017-7-11 14:20:35 | 显示全部楼层
文件浏览器:
@野生程序员
回复 支持 反对

使用道具 举报

0

主题

91

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2013-8-25
在线时间
12 小时
发表于 2017-8-8 14:00:01 来自手机 | 显示全部楼层
持续关注,顶楼主
回复 支持 反对

使用道具 举报

0

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2016-11-25
在线时间
28 小时
发表于 2017-8-8 17:29:09 | 显示全部楼层
等待更新、、、、
回复 支持 反对

使用道具 举报

16

主题

173

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2441
金钱
2441
注册时间
2014-11-5
在线时间
348 小时
发表于 2017-8-10 09:37:03 | 显示全部楼层
收藏,楼主幸苦,做教程真的很难,顶
回复 支持 反对

使用道具 举报

2

主题

194

帖子

0

精华

高级会员

Rank: 4

积分
977
金钱
977
注册时间
2015-9-20
在线时间
147 小时
发表于 2017-8-10 11:23:55 | 显示全部楼层
好久没来,刚以来就看到这么硬气的帖子。。。
回复 支持 反对

使用道具 举报

1

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
123
金钱
123
注册时间
2017-8-21
在线时间
32 小时
发表于 2017-8-21 11:43:31 | 显示全部楼层
真的很不错
回复 支持 反对

使用道具 举报

129

主题

397

帖子

0

精华

高级会员

Rank: 4

积分
831
金钱
831
注册时间
2017-7-12
在线时间
150 小时
发表于 2017-9-30 14:28:40 | 显示全部楼层
这是双层板吗
回复 支持 反对

使用道具 举报

4

主题

197

帖子

0

精华

高级会员

Rank: 4

积分
977
金钱
977
注册时间
2017-3-11
在线时间
78 小时
发表于 2017-10-1 09:40:03 | 显示全部楼层
aaaaaaaaaaaaaaaaaaaaaaaa
回复 支持 反对

使用道具 举报

56

主题

343

帖子

0

精华

高级会员

Rank: 4

积分
974
金钱
974
注册时间
2016-3-8
在线时间
267 小时
发表于 2017-10-7 18:33:06 | 显示全部楼层
马克一下、楼主真乃学霸加土豪。我至今还用着几块钱的F103
回复 支持 反对

使用道具 举报

42

主题

297

帖子

0

精华

高级会员

Rank: 4

积分
994
金钱
994
注册时间
2016-7-22
在线时间
318 小时
发表于 2017-10-9 12:50:02 | 显示全部楼层
厉害喔! 底板是几层的?
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2016-3-4
在线时间
9 小时
发表于 2017-10-9 16:37:25 | 显示全部楼层
哇,你这一年顶我们几年呐,系统一点都不懂,没有接触过,好凶哦,教练,我 想学
回复 支持 反对

使用道具 举报

19

主题

490

帖子

4

精华

论坛元老

Rank: 8Rank: 8

积分
5174
金钱
5174
注册时间
2016-7-21
在线时间
1147 小时
 楼主| 发表于 2017-10-11 10:48:37 | 显示全部楼层
hi我歌月徘徊 发表于 2017-10-9 12:50
厉害喔! 底板是几层的?

两层的
@野生程序员
回复 支持 反对

使用道具 举报

19

主题

490

帖子

4

精华

论坛元老

Rank: 8Rank: 8

积分
5174
金钱
5174
注册时间
2016-7-21
在线时间
1147 小时
 楼主| 发表于 2017-10-11 10:49:02 | 显示全部楼层

底板是两层的,核心板是四层
@野生程序员
回复 支持 反对

使用道具 举报

19

主题

490

帖子

4

精华

论坛元老

Rank: 8Rank: 8

积分
5174
金钱
5174
注册时间
2016-7-21
在线时间
1147 小时
 楼主| 发表于 2017-10-11 10:49:33 | 显示全部楼层
鑫鑫 发表于 2017-10-9 16:37
哇,你这一年顶我们几年呐,系统一点都不懂,没有接触过,好凶哦,教练,我 想学

我这也是瞎琢磨
@野生程序员
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 23:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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