Skip to content

yearnext/ysf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ysf——yearnext software framework

GitHub release AUR AUR AUR AUR AUR

目录

框架简介

ysf是一个基于事件驱动的单片机编程框架。

目录介绍

目录名称 功能简介
common 公共组件,包含编译器配置、路径配置、基本数据类型定义以及一些使用工具
framework 包含了框架的api以及相关实现
core 提供了全部api的接口
demo 用于演示最新的api
doc 包含了编程规范、框架结构、文件模版等
hal 硬件驱动
proj 工程目录
stack 协议栈

相关文档

  1. 框架Logo
  2. 框架编程规范
  3. 版本命名规则
  4. 头文件模版
  5. 源文件模版

例程

本例程主要演示单片机GPIO的配置、ysf定时器的使用方式以及ysf事件结构的使用。
/* Includes ------------------------------------------------------------------*/
#include "fw_core.h"

/* Private define ------------------------------------------------------------*/
/**
 *******************************************************************************
 * @brief      define led port and mode
 *******************************************************************************
 */  
#define LED_PORT MCU_PORT_D
#define LED_PIN  MCU_PIN_13
#define LED_MODE GPIO_DIR_OUTPUT

/* Private typedef -----------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/**
 *******************************************************************************
 * @brief      define led device
 *******************************************************************************
 */  
static Hal_Device_t Led;

/**
 *******************************************************************************
 * @brief       timer variable define
 *******************************************************************************
 */ 
static struct Fw_Task        LedTask;
static struct Fw_Timer       LedTimer;

static struct Fw_Timer       PutTimer;

/* Exported variables --------------------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
/**
 *******************************************************************************
 * @brief       led1 blink function
 *******************************************************************************
 */
void Led_Task_Handle(uint32_t event, void *param);

void App_Led_Init(void)
{
    hPortFlag portConfig;
    portConfig.Port = LED_PORT;
    portConfig.Pin  = LED_PIN;
    portConfig.Dir  = LED_DIR;
        
    Hal_Device_Open(&Led, HAL_DEVICE_GPIO, "led");
    Hal_Device_Init(&Led, portConfig.Flag);
    
    Fw_Task_Init(&LedTask, "Led Task", 1, (void *)Led_Task_Handle, FW_MESSAGE_HANDLE_TYPE_TASK);
    
    Fw_Timer_Init(&LedTimer, "Led Timer");
    Fw_Timer_SetTaskHandle(&LedTimer, &LedTask, LED_BLINK_EVENT, (void *)&Led);
    Fw_Timer_Start(&LedTimer, 500, -1);
}

void Led_Task_Handle(uint32_t event, void *param)
{
    Hal_Device_t *drv = (Hal_Device_t *)param;
    
    switch(event)
    {
        case LED_ON_EVENT:
            Hal_Device_Control(drv, HAL_GPIO_WRITE_CMD, 0x01, 1);
            break;
        case LED_OFF_EVENT:
            Hal_Device_Control(drv, HAL_GPIO_WRITE_CMD, 0x00, 1);
            break;
        case LED_BLINK_EVENT:
            Hal_Device_Control(drv, HAL_GPIO_TOGGLE_CMD);
            break;
        default:
            break;
    }
}

/**
 *******************************************************************************
 * @brief       led1 blink function
 *******************************************************************************
 */
void App_Put_Callback(void *param);
void App_Put_Init(void)
{
    Fw_Timer_Init(&PutTimer, "Put User Message Timer");
    Fw_Timer_SetCallback(&PutTimer, App_Put_Callback, NULL);
    Fw_Timer_Start(&PutTimer, 1000, -1);
}

void App_Put_Callback(void *param)
{
    log("Hello World!\r\n");
}

/**
 *******************************************************************************
 * @brief       user init function
 *******************************************************************************
 */
void App_User_Init(void)
{
    App_Led_Init();
    App_Put_Init();
}

Releases

No releases published

Packages

No packages published

Languages