最近在使用LPC2388开发产品,连开发板上的LED灯都闪不起来,问题如下:
#include "config.h"
#define BEEP (1 << 27) // P0.7控制蜂鸣器,低电平蜂鸣
#define LED (0xff) //p2.0~p2.7对应LED1~LED8
/**********************************************************************************************************
** 函数名称 :DelayNS
** 函数功能 :长软件延时
** 入口参数 :dly 延时参数,值越大,延时越久
** 出口参数 :无
**********************************************************************************************************/
void DelayNS(uint32 dly)
{
uint32 i;
for (; dly > 0; dly--)
for (i = 0; i < 50000; i++);
}
/**********************************************************************************************************
** 函数名称 :main
** 函数功能 :用P1.27控制BEEP,让BEEP鸣叫。
** 调试说明 :需将跳线JP21短接。
**********************************************************************************************************/
int main(void)
{
SCS = SCS | 0x01; // PORT0和PORT1端口连接到高速端口
FIO2MASK = 0x00000000;
PINSEL3 = 0x00000000; // 设置管脚连接GPIO
FIO1SET = BEEP; // P1.27输出高电平
FIO1DIR = FIO1DIR | BEEP; // 设置增强型端口P1.27为输出口
DelayNS(10);
PINSEL4 = 0x00000000;
FIO2SET = LED;
FIO2DIR = FIO2DIR | LED;
while (1)
{
FIO1SET = BEEP; // P1.27输出高电平
FIO2SET = LED;
DelayNS(50);
FIO1CLR = BEEP; // P1.27输出低电平
FIO2CLR = LED;
DelayNS(50);
}
return (0);
}
就是没有反应,LED1~LED8没有反应,真是邪门了,清大家有帮忙分析/测试一下。
我用ADS1.2观察寄存器,GPIO端口方向寄存器没有设置成功,始终为0x00000000;
初始化后,进入主循环时,寄存器如下
P1.27方向设置成功,而P2.0~P2.7始终为输入方向,导致始终驱动不了LED1~LED8;
手动在ADS1.2中修改内存,一样不能改,寄存器FIO2DIR好像变成只读的了,不知道是什么原因?
附上测试代码:
https://static.assets-stash.eet-china.com/album/old-resources/2010/3/22/539e84d8-ce93-444a-8a3a-63905ba0967d.rar
最后请教别人才知道,在代码初始化前,加入一句:
加一句: PINSEL10 = 0;
就搞定了,总结一下:
真丢人,这个问题折磨了我快一周了,数据手册没有搞明白;
1.在原理图上,RTCK pin被弱下拉到GND;
2.参考lpc23xx_us_en[1].pdf, 由p147处可知,P2.0~P2.9默认使能为ETM,需要软件设置PINSEL10 = 0,来手动禁止ETM,使能P2.0~2.9的GPIO功能;
用户377235 2013-10-8 15:22
用户120337 2010-3-23 10:57