• Ambiq MicroAMA3B2KKKBR芯片可穿戴产品解决方案开发之基于Freertos系统的按键和LED控制


    一 前记
    freetos在可穿戴设备上应用十分广泛,用来实现基本的按键和led控制,来熟悉它的基本架构。这是一个不错的尝试。
    二 源码分析
    1 系统初始化
    这个启动task,相当于系统的入口函数,这里的setup_task承担着这个task的工作。
        xTaskCreate(setup_task, "Setup", 512, 0, 3, &xSetupTask);

    2 这里才是启动ledtask的地方,相当于从系统初始进程里面生出来一个工作的进程。

    void setup_task(void *pvParameters)
    {
        //
        // Print a debug message.
        //
        am_util_debug_printf("Running setup tasks...\r\n");
    
        //
        // Run setup functions.
        //
        LedTaskSetup();
        
        //disable_print_interface();
        
        //
        // Create the functional tasks
        //
        xTaskCreate(LedTask, "LEDTask", 512, 0, 3, &led_task_handle);
        //
        // The setup operations are complete, so suspend the setup task now.
        //
        vTaskSuspend(NULL);
    
        while (1);
    }

    3 在LedTask函数里面,是系统真正工作的处理:

    void LedTask(void *pvParameters)
    {
        uint32_t bitSet;
    
        while (1)
        {
            //
            // Wait for an event to be posted to the LED Event Handle.
            //
            bitSet = xEventGroupWaitBits(xLedEventHandle, 0x7, pdTRUE,
                                pdFALSE, portMAX_DELAY);
            if (bitSet != 0)
            {
                // Button Press Event received
                // Toggle respective LED(s)
                if (bitSet & (1 << 0))
                {
                    am_devices_led_toggle(am_bsp_psLEDs, 0);
                    am_util_debug_printf("LEDTask: led1 switch \n");
    
                }
                if (bitSet & (1 << 1))
                {
                    am_devices_led_toggle(am_bsp_psLEDs, 1);
                    am_util_debug_printf("LEDTask: led2 switch \n");
    
                }
                if (bitSet & (1 << 2))
                {
                    am_devices_led_toggle(am_bsp_psLEDs, 2);
                    am_util_debug_printf("LEDTask: led3 switch \n");
    
                }
            }
        }
    }
    三 效果展示
    编译下载之后,可以看到系统的日志信息:
     
    尝试按键,发现每个按键是对应一个led的。说明功能完全ok了。
     
    四 总结
     
    一步步下来,发现AMA3B的上手速度还是比较快的。文档和代码比较全。
  • 相关阅读:
    BZOJ 1072: [SCOI2007]排列perm
    BZOJ 1071: [SCOI2007]组队
    HDP集群部署
    使用Kubeadm部署kubernetes集群
    Docker 私有仓库
    Docker Compose
    Dockerfile使用
    Docker应用部署(Mysql、tomcat、Redis、redis)
    Docker 容器的数据卷 以及 数据卷容器
    Docker 服务、镜像、容器简单命令使用
  • 原文地址:https://www.cnblogs.com/dylancao/p/16093661.html
Copyright © 2020-2023  润新知