ARM初学者的问题:
一个ARM7的GPIO初始化程序,在proteus上进行仿真
CPU: LPC2124;一个LED组LED0至LED7,依此连接P1.24~P1.31
初始化如下
#define BIT2 0x04
#define BIT3 0x08
#define LED_0 BIT24 // P1.24
void Init_GPIOPort(void)
{
//Set to GPIO setting
PINSEL2 = PINSEL2 &(~(BIT2|BIT3));
//LED
IO1DIR |= 0xFF000000; // set LED port to OUTPUT type
IO1CLR|=0xFF000000;// all LED port set to Low
//----Test--
LED_PORT_SET |= 0xFF000000;
}
仿真时发现,只要对GPIO使用了IO1CLR 至零后,LED就一直闪个不停,查了各项设定,关闭了中断,都没有发现问题
请教各位问题可能出在哪里?
------解决思路----------------------
1. 建议使用FreeRTOS。
2. 设置IO输出数据后,需要延时。提供视觉停留。
例如delayXMs()函数。
3. 使用int main(void)函数
调用函数来执行具体任务。
4. 闪灯一般算法如下:
do
{
portX ~= portX;
delayXMs(300);
}while(ucCnt--);
------解决思路----------------------
怀疑你的程序在proteus下是不是一直在重启,所以出现一直闪烁的现象。
------解决思路----------------------
可是设置一个计数器 看看这个函数的进入次数 感觉向一直被reset