运行官方例程empty,点亮redLED代码如下。
void *mainThread(void *arg0)
{
/* 1 second delay */
uint32_t time = 1;
/* Call driver init functions */
GPIO_init();
// I2C_init();
// SPI_init();
// UART_init();
// Watchdog_init();
/* Configure the LED pin */
GPIO_setConfig(CONFIG_GPIO_LED_0, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);
/* Turn on user LED */
GPIO_write(CONFIG_GPIO_LED_0, CONFIG_GPIO_LED_ON);
while (1) {
// sleep(time);
// GPIO_toggle(CONFIG_GPIO_LED_0);
}
}
驱动强度如图:

测得LED电压为2.52v

更改驱动能力后电压不变。

巡行官方例程pwmled2
void *mainThread(void *arg0)
{
/* Period and duty in microseconds */
uint16_t pwmPeriod = 3000;
uint16_t duty = 0;
uint16_t dutyInc = 100;
/* Sleep time in microseconds */
uint32_t time = 50000;
PWM_Handle pwm1 = NULL;
PWM_Handle pwm2 = NULL;
PWM_Params params;
/* Call driver init functions. */
PWM_init();
PWM_Params_init(¶ms);
params.dutyUnits = PWM_DUTY_US;
params.dutyValue = 0;
params.periodUnits = PWM_PERIOD_US;
params.periodValue = pwmPeriod;
pwm1 = PWM_open(CONFIG_PWM_0, ¶ms);
if (pwm1 == NULL) {
/* CONFIG_PWM_0 did not open */
while (1);
}
PWM_start(pwm1);
pwm2 = PWM_open(CONFIG_PWM_1, ¶ms);
if (pwm2 == NULL) {
/* CONFIG_PWM_0 did not open */
while (1);
}
PWM_start(pwm2);
/* Loop forever incrementing the PWM duty */
while (1) {
PWM_setDuty(pwm1, duty);
PWM_setDuty(pwm2, duty);
duty = (duty + dutyInc);
if (duty == pwmPeriod || (!duty)) {//控制占空比递增递减
dutyInc = - dutyInc;
}
usleep(time);
}
}
驱动强度如图:

测得redLED波形如下:

高电平电压达到3v
测试期间测试点没有做修改,为什么同一个LED,驱动强度相同的情况下,PWM的电压能达到3v,GPIO只能达到2.5v,gpio驱动强度提高,电压也不变。