目录
GPIO引脚和寄存器概述
点亮LED灯步骤
1.配置GPIO
2.点亮LED
设置引脚为输出
控制引脚电平
完整代码
PWM
GPIO引脚和寄存器概述
- GPIO端口:
- S3C2440的GPIO引脚可被配置为输入或输出(控制LED的引脚通常配置为输出模式)。
- 寄存器:
- PnCON:用于设置引脚的工作模式(输入或输出)。
- PnDAT:用于设置或读取引脚的电平状态(高或低)。
点亮LED灯步骤
1.配置GPIO
根据你的开发板的硬件手册,确定连接LED的GPIO口。
配置该GPIO为输出模式。
2.点亮LED
将GPIO口输出高电平(或低电平,视LED连接方式而定)来点亮LED。
以下均以S3C2440开发板为例,具体步骤如下:
在开发板原理图中找到控制LED的引脚端口,进而对引脚进行相应的输出配置,由下图可知当nLED_1输出为低电平时,LED1被点亮。
从下图可知nLED_1是由GPB寄存器来控制的;对应的控制引脚端口为GPB5,故需使GPBDAT的第五位输出为低电平;
在S3C2440手册中查到将GPB5的第十位和第十一位设置为01时即为输出状态。
设置引脚为输出
GPBCON &= ~(0x3 << 10); //清除GPB5的配置GPBCON |= (0x1 << 10); //设置GPB5为输出模式
控制引脚电平
点亮LED:将引脚设置为高电平,通过将GPBDAT
寄存器对应位设置为1
。
GPBDAT &= ~(1 << 5);
熄灭LED:将引脚设置为低电平,通过将GPBDAT
寄存器对应位设置为0
。
GPBDAT |= (1 << 5);
完整代码
#define GPBCON (*(volatile unsigned long *)0x56000010UL)
#define GPBDAT (*(volatile unsigned long *)0x56000014UL)void c_deal_swi(unsigned int num)
{switch(num){case 5:break;default:break;}
}//初始化
void led_init(void)
{//配置GPB5功能为输出GPBCON &= ~(0x3 << 10);GPBCON |= (0x1 << 10); //使GPB5输出高电平(关灯)GPBDAT |= (1 << 5);
}//点亮LED
void led_on(void)
{GPBDAT &= ~(1 << 5);
}//熄灭LED
void led_off(void)
{GPBDAT |= (1 << 5);
}void main(void)
{led_init();while(1){led_on();led_off();}}
PWM
PWM(脉宽调制)定时器基本原理是通过改变信号的占空比来调节输出功率。
周期 (T):一次高电平开始到下次高电平开始之间的时间。PWM信号是一个周期性方波信号,具有固定的频率。每个周期内,信号会在高电平和低电平之间切换。频率 : 1/T占空比 :占空比是指高电平持续时间与整个周期时间的比值,通常用百分比表示。占空比越高,输出的平均电压越高,反之亦然。