M5310-E之SDK开发

简介: build执行编译,build clean清除编译• win+R进入windows的命令行• cd到SDK的根目录• build

M5310-E SDK学以致用


1、SDK编译


build执行编译,build clean清除编译

  • win+R进入windows的命令行
  • cd到SDK的根目录
  • build

编译成功则会在out目录下生成 .fwpkg 编译产物,可直接下载到板子里面


2、SDK根目录结构介绍


OpenCPU SDK代码目录结构,如下图所示:

名称

描述
custom 用户代码目录、用户程序入口
docs 文档
examples 示例代码
include OpenCPU API 头文件
out 编译输出目录
prebuild 预编译文件
third-party 第三方开源代码库
tools 编译工具脚本

在进行二次开发时可以多参考官网提供的手册以及docs目录和examples目录,提供了相当丰富的外设驱动源码例程


3、SDK重要文件介绍


我们比较关心的是如何添加.c和.h文件到工程中,以及如何通过编译


3.1 程序入口函数


以下cm_opencpu_entry即为我们所认知的main函数


3.2 新增.c和.h文件编译


方法很简单,在custom.mk文件中新增C_FILES_SOURCE += custom/src/xxx.c即可


3.3 点亮一个LED灯


led.c

#include "led.h"
#include "cm_gpio.h"
#include "cm_iomux.h"
#include "cm_os.h"
cm_gpio_num_e led_gpio = CM_GPIO_NUM_14;
/*
 *  函数名: led_on
 *  描述: 打开 LED
 */ 
void led_on(void)
{
    cm_gpio_set_level(led_gpio, CM_GPIO_LEVEL_HIGH);
}
/*
 *  函数名: led_off
 *  描述: 关闭 LED
 */ 
void led_off(void)
{
    cm_gpio_set_level(led_gpio, CM_GPIO_LEVEL_LOW);
}
/*
 *  函数名: led_init
 *  描述: led 初始化函数, 将引脚 21 复用为 GPIO_14
 */ 
void led_init(void)
{
    cm_gpio_cfg_t cfg = {0};
    cm_gpio_level_e level = CM_GPIO_LEVEL_LOW; 
    cm_iomux_pin_e pin = CM_IOMUX_PIN_21;
    cm_iomux_func_e fun = CM_IOMUX_FUNC_PIN21_GPIO_14;
    cfg.direction = CM_GPIO_DIRECTION_OUTPUT;
    cfg.pull = CM_GPIO_PULL_UP;
    // 硬件设计 LED 连接到 21 引脚,此引脚默认为 SPI0_RXD, 因此需要进行复用为 GPIO
    cm_iomux_set_pin_func(pin, fun); // 复用到 GPIO_14
    cm_gpio_init(led_gpio, &cfg);
    cm_gpio_set_level(led_gpio, level);
}

custom_main.c

/**
 *  @file    custom_main.c
 *  @brief   OpenCPU 启动入口
 *  @copyright copyright © 2021 China Mobile IOT. All rights reserved.
 *  @author by 
 *  @date 2021/10/22
 */
#include "custom_main.h"
#include "cm_os.h"
#include "led.h"
static void led_task(void *arg)
{
    (void)arg;
    led_init();
    while (1) {
        led_on();
        osDelay(1000);
        led_off();
        osDelay(1000);
    }
}
/*OpenCPU程序入口*/
void cm_opencpu_entry(void)
{
    /* 用户线程优先级范围osPriorityNormal -> osPriorityNormal5*/
    osThreadAttr_t attr1 = {
        .name = "LED-TASK",
        .priority = osPriorityLow3,
        .stack_size = 1024
    };
    //创建线程 主任务
    osThreadNew(led_task, NULL, (const osThreadAttr_t*)&attr1);
}

此时LED灯循环亮1s灭1s

目录
相关文章
|
10月前
|
算法 IDE 开发工具
火爆全网开源额温枪同平台之华大HC32L136 SDK开发入门
火爆全网开源额温枪同平台之华大HC32L136 SDK开发入门
181 1
|
12月前
|
机器学习/深度学习 人工智能 PHP
百度AI开发平台图像增强与特效API-SDK接口PHP实战记录
百度AI开发平台图像增强与特效API-SDK接口PHP实战记录
109 0
百度AI开发平台图像增强与特效API-SDK接口PHP实战记录
|
12天前
|
API 开发工具
抖音sdk,抖音开发api接口
抖音sdk,抖音开发api接口
|
2月前
|
开发工具 CDN 容器
基于Html+腾讯云播SDK开发的m3u8播放器
周末业余时间在家无事,学习了一下腾讯的云播放sdk,并制作了一个小demo(m3u8播放器),该在线工具是基于腾讯的云播sdk开发的,云播sdk非常牛,可以支持多种播放格式。
181 1
|
2月前
|
Java 开发工具 Maven
Android SDK开发的那些事(1),已整理成文档
Android SDK开发的那些事(1),已整理成文档
|
8月前
|
API 开发工具 C#
一套基于 .NET Core 开发的支付SDK集 - paylink
一套基于 .NET Core 开发的支付SDK集 - paylink
|
2月前
|
API 开发工具 C#
[相机开发] VC++联合相机SDK开发
[相机开发] VC++联合相机SDK开发
52 0
|
2月前
|
人工智能 缓存 前端开发
下一代 AI 开发工具Vercel AI SDK 快速入门
下一代 AI 开发工具Vercel AI SDK 快速入门
223 0
|
8月前
|
开发框架 移动开发 前端开发
基于.Net Core开发的支付SDK,简化支付功能开发
基于.Net Core开发的支付SDK,简化支付功能开发
92 0
|
11月前
|
Java 开发工具 Android开发
逻辑清晰,详解社交源码Android开发SDK
前篇我们讲解了有关如何在IOS平台开发集成SDK,那么今天来给大家简单讲解下如何在社交源码Android客户端上开发集成 SDK。
逻辑清晰,详解社交源码Android开发SDK

热门文章

最新文章