做了LED的定时器的实验。此时LED1到4能够正常点亮与熄灭,但是为什么对应的GPIO接口即GPIO4到8测到的电平都不会发生变化?实际就是我不知道怎么改变GPIO的输出的电平 ?请问是因为中间缺少了什么步骤吗?
DIANJI.H
#ifndef __DIANJI_H__
#define __DIANJI_H__
#define LEFT_On() {GPBDAT|=(1<<6);}
#define LEFT_Off() {GPBDAT&=(~(1<<6));}
#define RIGHT_On() {GPBDAT|=(1<<8);}
#define RIGHT_Off() {GPBDAT&=(~(1<<8));}
#define On1() {GPBDAT&=(0<<5);}
#define On2() {GPBDAT|=(1<<13);}
void DIANJI_Init(void);
#endif
DIANJI.C
#include<s3c2440.h>
#include"dianji.h"
void DIANJI_Init(void)
{
GPBCON&=~((3<<10)|(3<<12)|(3<<16)|(3<<26)|(3<<18)|(3<<28));
GPBCON|=((1<<10)|(1<<12)|(1<<16)|(1<<26)|(1<<18)|(1<<28));
GPBUP&=~((1<<5)|(1<<6)|(1<<8)|(1<<13)|(1<<9)|(1<<14));
GPBDAT|=((0<<5)|(1<<6)|(0<<8)|(0<<13)|(1<<9)|(1<<14));
TIME.C
#include<s3c2440.h>
#include"timer.h"
void Timer0_Init(void)
{
TCFG0&=~(0xff);
TCFG0|=99;
TCFG1&=~(0xf);
TCFG1|=0x02;
TCNTB0=125000;
TCON|=(1<<1);
TCON=0x09;
}
TIME.H
#ifndef __TIMER_H__
#define __TIMER_H__
void Timer0_Init(void);
#endif
MAIN.C
#include<s3c2440.h>
#include"timer.h"
#include"dianji.h"
int main()
{
int flag=0;
DIANJI_Init();
Timer0_Init();
while(1)
{
if(SRCPND&(1<<10))
{
flag=!flag;
SRCPND|=(1<<10);
}
if(1==flag)
{
RIGHT_On();
LEFT_Off();
}
else
{
RIGHT_Off();
LEFT_On();
}
}
}