GPIO能在输出模式,配置成2mA、4mA或8mA的驱动能力,算是LM的特色之一吧,我们就使用GPIO驱动能力可调,改变驱动电流,控制LED的亮度变化,只能是三种间断的变化。使用API设置:
GPIOPadConfigSet(GPIO_PORTF_BASE,LED,GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD);
如果要连续变化,从亮到暗到亮,只能通过PWM不同占空比的电压,一个周期的平均电压的改变,亮度才改变,这个下次介绍。
下面是程序代码
#include "inc/lm3s8962.h"
#include "inc/hw_types.h"
#include "driverlib/sysctl.h"
#include "inc/hw_memmap.h"
#include "driverlib/gpio.h"
#define LED GPIO_PIN_0
void delay(unsigned long ulLoop)
{
while(ulLoop--);
}
int main(void)
{
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_8MHZ);//分配时钟
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIODirModeSet(GPIO_PORTF_BASE,LED,GPIO_DIR_MODE_OUT);
GPIOPadConfigSet(GPIO_PORTF_BASE,LED,GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD);
GPIOPinWrite(GPIO_PORTF_BASE,LED,1);
while(1)
{
delay(200000);
GPIOPadConfigSet(GPIO_PORTF_BASE,LED,GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD);
delay(200000);
GPIOPadConfigSet(GPIO_PORTF_BASE,LED,GPIO_STRENGTH_4MA, GPIO_PIN_TYPE_STD);
delay(200000);
GPIOPadConfigSet(GPIO_PORTF_BASE,LED,GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);
delay(200000);
}
}