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

目录
相关文章
|
算法 IDE 开发工具
火爆全网开源额温枪同平台之华大HC32L136 SDK开发入门
火爆全网开源额温枪同平台之华大HC32L136 SDK开发入门
245 1
|
机器学习/深度学习 人工智能 PHP
百度AI开发平台图像增强与特效API-SDK接口PHP实战记录
百度AI开发平台图像增强与特效API-SDK接口PHP实战记录
145 0
百度AI开发平台图像增强与特效API-SDK接口PHP实战记录
|
3月前
|
数据采集 开发工具 Python
海康威视工业相机SDK+Python+PyQt开发数据采集系统(支持软件触发、编码器触发)
该系统基于海康威视工业相机SDK,使用Python与PyQt开发,支持Gige与USB相机设备的搜索及双相机同时显示。系统提供软件触发与编码器触发模式,并可在数据采集过程中实时保存图像。此外,用户可以调节曝光时间和增益,并进行信息输入,这些信息将被保存至配置文件以便下次自动加载。参数调节与实时预览等功能进一步增强了系统的实用性。
155 1
|
3月前
|
存储 监控 开发工具
Django 后端架构开发:手机与邮箱验证码接入、腾讯云短信SDK和网易邮箱
Django 后端架构开发:手机与邮箱验证码接入、腾讯云短信SDK和网易邮箱
60 0
|
4月前
|
NoSQL 开发工具 数据库
开发与运维测试问题之应用启动报 Can not load this fake sdk class 的异常如何解决
开发与运维测试问题之应用启动报 Can not load this fake sdk class 的异常如何解决
|
6月前
|
开发工具 CDN 容器
基于Html+腾讯云播SDK开发的m3u8播放器
周末业余时间在家无事,学习了一下腾讯的云播放sdk,并制作了一个小demo(m3u8播放器),该在线工具是基于腾讯的云播sdk开发的,云播sdk非常牛,可以支持多种播放格式。
233 1
|
5月前
|
API 开发工具
抖音sdk,抖音开发api接口
抖音sdk,抖音开发api接口
|
API 开发工具 C#
一套基于 .NET Core 开发的支付SDK集 - paylink
一套基于 .NET Core 开发的支付SDK集 - paylink
129 1
|
6月前
|
Java 开发工具 Maven
Android SDK开发的那些事(1),已整理成文档
Android SDK开发的那些事(1),已整理成文档
|
文字识别 API 语音技术
百度语音技术:文字识别转化为语音在线API和PHP-SDK开发文档的学习
百度语音技术:文字识别转化为语音在线API和PHP-SDK开发文档的学习
102 0