3.2 GPIO控制RGB灯实验

要使用彩灯,必须打开拨码开关的 234。本节内容我们实现RGB每隔1秒进行闪烁。W800的底板上集成了一个共阳极的彩灯,彩灯的阴极通过拨码开关后连接到 w800的 IO口(PB2、 PB7和 PB11),控制 IO 口为低电平时,对应的灯会亮起来。
首先创建一个LED任务。
static u32 *TaskledStk = NULL;

define TASK_led_PRIO 35

define TASK_led_STK_SIZE 512

tls_os_task_create(NULL, NULL, led_test_task,
(void *)0, (void *)TaskledStk,
TASK_led_STK_SIZE * sizeof(u32),
TASK_led_PRIO, 0);
接下来编写任务程序,IO配置为上拉输出,输出高电平熄灭,输出低电平点亮。
static void led_test_task(void *data)
{
tls_gpio_cfg(WM_IO_PB_02, WM_GPIO_DIR_OUTPUT, WM_GPIO_ATTR_PULLHIGH);//PB2配置为上拉输出
tls_gpio_cfg(WM_IO_PB_07, WM_GPIO_DIR_OUTPUT, WM_GPIO_ATTR_PULLHIGH);//PB7配置为上拉输出
tls_gpio_cfg(WM_IO_PB_11, WM_GPIO_DIR_OUTPUT, WM_GPIO_ATTR_PULLHIGH);//PB11配置为上拉输出

for( ; ; )
{

	tls_gpio_write(WM_IO_PB_02,0);			/*输出高电平*/
	vTaskDelay(500);
	tls_gpio_write(WM_IO_PB_02,1);			/*输出高电平*/
	vTaskDelay(500);

	tls_gpio_write(WM_IO_PB_07,0);			/*输出高电平*/
	vTaskDelay(500);
	tls_gpio_write(WM_IO_PB_07,1);			/*输出高电平*/
	vTaskDelay(500);

	tls_gpio_write(WM_IO_PB_11,0);			/*输出高电平*/
	vTaskDelay(500);
	tls_gpio_write(WM_IO_PB_11,1);			/*输出高电平*/
	vTaskDelay(500);
}

}
程序下载到开发板,可以看到RGB灯周期性的闪烁。

原文地址:https://www.cnblogs.com/doiting/p/14108448.html