版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
如何在开发板上显示
自己的相片1内容ADS1.2基本操作项目实现的相关知识链接如何实现显示相片实验:在ARM9上显示自己相片41232第一部分ADSADS1.2基本操作3ADS1.2(集成开发环境)
ARM应用软件的开发工具根据功能的不同,可以分为编辑软件、编译软件、汇编软件、链接软件、调试软件、嵌入式实时操作系统、函数库、评估板,JTAG仿真器以及在线仿真器等。目前有多家公司可以提供以上不同类型的开发工具,用户采用ARM处理器进行嵌入式系统开发时,选择合适的开发工具可以加快开发进度,节省开发成本。4ADS工具包的组成
ADS是ARM公司推出的集成开发工具包,是专门用于ARM相关应用开发和调试的综合性软件。目前常用的版本是1.2,是一款功能强大又易于使用的开发工具。
ARMADS包含有编译器、链接器、CodeWarriorIDE、调试器、指令集模拟器、ARM开发包和应用库等部分,可以用ADS来开发、编译、调试采用包括C、C++和ARM汇编语言编写的程序。
5ADS开发工具集1.命令行开发工具ANSIC编译器-armccandtccISO/EmbeddedC++编译器-armcppandtcppARM/Thumb汇编器–armsLinker-armlink
62.图形开发工具:Windows集成开发环境–CodeWarriorDebugger–AXD(ARMeXtendedDebugger)armsdARM(符号调试器)可向前兼容3.库文件:CandC++库4.辅助工具/支持软件:格式转换器-fromelf
指令级仿真–ARMulator库管理器–armar7fromELF:ARM映像文件转换工具该命令将ELF格式的文件作为输入文件,将该格式转换为各种输出格式的文件,包括plainbinary(BIN格式映像文件),Motorola32-bitS-recordformat(Motorola32位S格式映像文件),IntelHex32format(Intel32位格式映像文件),和Verilog-likehexformat(Verilog16进制文件)Armar:ARM库函数生成器将一系列ELF格式的目标文件以库函数的形式集合在一起,用户可以把一个库传递给一个链接器以代替几个ELF文件。Flashdownloader:用于把二进制映像文件下载到ARM开发板上的Flash存储器的工具ARMulator:ARM指令集仿真器,集成在ARM的调试器AXD中,它提供对ARM处理器的指令集的仿真,为ARM和Thumb提供精确的模拟,用户可以在硬件尚未做好的情况下,开发程序代码8名称描述使用方式代码生成工具ARM汇编器ARMC/C++编译器ThumbC/C++编译器ARM链接器由CodeWarrior调用集成开发环境CodeWarrior工程管理,编译链接调试器AXD/ADW/ADU/armsd仿真调试指令模拟器ARMulator由AXD调用ARM开发包一些底层的例程,实用程序(如fromELF)由CodeWarrior调用ARM应用库C/C++等函数库用户程序调用工具调用及流程9建立工程1011ARMExecutableImage:用于由ARM指令的代码生成一个ELF格式的可执行映像文件。ARMObjectLibrary:用于由ARM指令的代码生成一个armar
格式的目标文件库。EmptyProject:用于创建一个不包含任何库或源文件的工程。MakefileImporterWizard:用于将VisualC的nmake
或GNUmake文件转入到CodeWarriorIDE工程文件。ThumbARMInterworkingImage:用于由ARM指令和Thumb指令的混和代码生成一个可执行的ELF格式的映像文件。ThumbExecutableimage:用于由Thumb指令创建一个可执行的ELF格式的映像文件。ThumbObjectLibrary:用于由Thumb指令的代码生成一个armar
格式的目标文件库。12新建文件13添加文件到工程14生成目标设置15每个工程项目都有下面3种生成目标:Debug:包含所有调试信息DebugRel:包含部分调试信息Release:不包含调试信息注:若项目编译只是为了调试使用,则选择Debug或者DebugRel;若要生成最后可以运行的文件,则最好选择Release。16编译链接进入编译链接设置:17ADS1.2的配置问题18192021222324第二部分项目实现的相关知识链接25首先使用ADS打开出厂程序如下:然后双击,打开Main.c
文件。打开此文件之后我们就可以开始我们的源代码分析学习。261、学会使用外部函数的声明在Main.c
代码的第38-49行(行数显示在Main.c
编辑窗口的左下角)有以下代码:externvoidLcd_TFT_Init(void);externvoidLcd_TFT_Test(void);externvoidTest_Touchpanel(void);externvoidTest_Adc(void);externvoidKeyScan_Test(void);externvoidRTC_Display(void);externvoidTest_IrDA_Tx(void);externvoidPlayMusicTest(void);externvoidRecordTest(void);externvoidTest_Iic(void);externvoidTest_SDI(void);externvoidCamera_Test(void);函数外部声明的作用是:使不同文件之间,可以调用同一工程中的其他文件里面的函数。272、学会灵活的使用:“goto命令”在语句externvoidLcd_TFT_Test(void)中的函数名上面点击右键选择:GotofunctiondefinitionofLcd_TFT_Test
如图:我们马上就可以跳转到Lcd_TFT.c
文件中的voidLcd_TFT_Test(void)函数处。以此来实现于对函数定义的查看或者其他相关的操作。ADS的这一个功能。对于我们代码的分析和学习有着非常重要的意义。283、学会查看头文件:以LCD_TFT.c
文件的头文件为例,点击右边的黑色三角箭头“”就会出现如下图所示画面:点击“”进入LCD_TFT.c
对应的头文件LCD_TFT.h。294、在头文件中进行LCD屏幕型号的选择#defineLCD_TypeLCDW35//设定屏的类型#if(LCD_Type==LCDW35)//东华屏……#elif(LCD_Type==LCDS35)//三星屏……#elif(LCD_Type==LCDT35)//东芝屏……#elif(LCD_Type==LCDW43)//4.3寸屏……#elif(LCD_Type==LCD57)//5.7寸屏……#elif(LCD_Type==VGA)//VGA……#elif(LCD_Type==LCDA70)//7.0寸屏……#elif(LCD_Type==LCDA104)//10.4寸屏……#endif304、在头文件中进行LCD屏幕型号的选择此处以在3.5寸和4.3寸之间的更换为例:当我们拆下3.5寸屏幕,换上4.3寸屏幕的时候,我们只需要将LCD_TFT.h中的一下红色句子:/**************************************************************TheinitialandcontrolforTFTLCD**************************************************************/#defineLCDW351//东华屏(320X240)#defineLCDS352//三星屏(320X240)#defineLCDT353//东芝屏(240X320)#defineLCDW434//东华4.3寸屏#defineLCD575//5.7寸屏#defineLCDA706//7.0寸屏#defineVGA7//VGA#defineLCDA1048//10.4寸屏#defineLCD_TypeLCDW35//设定屏的类型………………….改为:“#defineLCD_TypeLCDW43//设定屏的类型”即可!315、声明外部数组以下代码为在LCD_TFT.h
当中声明公司logo图片对应的数组所使用的语句:#if((LCD_Type==LCDW35)||(LCD_Type==LCDS35))//3.5寸屏externunsignedcharTQ_LOGO_320240[];//自定义的图片#elif(LCD_Type==LCDT35)//3.5寸屏externunsignedcharTQ_LOGO_240320[];//自定义的图片#elif(LCD_Type==LCDW43)//3.5寸屏externunsignedcharTQ_LOGO_480272[];//自定义的图片#elif(LCD_Type==VGA)//VGAexternunsignedcharTQ_LOGO_640480[];//自定义的图片#elif(LCD_Type==LCDA70)//7寸屏externunsignedcharTQ_LOGO_800480[];//自定义的图片#endif当我们使用的屏幕的型号为LCDW35时,实际编译的语句为“externunsignedcharTQ_LOGO_320240[];”;当使用的屏幕的型号为LCDW43时,实际编译的语句为“externunsignedcharTQ_LOGO_480272[];”,其它依此类推。此处externd
的功能是,实现对外部变量的声明,此处具体来讲是声明外部数组。32关于在多文件的程序中声明外部变量:如果一个程序包含两个文件,在两个文件中都要用到同一个外部变量n,不能分别在两个文件中各自定义一个外部变量n,否则在进行程序的连接时会出现“重复定义”的错误。正确的做法是:在任一个文件中定义外部变量n,而在另一个文件中用extern对n作“外部变量声明”。在编译和连接时,系统会由此知道n是一个已在别处定义的外部变量,并将在另一个文件中定义的外部变量的作用域扩展到本文件,在本文件中可以合法地引用外部变量n。336、分析Main函数(1)#ifADS10__rt_lib_init();//forADS1.0#endif因为我们用的是ADS1.2,这一段代码没有实际意义。可以删掉,不影响程序的表达的效果。(2)Port_Init();端口初始化
Isr_Init();中断初始化34(3)i=2;//don'tuse100M!switch(i){case0://200key=12;mpll_val=(92<<12)|(4<<4)|(1);break;case1://300key=13;mpll_val=(67<<12)|(1<<4)|(1);break;case2://400key=14;mpll_val=(92<<12)|(1<<4)|(1);break;case3://440!!!key=14;mpll_val=(102<<12)|(1<<4)|(1);break;default:key=14;mpll_val=(92<<12)|(1<<4)|(1);break;}这一段代码,完成了CPU时钟频率选择的工作。此处i=2,CPU工作的主频为400MHz,即mpll_val=(92<<12)|(1<<4)|(1)。35(4)consoleNum=0;
Uart_Init(0,115200);
Uart_Select(consoleNum);-----选择了串口波特率为115200。(5)Beep(2000,100);此句对应开发板开机时的蜂鸣器的那一声“哔”;同学们可以尝试删掉或者废掉此句,就不会再听到这个声音了。36(6)Uart_SendByte('\n');Uart_Printf("<***************************************>\n");Uart_Printf("TQ2440TestProgram\n");Uart_Printf("\n");//Uart_Printf("Buildtimeis:%s%s\n",__DATE__,__TIME__);Uart_Printf("<***************************************>\n");这一段代码,完成了在开发板从nandflash
起动时,电脑串口工具界面打印出以下语句的功能。
注意:如果在Uart_Printf(“”)的双引号当中写入自己喜欢的或者好玩的语句,会是什么效果呢?3738(7)MMU_Init();内存管理Led_Display(0x66);LED灯显示
Lcd_TFT_Init();LCD屏幕初始化(8)最后,main函数的主体最终落入了一个while(1){}循环中:while(1){U8idx;
Uart_Printf("\nPleaseselectfunction:\n");
for(i=0;CmdTip[i].fun!=0;i++)
Uart_Printf("%d:%s\n",i,CmdTip[i].tip);
idx=Uart_GetIntNum_GJ();
if(idx<i){(*CmdTip[idx].fun)();Delay(20);Uart_Init(0,115200);}}这段程序是测试程序的主体,我们实现测试程序1-11项的选择就是在这个循环中完成的。39(9)在CmdTip
上面右键,Goto一下,就转到了:struct{void(*fun)(void);char*tip;}CmdTip[]={{Temp_function,"Pleaseinput1-11toselecttest"},{BUZZER_PWM_Test,"TestPWM"},{RTC_Display,"RTCtimedisplay"},{Test_Adc,"TestADC"},{KeyScan_Test,"Testinterruptandkeyscan"},{Test_Touchpanel,"TestTouchpanel"},{Lcd_TFT_Test,"TestTFTLCD"},{Test_Iic,"TestIICEEPROM"},{PlayMusicTest,"UDA1341playmusic"},{RecordTest,"UDA1341recordvoice"},{Test_SDI,"TestSDCard"},{Camera_Test,"TestCMOSCamera"},{0,0}};仔细分析以上这个struct{}结构,然后对应出厂测试程序1-11的实验来思考一下这个struct{}结构对整个工程的意义。然后我们在Lcd_TFT_Test
上面使用右键,Goto,转到了Lcd_TFT_Test.c文件中的voidLcd_TFT_Test(void)函数。40(10)仔细分析voidLcd_TFT_Test(void)这个函数,结合在最开始所做的出厂测试程序的实验进行思考,可以发现在这个函数的落脚点体现在以下的程序段上:#if(LCD_Type==LCDT35)Uart_Printf("Pressanykeytocontinue!\n");Uart_Getch();//AnyKeyToNextPaint_Bmp(0,0,240,320,TQ_LOGO_240320);#elif((LCD_Type==LCDW35)||(LCD_Type==LCDS35))Uart_Printf("Pressanykeytocontinue!\n");Uart_Getch();//AnyKeyToNextPaint_Bmp(0,0,320,240,TQ_LOGO_320240);#elif(LCD_Type==LCDW43)Uart_Printf("Pressanykeytocontinue!\n");Uart_Getch();//AnyKeyToNextPaint_Bmp(0,0,480,272,TQ_LOGO_480272);#elif(LCD_Type==VGA)Uart_Printf("Pressanykeytocontinue!\n");Uart_Getch();//AnyKeyToNext41Paint_Bmp(0,0,640,480,TQ_LOGO_640480);#elif(LCD_Type==LCDA70)Uart_Printf("Pressanykeytocontinue!\n");Uart_Getch();//AnyKeyToNextPaint_Bmp(0,0,800,480,TQ_LOGO_800480);#endif分析以上这段代码,可以发现,这一段代码对使用3.5寸屏幕的人的真正意义其实就等效于以下代码段:Uart_Printf("Pressanykeytocontinue!\n");Uart_Getch();//AnyKeyToNextPaint_Bmp(0,0,320,240,TQ_LOGO_320240);而在这当中,重要的的函数:Paint_Bmp(0,0,320,240,TQ_LOGO_320240);如果是4.3寸屏,怎么办?42(11)在Paint_Bmp
上右键Goto一下,就可以通过在上面显示自己的相片了分析以下函数:voidPaint_Bmp(intx0,inty0,inth,int
l,unsignedcharbmp[]){
int
x,y;U32c;
intp=0;for(y=y0;y<l;y++){for(x=x0;x<h;x++){c=bmp[p+1]|(bmp[p]<<8);if
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年借款向公司借款合同(1篇)
- 2022年移动支付预存合同三篇
- 陕西省重点学校小升初入学分班考试语文考试试题及答案
- 2026执业医师加试之军事医学考试试题含解析及答案
- 胎心监护的护理学术交流
- 2025~2026学年江西萍乡市高二上学期期末生物试卷
- 美发店员工培训:从专业技能到卓越服务
- 季节性职业多发病防治培训
- 2026年基层干部安全生产月隐患随手拍知识题
- 2026年采购供应商全生命周期管理与协同创新培训
- 房屋建筑统一编码与基本属性数据标准JGJ-T496-2022
- 2026年七年级语文下册期中真题汇编 专题08 名著《骆驼祥子》
- 山东省济南市2026届高三下学期二模试题 数学 含答案
- 2026中盐甘肃省盐业(集团)有限责任公司管理人员招聘3人建设笔试模拟试题及答案解析
- 依法合规进行业务的承诺书范文4篇
- 工厂采购部绩效考核制度
- 【新教材】人教版八年级生物下册实验01 鸟卵适于在陆地上发育的结构特征(教学课件)
- 2026年中职计算机专业教师岗位实操考核试题及答案
- 深圳大疆在线测评行测题库
- 《高中生科技创新活动与综合素质评价研究》教学研究课题报告
- 组织部采购工作内控制度
评论
0/150
提交评论