已阅读5页,还剩77页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章PSoCCreator软件及设计流程Chapter8PSoCCreatorSoftwaremyVar=myVar;if(!myVar).,PSoC3/5基本编程模型-位变量的使用,此外,为了保证代码容易移植到PSoC5上,可以使用CYBIT关键字替换bit关键字。例如:CYBITmyVar;PSoCCreator软件工具中提供了完整的宏定义集,用来将PSoC3的代码移植到PSoC5上。更详细的说明,请参考cyboot文件夹中自动生成的文件cytypes.h。,PSoC3/5基本编程模型-避免从中断句柄调用函数,当编译用于中断服务程序ISR的C代码时,Keil编译器将试图认为在ISR中可能修改的寄存器入栈操作。如果ISR包含一个函数调用,编译器并不知道函数调用将修改哪个寄存器,这样就会将所有寄存器内容入栈。比如:改函数调用:,PSoC3/5基本编程模型-避免从中断句柄调用函数,CY_ISR(myISR)UART_1_ReadRxStatus();为:CYBITflag;CY_ISR(myISR)flag=1;,PSoC3/5基本编程模型-避免从中断句柄调用函数,voidmain()/*等待ISR设置flag标志if(flag)flag=0;UART_1_ReadRxStatus();.,PSoC3/5基本编程模型-将变量放在合适的存储空间,当变量放在8051内部的存储空间时,具有最好的CPU访问效率,根据访问效率,定义变量类型的顺序依次为:data,idata,pdata和xdata.由于堆栈空间有限,Keil编译器不在堆栈中保存本地变量,而是将其保存在固定的存储空间,并且和其它函数调用的变量共享存储空间。,PSoC3/5基本编程模型-将变量放在合适的存储空间,此外,尽量使循环变量递减而不是递增操作,这是由于测试等于0操作比测试等于常数的操作要快。比如使用下面的代码:voidmain()datauint8i;/*循环10次*/for(i=10;i!=0;i-).,PSoC3/5基本编程模型-将变量放在合适的存储空间,在C代码中,为了测试某些位,经常使用下面的代码风格:uint8x;x|=0 x10;/*setbit4*/x/*togglebit4*/if(x/*放置myVar到8051内部空间20-2Fsbitmybit4=myVar4;/*myVar变量的第4位*/mybit4=1;/*设置myVar变量的第4位*/mybit4=0;/*清除myVar变量的第4位*/mybit4=mybit4;/*切换myVar的第4位*/if(mybit4)/*测试myVar的第4位*/.这个方法也可以对32和16位变量其中的某些位进行操作。注意bdata和sbit定义为全局的,而不是本地的。,PSoC3/5基本编程模型-将变量放在合适的存储空间,2)将所感兴趣的比特位暂时放到感兴趣的SFR中。查看cy_boot文件夹下由PSoCCreator生成的PSoC3_8051.h文件。了解sbit和sfr关键字用于支持位访问的SFR。sfrPSW=0 xD0;sbitP=PSW0;sbitF1=PSW1;sbitOV=PSW2;sbitRS0=PSW3;sbitRS1=PSW4;sbitF0=PSW5;sbitAC=PSW6;sbitCY=PSW7;,PSoC3/5基本编程模型-使用B寄存器用于暂存数据,在8051结构中,B寄存器用来方便汇编指令MUL和DIV的操作。除此以外,它只是一个辅助的寄存器。下面给出使用B寄存器实现两个8位变量的交换:uint8x,y;B=x;x=y;y=B;,PSoC3/5基本编程模型-编写汇编代码的方法,1创建一个单独的汇编源文件1)在PSoCCreator主界面的ProjectExplorer子窗口下,用鼠标右键点击工程名字,并选择“Addnewitem”。2)选择“8051KeilAssembyAssemblyFile”,然后输入文件名。3)将创建一个汇编文件,该文件在整个工程中的扩展名为.a51。4)在文件中添加汇编代码;5)可以在主界面的主菜单下选择HelpdocumentationKeilAX51AssemblerUserGuideforhelponinstruction,template等。查看相关的汇编语言指令。,PSoC3/5基本编程模型-编写汇编代码的方法,2在C文件中使用内嵌汇编代码1)在C源文件中,将汇编代码写在指令“#pragmaasm”和“Pragmaendasm”中间。2)在主界面下的ProjectExplorer子窗口下,鼠标右键点击源文件,出现BuildSettings界面。3)在Compiler选项界面下,将InlineAssembly设置为True,即使能在C文件中内嵌汇编语言。,PSoC3/5基本编程模型-PSoC3中断编程模型(设置全局中断),1)使用PSoCCreator软件中CyLib.h文件中提供的CYGlobalIntEnable宏定义来全局中断使能功能。2)使用PSoCCreator软件中CyLib.h文件中提供的CYGlobalIntDisable宏定义来禁止中断使能功能。使用宏定义,将来可以很方便的进行代码的移植。,PSoC3/5基本编程模型-PSoC3中断编程模型(定制中断服务程序),可以在main.c或者其它.c文件中编写中断服务程序。用设计中具体使用的中断元件的例化名字代替下面程序中的isr_1名字(isr_1为默认的中断原件例化名字)。可以在希望编写定制中断服务程序的地方编写自己的中断服务程序,使用下面的方式定义:CY_ISR(MyOwn_Interrupt)/*以下为定制的中断服务程序代码*/.,PSoC3/5基本编程模型-PSoC3中断编程模型,并使用isr_1_StartEx或者isr_1_SetVectorAPI函数来更新中断向量表(根据具体设计将isr_1名字修改为具体的中断元件的例化名字)。main()-/*主程序代码*/-/*修改向量地址到定制的中断服务程序MyOwn_Interrupt,然后从cydwr文件中修改优先级,然后使能中断*/isr_1_StartEx(MyOwn_Interrupt);-,PSoC3/5基本编程模型-PSoC3中代码重入,若一个程序或子程序可以安全的被并行执行,则称其为可重入(reentrant或re-entrant)的;即,当该子程序正在运行时,可以再次进入并执行它。若一个函数是可重入的,则该函数:不能含有静态(全局)非常量数据。不能返回静态(全局)非常量数据的地址。只能处理由调用者提供的数据。不能依赖于单实例模式资源的锁。不能调用不可重入的函数。多用户/对象/进程优先级以及多进程一般会使得对可重入代码的控制变得复杂。同时,IO代码通常不是可重入的,因为他们依赖于像磁盘这样共享的、单独的资源。,PSoC3/5基本编程模型-PSoC3中代码重入,需要代码重入,在函数声明和函数定义的名字后面添加CYPEENTRANT宏定义声明,比如:uint8increment(uint8)CYREENTRANT;uint8increment(uint8value)CYREENTRANTuint8iCount1;uint32iDelay1;value+;for(iCount1=0;iCount1BuildEx1_LED_with_PWM。,图Build窗口界面,基于PSoC3工程的简单设计流程-建立PSoC3工程,2PSoCCreator建立工程,如下图,并且在Output窗口显示建立过程的信息。当output窗口显示“BuildSuccessed”信息后,就可以准备编程了(注意其编译器为DP8051-Keil)。,图Output窗口界面,基于PSoC3工程的简单设计流程-编程PSoC3工程,下面给出将程序下载到CY8C38开发板上的步骤,这些步骤包括:1连接MiniProg3到CY8C38的开发板上。2在PSoCCreator主菜单下选择Tools-Options,打开Options窗口。3如下图所示,选择Programmer/Debugger,并展开该选项,然后选择MiniProg3。进行如下设置:,基于PSoC3工程的简单设计流程-编程PSoC3工程,图MiniProg参数设置界面,基于PSoC3工程的简单设计流程-编程PSoC3工程,设置AppliedVoltage:3.3V;设置TransferMode:SWD;设置ActivePort:10Pin;设置AcquireMode:Reset;设置DebugClockSpeed:3.2MHz;点击“OK”按钮。4在PSoCCreator主菜单下选择Debug-SelectDebugTarget。出现如下图所示的界面。,基于PSoC3工程的简单设计流程-编程PSoC3工程,图SelectDebugTarget界面,基于PSoC3工程的简单设计流程-编程PSoC3工程,5在PSoCCreator主界面下选择Debug-Program,在PSoCCreator输出窗口显示如下图所示的信息,表示正在编程和编程成功的信息。6一直等待编程成功为止。,图编程Flash信息,基于PSoC3工程的简单设计流程-运行PSoC3工程并调试,1在提供的CYPRESS开发套件上,用导线将面包板旁的P16接口连接到LED1;将面包板旁的P17接口连接到LED2;2给板子再次上电,观察LED等的闪烁频率。3如下图所示,按键F9,在此行设置断点,并按键F5,让程序运行。观察灯的变化情况。,基于PSoC3工程的简单设计流程-运行PSoC3工程并调试,图断点调试界面,PSoCCreator软件及设计流程-基于PSoC5工程的简单设计流程,本工程使用PSoC5内的PWM可编程外设来控制两个不同的LCD灯的闪烁频率。,基于PSoC5工程的简单设计流程-加载PSoC5工程,1打开PSoCCreator软件;2如下图,在StartPage页面中的StartPageTopic下面展开KitsandSolutions。3在KitsandSolutions下,展开PSoCCY8C55FamilyProcessorModuleKit。4点击Ex1_LED_with_PWM.cywrk打开工程。,基于PSoC5工程的简单设计流程-加载PSoC5工程,图KitandSolution界面,基于PSoC5工程的简单设计流程-加载PSoC5工程,5选择保存工程的路径;6工程打开后,如下图所示,可以在WorkspceExplorer下面看到打开的工程。,图WorkspaceExplorer界面,基于PSoC5工程的简单设计流程-建立PSoC5工程,1如下图所示,在PSoCCreator的主界面下选择Build-BuildEx1_LED_with_PWM。,图Build窗口界面,基于PSoC5工程的简单设计流程-建立PSoC5工程,2PSoCCreator建立工程,如下图,并且在Output窗口显示建立过程的信息。当output窗口显示“BuildSuccessed”信息后,就可以准备编程了(注意其编译器为ARMCM3-GCC4.2.1)。,基于PSoC5工程的简单设计流程-建立PSoC5工程,图Output窗口界面,基于PSoC5工程的简单设计流程-编程PSoC5工程,下面给出将程序下载到CY8C55开发板上的步骤,这些步骤包括:1连接MiniProg3到CY8C55的开发板上。2在PSoCCreator主菜单下选择Tools-Options,打开Options窗口。3如下图所示,选择Programmer/Debugger,并展开该选项,然后选择MiniProg3。进行如下设置:,基于PSoC5工程的简单设计流程-编程PSoC5工程,图MiniProg参数设置界面,基于PSoC5工程的简单设计流程-编程PSoC5工程,设置AppliedVoltage:3.3V;设置TransferMode:SWD;设置ActivePort:10Pin;设置AcquireMode:Reset;设置DebugClockSpeed:3.2MHz;点击“OK”按钮。4在PSoCCreator主菜单下选择Debug-SelectDebugTarget。出现如下图所示的界面。,基于PSoC5工程的简单设计流程-编程PSoC5工程,图SelectDebugTarget界面,基于PSoC5工程的简单设计流程-编程PSoC5工程,5在PSoCCreator主界面下选择Debug-Program,在PSoCCreator输出窗口显示如下图所示的信息,表示正在编程和编程成功的信息。6一直等待编程成功为止,图编程Flash信息,。,基于PSoC5工程的简单设计流程-运行PSoC5工程并调试,1在开发板上,用导线将面包板旁的P16接口连接到LED1;将面包板旁的P17接口连接到LED2;2给板子再次上电,观察LED等的闪烁频率。3如下图所示,按键F9,在此行设置断点,并按键F5,让程序运行。观察灯的变化情况。,基于PSoC5工程的简单设计流程-运行PSoC5工程并调试,图断点调试界面,基于PSoC5工程的简单设计流程-基于PLD的自定义元件设计流程,自定义元件是PSoCCreator所提供了一个非常强大的功能,设计人员可以充分利用软件强大的自定义元件功能实现特定元件的设计和复用。下面将通过一个设计详细的介绍自定义元件的设计流程,并进行验证。,基于PSoC5工程的简单设计流程-基于PLD的自定义元件设计流程,该工程将使用基于VerilogHDL设计Count4ByN带有异步复位的递增计数器元件。该元件的接口包括:2个输入信号:clock,reset;4个输出信号:Count3:0;参数N(规定了每个始终计数器递增N);,基于PLD的自定义元件设计流程-建立工程,下面给出建立PSoC工程的步骤,其步骤包括:1打开PSoCCreator软件;2如下图所示,在主菜单下选择File-New-Project,图新建工程选项,基于PLD的自定义元件设计流程-建立工程,3如下图所示,在Name域内输入counter,并确定该工程的路径。,然后点击“OK”按钮。,图创建新工程界面,基于PLD的自定义元件设计流程-添加自定义元件,1如下图(a)所示,并切换标签栏到Components,出现下图(b)的界面。,基于PLD的自定义元件设计流程-添加自定义元件,2在上图(b)界面下,选中Projectcounter,并点击鼠标右键,出现下图的界面,选择AddComponentItem选项。,图选择AddComponentItem.选项,基于PLD的自定义元件设计流程-添加自定义元件,3出现如下图的界面,选择“SymbolWizard”选项,并在ComponentName域中输入:counter4b。并点击“CreateNew”按钮。,基于PLD的自定义元件设计流程-添加自定义元件,5出现下图的界面,并按照该界面分别输入reset,clock,和count3:0名字及其相关参数,点击“OK”按钮。,图SymbolCreationWizard,基于PLD的自定义元件设计流程-添加自定义元件,6出现左图界面,并在该界面,点击鼠标右键,出现右图界面,选择SymbolParameters。,图选择SymbolParameters选项,图创建的符号,基于PLD的自定义元件设计流程-添加自定义元件,7出现下图的界面,输入N参数,类型为int,Value为1。在Misc栏中选择Description,,图ParametersDefinition界面,基于PLD的自定义元件设计流程-添加自定义元件,出现下图的界面,并输入描述语句“Amounttoincrementcountbyoneeachclock”。点击“OK”按钮,返回上图的界面。,图TextEditor界面,基于PLD的自定义元件设计流程-添加自定义元件,修改Hardware设置为:True;修改Validators设置。8出现下图的界面,输入条件,即当N超过该范围时,会报错。点击“Ok”按钮。回到前面图界面,并点击“OK”按钮,退出该界面。,基于PLD的自定义元件设计流程-添加自定义元件,图ParameterValidators界面,基于PLD的自定义元件设计流程-添加自定义元件,8图界面下,选择“GenerateVerilog”选项,打开counter4b.v文件。在该文件中进行代码添加。,图选择SymbolParameters选项,基于PLD的自定义元件设计流程-添加自定义元件,9如下图界面,添加Verilog代码。,图添加Verilog代码,基于PLD的自定义元件设计流程-调用自定义元件,当自定义元件设计完成后,就可以调用该元件,并进行验证。下面给出调用该元件的步骤:1如右图所示,在Workspace窗口下,选择Source标签,并点击“TopDesign.cysch”选项,打开原理图编辑窗口。,图选择”TopDesign.cysch”,基于PLD的自定义元件设计流程-调用自定义元件,2在ComponentCatalog下选择“Default”标签。如右图展开选项,选择Counter4b,在该界面的下部出现Counter4b的符号,用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年荆门市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(满分必刷)
- 雅安市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(b卷)
- 2026年武汉市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)完整答案详解
- 2026年郑州市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及参考答案详解
- 2026年湖州市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及1套完整答案详解
- 2025年广东省辅警考试公安基础知识考试真题库及参考答案
- 2026年金昌市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解
- 蚌埠市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及参考答案详解1套
- 池州市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(精练)
- 2025年高危妊娠的试题及答案
- GB/T 16921-2005金属覆盖层覆盖层厚度测量X射线光谱方法
- 政治理论水平任职资格考试题库
- 新形势下群众工作的理论与实践课件
- 2023年交银国际信托有限公司招聘笔试题库及答案解析
- 高联难度几何题100道-打印整理版
- 冻干车间配液岗位操作规程
- 《工程伦理学》配套教学课件
- 公共管理英语 第一篇 教学内容 (15)课件
- 初中数学北师大八年级上册 一次函数一次函数与三角形面积 -平行线转移法王思利
- IQC来料检验规范
- 工程力学ppt课件(完整版)
评论
0/150
提交评论