1.1 实验目的1) 创建项目 2) 代码编写(三色灯闪烁演示) 3) 跟一般的MCU对比功能和性能 1.2 实验总结1) 在这个例程的应用中,把定时器、分频器、PWM模块归类到一起来测试,主要是这几个功能模块在可编程逻辑的角度来看都是基于分频的原理来实现。而且从官方的数据手册介绍,这类的模块都是在应用中用逻辑来构建的,这样的方式在同步性能上是优于一般的MCU。 2) PWM模块有多种的功能和设置方式,如死区设置,尽管这些功能在现在的MCU中都很普遍了,但是软件IDE用图表的方式来设置还是比较直观明了。 3) 在逻辑器件的使用情况下,如果可以提供仿真那就跟好了。 1.3 实验内容1.3.1 创建项目文档打开软件CREATOR2.2。然后在菜单栏选>>File>>New>>Project进入项目界面,具体的创建流程请参阅《PSOC4软件体验》 我们创建了全新的项目后,软件就已经给我们生成了相关的文件夹和文件。 然后我们双击文件1(TOPDESIGN.CYSCH),从文件名来看,就已经有点像我们用PROTEL来做硬件电路板的原理图文件名,其实真的是类似的,如下图 这个项目用到三个管脚来控制各三色的LED,所以我们把“Digital Output Pin”直接拖进工作区。然后在添加TIME(定时器)、FREQDIV(分频器)、PWM(TCPWM mode),在软件上提供了两种PWM模块,PWM(TCPWM mode)是一个功能更全的模块,用懂这个另外的就是小菜一碟。另外还需要提供CLOCK,这个CLOCK是给模块提供参考时钟源。 然后双击刚才添加的PIN,进入对应PIN的配置界面。尽管这次我们添加了很多的模块,但对外输出的还是只有三个LED的输出管脚。 接着就是配置管脚号,这个管脚配置就相当于C语言的“sbit PIN_B= P0^2”,但在这里我们就是通过下拉菜单选择完成。双击文件二(led.cydwr),按照表中的参数修改就可以了。 到这个位置,配置M0的环节就完成了,或者说我们已经生产了一个M0,后面通过菜单栏的BUILD>>GENERATE APPLICATION,然后系统就会生成系统中模块需要的文件,剩下的工作就是编写MAIN.C函数。 1.3.2 编写函数在这个实验中,其实需要编写的代码并不多,或者说如果全部用软件配置的话,可以不用编写代码。但这样做好像忽略了M0的存在价值,所以我们还是编写几段代码来体现模块灵活的配置方式。 void main() { /* Place your initialization/startup code here (e.g. MyInst_Start()) */ // Pin_R_Write(1); //用于配置LED的上电状态 Pin_G_Write(0); // Pin_B_Write(1); /* CyGlobalIntEnable; */ /* Uncomment this line to enable global interrupts. */ // Clock_1_Start(); //时钟开函数 Clock_1_Stop(); //时钟关函数,时钟关了,由时钟提供时钟源的模块会失效 // Clock_2_Start(); // Clock_2_Stop(); PWM_1_Start(); //打开PWM模块, PWM_1_WritePeriod(0xea60); //设置PWM的周期,要注意不同的边沿对齐方式。 PWM_1_WriteCompare(0x7530); //设置占空比 for(;;) { /* Place your application code here. */ } } /* [] END OF FILE */ 代码中有部分函数被注释了,可以参考注释说明选择试验。 一个很简单的入门例子就完成了。然后就是编译和下载。 1.3.3 编译下载 通过菜单栏的BUILD>>“BUILD 文件名”或者shift F6编译工程。 通过菜单栏的DEBUG>>“PROGRAM”或者ctrl F5 下载工程。下载完毕,就可以看到开发工具上的三色LED在交替闪烁了。 1.3.4 仿真 软件和硬件都支持在线仿真,所以我们可以尝试一下。通过菜单栏的DEBUG>>“DEBUG”或者 F5 进入DEBUG。仿真这个环节跟其他的开发工具都是类似的,使用很方便。 1.3.5 使用比较这几个模块跟一般的MCU内置的功能大同小异,关键在于其配置方式的直接和提供的接口函数方便易用。对于PWM模块的功能,由于可以并联组合,在同步性能是更优。在这个软件IDE中,既然提供了逻辑器件的模块,如果可以提供逻辑的仿真可能会更好。 本章完毕
|