c语言 将结构体放在flash,如何将 结构体 的 数据 定义在flash里面,并如何读出来,求各位达人帮助……...

如题,本人不太熟悉GCC,特别是定义在flash和eeprom的数据,所以在做液晶的字库时遇到问题,讲解下思路:用查表的方式,定义一个结构体来装载字符的内码和字符数据。程序如下:

/*******************************************字库定义******************************/

// ------------------  汉字字模的数据结构定义 ------------------------ //

struct  typFNT_GB32                 // 汉字字模数据结构

{

unsigned char  Index[3];               // 汉字内码索引

unsigned char   Msk[128];                        // 点阵码数据

};

/

// 汉字字模表                                                          //

// 汉字库: 宋体32.dot,横向取模左高位,数据排列:从左到右从上到下         //

/

struct  typFNT_GB32 codeGB_32[] PROGMEM={                                 // 数据表

/*--  文字:  彩  --*/

/*--  宋体22;  此字体下对应的点阵为:宽x高=30x29   --*/

/*--  宽度不是8的倍数,现调整为:宽度x高度=32x29  --*/

{{"彩"},{0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x1F,0xC0,0xC0,0x03,0xFF,0xC1,0xE0,

0x3F,0xE0,0x03,0xE0,0x00,0xE3,0xC7,0xC0,0x18,0xF3,0xCF,0x00,0x1E,0x7B,0x9E,0x00,

0x0F,0x7F,0x3C,0x00,0x07,0x37,0xF0,0x00,0x07,0x6E,0xC0,0x60,0x02,0x7C,0x00,0xF0,

0x00,0x70,0x81,0xF0,0x3F,0xFF,0xC3,0xC0,0x3F,0xFF,0xEF,0x80,0x01,0xF0,0x1E,0x00,

0x01,0xF8,0x78,0x00,0x03,0xFC,0xF0,0x70,0x03,0xFF,0x80,0xF8,0x07,0xF7,0x81,0xF8,

0x07,0x77,0x83,0xE0,0x0E,0x73,0x87,0xC0,0x1C,0x71,0x8F,0x00,0x38,0x70,0x3E,0x00,

0x30,0x70,0xF8,0x00,0x60,0x73,0xE0,0x00,0x00,0x7F,0x80,0x00,0x00,0x7C,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},

};

/******************************读取字库送显***************************************/

void PutGB3232(unsigned short x, unsigned short  y, unsigned char c[2], unsigned int fColor,unsigned int bColor,uint8 b_en)

{

unsigned int i,j,k;

LCD_SetPos(x,  x+32-1,y, y+32-1);

for (k=0;k<50;k++) { //15标示自建汉字库中的个数,循环查询内码

if ((pgm_read_byte(codeGB_32[k].Index[0])==c[0])&&(pgm_read_byte(codeGB_32[k].Index[1])==c[1])){

for(i=0;i<128;i++) {

unsigned short m=pgm_read_byte(codeGB_32[k].Msk);

for(j=0;j<8;j++) {

if((m&0x80)==0x80) {

Write_Data_U16(fColor);

}

else if(b_en) {

Write_Data_U16(bColor);

}

m<<=1;

}

}

}

}

}

我试着把数据定义在内存里面,就是把 PROGMEM 和 pgm_read_byte 去掉,液晶能正常的显示汉字,

但是当我把字库定义在flash里面的时候,就读不出数据了,我知道问题出现在结构体的定义和数据的读取那里,但是我不知道怎么改,求各位帮帮忙解决下好吗,小弟万分感激!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“数万行代码“教你用html和css编写一个精美的网页

我是歌谣 放弃很容易 但是坚持一定很酷 1前言 作为一名前端开发工程师 开发一个完美的网页也是我们的必修课之一 逻辑写起来有时候不是那么的难 据说页面样式才是最难的一课 本文内容纯属自己个人观点 欢迎一起交流吐槽 2网页基础版&#xff08;divcss&#xff09; 我第一次接触…

C#中在主窗体中用ShowDialog方法显示子窗体的使用技巧

显示和关闭子窗体&#xff1a; 方法1&#xff1a;源代码&#xff1a; EatGood.FoodManageUI.MessageForm.ConfirmDelFeelkindOrFeelsForm feelkindform new MessageForm.ConfirmDelFeelkindOrFeelsForm(); //创建一个窗体对象 feelkindform.ShowDialog() ; //显示窗体 子窗体中…

cmd oracle sys登录_oracle忘记sys/system/scott用户密码的解决方法

一、忘记除SYS、SYSTEM用户之外的用户的登录密码。用SYS (或SYSTEM)用户登录。CONN SYS/PASS_WORD AS SYSDBA;使用如下语句修改用户的密码。ALTER USER user_name IDENTIFIED BY newpass;注意&#xff1a;密码不能全是数字。并且不能是数字开头。否则会出现&#xff1a;ORA-009…

汇编语言写c51延时程序,单片机延时程序实例讲解

在单片机实验中&#xff0c;有一个很重要也是很基本的子程序必须要求我们掌握&#xff0c;那就是延时程序。下面我凭记忆来讲解延时程序。课本上讲&#xff0c;1个机器周期6个状态周期12个时钟周期&#xff0c;而这个时钟周期与晶振频率有关。我们接下来要上的实验基本都是以12…

Data Analysis: What are the skills needed to become a data analyst?

今天看到一个讨论贴&#xff1a;如何成为一个牛逼的数据分析师&#xff1f;其中有一贴如此总结。全文如下&#xff1a;There are two classes of skills that are needed to be a successful data analyst: both soft and technical skills are needed. The core work flow fo…

一文带你理解如何解决工作中的需求

我是歌谣 放弃很容易 但是坚持一定很酷 1前言 在我们的开发过程中 会遇到一些开发的需求 怎么实现 怎么写 怎么做才最合理 2需求处理 拿到一个需求就和做数学题一样 我们要理清所有的关系 由于本文知识对需求进行阐述 所以就以vue为例子 2.1 需求1处理页面样式某页面跳转之后如…

tc溜溜865手机投屏卡_溜溜tcgames老版本(电脑玩手机游戏)-溜溜TC Games32位/64位旧版本PC下载V2.0.0官网安卓真机投屏-西西软件下载...

溜溜TC Games32位/64位旧版本PC是一款非常好用的手机游戏投屏工具&#xff0c;有了这款软件我们就可以将手机上的游戏画面投入到电脑上&#xff0c;大屏幕玩游戏&#xff0c;这样肯定会跟畅快&#xff0c;该软件是由成都杰华科技有限公司基于PC端研发的&#xff0c;从此电脑玩游…

c语言八个方向迷宫课程设计,【精品资料最新版】C语言课程设计-迷宫游戏.doc...

计算机技术基础课程设计C语言设计报告题目&#xff1a;完整的二维迷宫游戏学院&#xff1a;工商管理学院专业&#xff1a;信息系统与信息管理班级&#xff1a;050507姓名&#xff1a;孙月指导教师&#xff1a;张首伟设计日期&#xff1a;2004年12月10日题目&#xff1a;完整的二…

文件操作的小tips

freopen功 能: 替换一个流&#xff0c;或者说重新分配文件指针&#xff0c;实现重定向。 eg: freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); /* close the standard output stream */ fclose(stdout);若要返回到显示…

ant接口用什么天线_Ant-Basic天线基本知识讲

1天线1.1天线的作用与地位无线电发射机输出的射频信号功率&#xff0c;通过馈线(电缆)输送到天线&#xff0c;由天线以电磁波形式辐射出去。电磁波到达接收地点后&#xff0c;由天线接下来(仅仅接收很小很小一部分功率)&#xff0c;并通过馈线送到无线电接收机。可见&#xff0…

android imageview 图片切换动画,在Android中以动画方式将ImageView移动到不同的位置...

TranslateAnimation animation new TranslateAnimation(0, 50, 0, 100);animation.setDuration(1000);animation.setFillAfter(false);animation.setAnimationListener(new MyAnimationListener());imageView.startAnimation(animation);更新&#xff1a;问题是&#xff0c;Vi…

shell,perl,python

shell,perl,python的区别 2012-03-18 10:48:42| 分类&#xff1a; 默认分类 | 标签&#xff1a; |字号大中小 订阅 shellsedawk三者中功能最弱&#xff0c;没有调试程序&#xff0c;大多数操作必须通过运行其他程序才能执行&#xff0c;所以需要更多时间、内存并在进程表中…

宁波python学习_python学习第五天

一 常用模块定义&#xff1a;可以实现某种功能的.py结尾的python文件&#xff0c;文件名为test.py&#xff0c;则模块名为test导入方法import 模块名import 模块名1&#xff0c;模块名2from 模块名 import * 不建议使用这种方法&#xff0c;容易引起模块中的方法被…

android管理员和普通用户登录,asp登录页如何区别管理员和普通用户,登录后跳转到不同页面?...

数据库表 user表 中&#xff0c;username(用户名) pass(密码) type(超级管理员、高级发文者) cname(单位名称)登录页index.aspif request.Form("submit")"登陆系统" thenusertrim(request.Form("uname"))passucase(md5(request.Form("pass&…

envoy实现_如何利用 Envoy 的 Postgres 过滤器实现网络可观察性

作者&#xff1a;Christoph Pakulski自发布版本 1.15.0 起&#xff0c;Envoy 代理就开始支持 Postgres 信息解码用于统计目的了。该功能为网络中发生的 Postgres 事务提供聚合视图。有了聚合视图&#xff0c;Postgres 作业的种类、故障的数量和严重性瞬间一目了然。通过时间序列…

android无感刷新下拉分页,GitHub - TakWolf/Android-RefreshAndLoadMore-Demo: 一种简单的并且优雅的方式实现下拉刷新和加载更多的分页效果。...

Android - RefreshAndLoadMore Demo一种简单的并且优雅的方式实现下拉刷新和加载更多的分页效果。包含 ListView 和 RecyclerView 两种组件的对应实现。下拉刷新基于 SwipeRefreshLayout 实现。加载更多通过在列表底部添加 FooterView 实现。考虑了第一次请求数据填充不足一屏的…

神经网络与机器学习 第一讲(2)——什么是神经网络

一、为什么要研究神经计算 1. 理解人脑是怎样工作的 2. 理解利用神经元和连接所形成的并行计算&#xff08;这与串行计算很不相同&#xff09;&#xff1a; 1) 能够做好人脑擅长的事情&#xff08;vision&#xff09; 2) 做不好人脑不擅长的事情&#xff08;23*45&#xff09; …