zoukankan      html  css  js  c++  java
  • 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灯周期性的闪烁。

  • 相关阅读:
    Softmax
    网络流模板大全
    简单数据结构题(from 钟子谦——IOI2018集训队自选题)
    [POJ3177]Redundant Paths
    [BZOJ1051][HAOI2006]受欢迎的牛
    [BZOJ2036]聪明的阿卑多
    [BZOJ1455]罗马游戏
    [POJ2942][LA3523]Knights of the Round Table
    [POJ3352]Road Construction
    练级(train)
  • 原文地址:https://www.cnblogs.com/doiting/p/14108448.html
Copyright © 2011-2022 走看看