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灯周期性的闪烁。

  • 相关阅读:
    java实现LFU算法
    2.1 测试函数-Rastrigin函数
    VM虚拟机如何与主机共享文件夹
    .bashrc文件和.bash_profile文件的区别
    1.2 准备工作
    1.1 JSOP架构
    vue中页面跳转拦截器的实现方法
    Javascript性能优化阅读笔记
    理解 e.clientX,e.clientY e.pageX e.pageY e.offsetX e.offsetY
    Vue.directive()的用法和实例
  • 原文地址:https://www.cnblogs.com/doiting/p/14108448.html
Copyright © 2011-2022 走看看