• CMSIS Example


    1
    2    #include <stdint.h>
    3    
    4    #include "bsp-fifisdr.h"
    5    
    6    #include "lpclib.h"
    7    #include "task-gui.h"
    8    
    9    
    10    #define GUI_QUEUE_LENGTH                        (4)
    11    
    12    
    13    typedef struct {
    14        uint8_t opcode;
    15    } GUI_Message;
    16    
    17    
    18    /** Message opcodes for GUI task. */
    19    enum {
    20        GUI_OPCODE_LED_TICK,
    21    };
    22    
    23    
    24    /** Identifiers for OS timers. */
    25    enum {
    26        GUI_TIMERMAGIC_LED,
    27    };
    28    
    29    
    30    /** Local task context. */
    31    static struct {
    32        osMailQId queue;
    33        osTimerId ledTick;
    34        int led;
    35    } gui;
    36    
    37    
    38    
    39    static void GUI_osalCallback (void const *pArgument)
    40    {
    41        (void) pArgument;
    42    
    43        if (gui.queue == NULL) {
    44            return;
    45        }
    46    
    47        GUI_Message *pMessage = osMailAlloc(gui.queue, 0);
    48    
    49        if (pMessage == NULL) {
    50            return;
    51        }
    52    
    53        pMessage->opcode = GUI_OPCODE_LED_TICK;
    54        osMailPut(gui.queue, pMessage);
    55    }
    56    
    57    
    58    osMailQDef(guiQueue, GUI_QUEUE_LENGTH, GUI_Message);
    59    osTimerDef(led, GUI_osalCallback);
    60    
    61    void GUI_task (const void *pArgs)
    62    {
    63        (void) pArgs;
    64        GUI_Message *pMessage;
    65        osEvent event;
    66    
    67    
    68        gui.queue = osMailCreate(osMailQ(guiQueue), NULL);
    69    
    70        gui.ledTick = osTimerCreate(osTimer(led), osTimerPeriodic, (void *)GUI_TIMERMAGIC_LED);
    71        osTimerStart(gui.ledTick, 500);
    72    
    73        while (1) {
    74            /* Is there a new message? */
    75            event = osMailGet(gui.queue, osWaitForever);
    76            if (event.status == osEventMail) {
    77                pMessage = (GUI_Message *)event.value.p;
    78                switch (pMessage->opcode) {
    79                case GUI_OPCODE_LED_TICK:
    80                    gui.led = gui.led ^ 1;
    81                    BSP_setLed(gui.led);
    82                    break;
    83                }
    84    
    85                osMailFree(gui.queue, pMessage);
    86            }
    87        }
    88    }
  • 相关阅读:
    Java实现 洛谷 P1028 数的计算
    Java实现 洛谷 P1028 数的计算
    Java实现 洛谷 P1028 数的计算
    Nginx+Memcached+Tomcat集群配置(MSM--win7 64bit)
    Tomcat安装、配置、优化及负载均衡详解
    Nginx+Tomcat+Memcached部署
    Nginx+Tomcat+Memcached实现会话保持(MSM)
    Nginx+tomcat配置集群负载均衡
    Nginx+Tomcat搭建高性能负载均衡集群的实现方法
    Nginx+Tomcat的配合使用
  • 原文地址:https://www.cnblogs.com/shangdawei/p/3854411.html
Copyright © 2020-2023  润新知