请教一个GPIO的问题?希望高手能给予解答,谢谢 【恢复】
我现在正在使用CY7C63813,用的是PSOC 4.4,想让它完成一个最基本的功能,就是驱动一个外部引脚P1.4 的 LED,程序应该很简单,可我捣鼓了半天还是不成,很是疑惑,程序如下://----------------------------------------------------------------------------
// C main line
//----------------------------------------------------------------------------
#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
BYTE i;
BYTE PRT1DR_BUFF;
void main()
{
CPUCLKCR |=0X01; //使用外部12M时钟
OSC_CR0 |=0X03; //选择时钟分频:1
P14CR &= 0XEF; // P14设成输出
M8C_EnableGInt; // and Global Interrupts
while(1)
{
for(i=0;i<100;i++)
PRT1DR_BUFF &= ~(0x10);
PRT1DR = PRT1DR_BUFF;
}
// Insert your main routine code here.
}
下载器我用的是Xeltek的SUPERPRO/3000U,直接把PSOC生成的hex文件下载到芯片,下载正常,但是单片价不工作,很是郁闷,硬件连接图如附件所示:
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_586444.JPG
(原文件名:63813.JPG) 你还是先找点最基本的入门资料对照着,STEP BY STEP吧,CY站上有,如何开始使用designer。
在designer中建立工程,选择器件后,就应该配置了,如:加入要用的用户模块,配置系统时钟、I/O、引脚内部连接等。不是要你编程,是点鼠标,你点完了,designer帮你生成代码。
不知道你自己独立玩过其它的什么东西吗。如果是正规学校培养的,那比较麻烦。因为目前我们学校的应试教育方法根本不适应培养电子技术方面的工程师。 谢谢马老师解答,‘简单一点的话(在使用中不改变I/O的工作方式),直接就在器件配置时直接将I/O脚P1.4配置成强输出方式,不用在程序中配置。’这个器件配置是在哪个文件中设置呢?这个是我疑惑的地方 P14CR &= 0XEF; // P14设成输出
这里好象有问题。你看一下器件手册。根据我使用其它的PSoC器件,I/O的工作方式是通过3个寄存器控制的。
简单一点的话(在使用中不改变I/O的工作方式),直接就在器件配置时直接将I/O脚P1.4配置成强输出方式,不用在程序中配置。
具体配置寄存器请看上面帖子:“关于PSoC GPIO的应用讨论___问题不是这样的简单,已经发到CYPRESS请求帮助,结果和总结在16、21、22、28楼” 谢谢马老师解答,LED如果亮也好了,LED一直不亮,我量了一下P1.4脚的电压,是4V左右,把LED去掉就是1.2V,好像程序根本就没有运行似的,所以很奇怪,以前我用AVR的时候,对I\O操作也就是设置输出、出入方向,然后再让它输出0或者1,不知道这个还有什么特殊要求? 我的建议是:没有比较好玩8位MCU的基础,是玩不了PSoC的。
其它原因先不说,就你下面的代码:
while(1)
{
for(i=0;i<100;i++)
PRT1DR_BUFF &= ~(0x10);
PRT1DR = PRT1DR_BUFF;
}
在12M的时钟下,如果LED闪烁,你能看出来吗?你看到的LED总是亮的。 很多时候,Technical Reference Manual和Application Notes就是你最好的老师,开始玩的时候读读文档是必须的。
PSOCConfigTBL.asm文件就包含“点鼠标”后的芯片配置参数。
http://cache.amobbs.com/bbs_upload782111/files_14/ourdev_435375.JPG
Technical Reference Manual (原文件名:GPIO drive mode.JPG) 真是乱去了
页:
[1]