本帖最后由 陌路绝途 于 2014-6-10 09:31 编辑
PCos4软件简单使用
1.1 实验目的1) 创建项目 2) 代码编写(编写一个LED三色灯闪烁的例程) 3) 在线仿真 4) 跟一般的MCU对比功能和性能 1.2 实验总结1) 在这个例程的应用中,项目的创建是比较简单,容易的。这个得益于这个PSOC CREATOR的软件平台。如果从这个实验来评价,这个芯片只是一个M0的处理器,如果从使用的角度来评价,过多的软件设置反而显得有些复杂和繁琐。软件提供了很多的参数和功能设置界面,其实这些都是可以通过代码来配置寄存器来实现的(实验内容会说明),所以这些设置界面基本上是用于系统初始化时使用,程序运行过程中,我们还是需要去了解功能寄存器的意义。 2) 软件本身就带编译和仿真功能,这个是很好的,很方便的。 3) 这个实验比较简单,能够体现的就是对于入门是比较方便的,而且是一个很好的就教学工具,我们选择功能和配置管脚等流程的时候,我们很容易而且很清晰的感觉到每个模块的结构和原理,项目的创建过程就好像是我们堆砌积木一样。 1.3 实验内容1.3.1 创建项目文档打开软件CREATOR2.2。然后在菜单栏选>>File>>New>>Project进入项目界面 我们可以直接选择图中红色框的选项,创建一个全新的项目。另外,我们还可以选择蓝色框中的选项,这些选项可以让我们直接生成对应的完整的项目。我们可以把这些项目作为例程学习。 我们创建了全新的项目后,软件就已经给我们生成了相关的文件夹和文件。
用于添加和配置功能模块,端口(文件1)
用于设置管脚,类似FPGA的分配管脚(文件2)
Main.c,主函数文件,按照一般的MCU编程
每个功能模块或者是端口都有对应的配置文件夹和配置文件,有时间读一下,发觉这就是对应的头文件,配置和功能函数。
然后我们双击文件1(TOPDESIGN.CYSCH),从文件名来看,就已经有点像我们用PROTEL来做硬件电路板的原理图文件名,其实真的是类似的,如下图 这个项目只需要用到三个管脚来控制各三色的LED,所以我们把“Digital Output Pin”直接拖进工作区就添加成功了。 然后双击刚才添加的PIN,进入对应PIN的配置界面。
接着就是配置管脚号,这个管脚配置就相当于C语言的“sbit PIN_B= P0^2”,但在这里我们就是通过下拉菜单选择完成。双击文件二(led.cydwr),按照表中的参数修改就可以了。 到这个位置,配置M0的环节就完成了,或者说我们已经生产了一个M0,后面通过菜单栏的BUILD>>GENERATE APPLICATION,然后系统就会生成系统中模块需要的文件,剩下的工作就是编写MAIN.C函数。 1.3.2 编写函数在编写MAIN.C函数前,推荐大家看一下刚才生成的文档,我们现在就拿文件夹《PIN_B》下的PIN_B.C来看一下(文件名跟我们添加的端口或模块是同名的) PIN_B.C下有几个函数,其中我们要用的就一下这个 void Pin_B_Write(uint8 value) { uint8 drVal = (uint8)(Pin_B_DR & (uint8)(~Pin_B_MASK)); drVal = (drVal | ((uint8)(value << Pin_B_SHIFT) & Pin_B_MASK)); Pin_B_DR = (uint32)drVal; }
上面的硬件生成过程会把我们需要用到的端口函数都准备好了,我们只要懂得使用就是好,所以很方便入门。 MAIN.C函数如下: void main() { /* Place your initialization/startup code here (e.g. MyInst_Start()) */ unsigned long i; /* CyGlobalIntEnable; */ /* Uncomment this line to enable global interrupts. */ for(;;) { /* Place your application code here. */ Pin_R_Write(0); Pin_G_Write(1); Pin_B_Write(1); for(i=0;i<2000000;i++);
Pin_R_Write(1); Pin_G_Write(0); Pin_B_Write(1); for(i=0;i<2000000;i++);
Pin_R_Write(1); Pin_G_Write(1); Pin_B_Write(0); for(i=0;i<2000000;i++);
} }
一个很简单的入门例子就完成了。然后就是编译和下载。 1.3.3 编译下载 通过菜单栏的BUILD>>“BUILD 文件名”或者shift F6编译工程。 通过菜单栏的DEBUG>>“PROGRAM”或者ctrl F5 下载工程。下载完毕,就可以看到开发工具上的三色LED在闪烁了。 1.3.4 仿真 软件和硬件都支持在线仿真,所以我们可以尝试一下。通过菜单栏的DEBUG>>“DEBUG”或者 F5 进入DEBUG。仿真这个环节跟其他的开发工具都是类似的,使用很方便。 1.3.5 使用比较软件提供了很多配置的界面和功能选项,这些功能都可以让用户非常直观的了解到这个芯片系统的构成,而且很容易上手,这点非常好,更可以说明软件的功能强大。但有的朋友可能比较习惯直接用代码来配置功能,其实都是可以的。现在我们举个例子来说明一下。 在文件夹《PIN_B》下的PIN_B.C有这么一段函数,是用来配置端口的模式的 void Pin_B_SetDriveMode(uint8 mode) { SetP4PinDriveMode(Pin_B__0__SHIFT, mode); }
其实上面的一段代码可以通过软件提供的选项来实现,刚才我们在配置PIN功能的时候有这么一个界面,在这个界面我们也可以配置相同的功能。 所以软件提供的强大的功能,能够方便我们在编程时候了解芯片的性能,在时候的工程中,我们还是需要去了解芯片的内部寄存器和原理。 1.3.6 输入应用在上面的例子中,有了输出的应用,在这里顺便把按键的输入也一起加入。其他的步骤按照上面的,只要在文件1(TOPDESIGN.CYSCH)中再添加一个输入端“Digital input Pin”,然后在配置端口号就可以了,这次我们不用软件了配置端口的寄存器,而是直接用软件提供的函数来配置。 把输入端口配置到SW2(P0.7),MAIN.C代码如下 void main() { Pin_1_SetDriveMode(3); //配置输入端上拉 Pin_1_Write(1); //配置输入端初始化为1 for(;;) { if(Pin_1_Read()) //读取端口值 { Pin_R_Write(1); //控制LED的状态 } else { Pin_R_Write(0); } } } |