摘要:本文基于小熊派开发板简单介绍了如何在LiteOS中移植传感器,从而实现对于传感器的相关控制。

1 hello world

相信大家无论在学习编程语言开始的第一个函数应该是HelloWorld,本文将从hello_world_demo为大家介绍如何实现传感器的移植工作。

首先我们创建HelloWorld工程,选择STM32_BearPi → hello_world_demo,工程名称可以自定义。

创建之后我们点击编译,然后烧录到开发板,打开VSCode-IoTLink的串口,并按照图中进行设置串口连接参数,之后按键Reset,可以看到串口打印如下图所示。

首先来介绍一下代码运行的简单流程,之前在漫谈LiteOS系列中介绍过LiteOS 的启动流程,我们知道在程序下载到开发板之后,首先会按一下Reset按键进行开发板的启动,因此在开发板上电之后执行的第一个函数就是ReSet_Handler函数。

首先找到对应的启动文件los_startup.S 文件(根据使用的操作系统以及板子MCU系列查找文件目录),可以看到其由汇编语言编写,具体启动流程在漫谈LiteOS系列中已经介绍过,这里只看低91行,运行到main函数,接下来程序将从main函数开始执行。

接下来看main函数,在main函数中,从硬件初始化到内核初始化,之后初始化串口,再到link_test()函数,在该函数中创建了一个任务,其入口函数为Link_main函数。

在Link_main函数的最后调用了一个函数为standard_app_demo_main(),根据IDE查找我们可以看到,在项目中存在大量的该同名函数,那么编译器如何知道具体执行的是哪一个呢,可以看到.config文件中的user_demo宏定义使能的是hello_world_demo,因此执行的是hello_world_demo中的standard_app_demo_main()函数,从而根据其内部创建的任务以及入口函数实现了打印Hello World! This is BearPi!。接下来我们进行传感器的移植。

2 传感器移植

首先我们可以看到在该LiteOS代码中已经包含了大量的传感器代码,这里以E53_SC1为例,当然这些传感器已经和BearPi开发板已经适配好,如果您想使用自己特定的传感器,可以首先将传感器与开发板进行一定的移植,包括引脚以及GPIO的绑定等等。

首先需要将传感器文件路径添加到编译路径中,以使得编译器可以找到该代码,在userdemo.mk中配置传感器文件的相关路径,在该文件中找到hello_world_demo部分添加文件路径。具体如下图83-84行,接着在源文件和头文件变量中添加自定义的变量,user_sensor_src和user_hardware_inc,当然这里如果您直接定义名称为编译路径中已经存在的user_hardware_src和user_hardware_inc,则无需添加相关代码。

首先我们需要添加传感器头文件到helloworld_demo.c中,以实现后面的相关函数调用。

#include    "E53_SC1.h"

之后调用结构体,以便后续打印数据。

E53_SC1_Data_TypeDef    E53_SC1_Data;

然后在hello_world_demo.c文件中,添加传感器数据的任务函数。

static int app_sensor_entry()
{
Init_E53_SC1();
while (1)
{
E53_SC1_Read_Data();
printf("luminance:%d\n", (int)E53_SC1_Data.Lux);
osal_task_sleep(2*1000);
}
return 0; }

在主函数中创建传感器任务函数。

osal_task_create("app_sensor_entry", app_sensor_entry, NULL, 0x400,NULL,2);
osal_task_sleep(2*1000);

具体如下图

之后我们编译烧录,通过串口验证一下传感器的移植是否正确。

点击关注,第一时间了解华为云新鲜技术~

小熊派开发实践丨漫谈LiteOS之传感器移植的更多相关文章

  1. 实践案例丨利用小熊派开发板获取土壤湿度传感器的ADC值

    摘要:一文带你用小熊派开发板动手做土壤湿度传感器. 一.实验准备 1.实验环境 一块stm32开发板(推荐使用小熊派),以及数据线 已经安装STM32CubeMX 已经安装KeilMDK,并导入stm ...

  2. 开发实践丨用小熊派STM32开发板模拟自动售货机

    摘要:本文内容是讲述用小熊派开发板模拟自动售货机,基于论坛提供的工程代码,通过云端开发和设备终端开发,实现终端数据在的华为云平台显示. 本文内容是讲述用小熊派开发板模拟自动售货机,基于论坛提供的工程代 ...

  3. WePY - 小程序敏捷开发实践丨掘金开发者大会

    声明:内容转载他处,如有侵权,可协商下架 本主题虽然在其它地方讲了很多次,但还是有非常多新内容.因为很多东西正在做或者想要做.本次分享主要分为以下几个部分: WePY 的介绍 WePY 的用户 上面展 ...

  4. 微信小程序开发实践

    目录 项目是否适合移植到小程序上? 概要介绍 实践得到的经验 规则 小程序不支持的 新特性 小窍门 会话管理 进阶 项目是否适合移植到小程序上? 小程序由于微信提供了一些组件,在微信中的一些体验确实不 ...

  5. 【小程序】微信小程序开发实践

    帐号相关流程 注册范围 企业 政府 媒体 其他组织 换句话讲就是不让个人开发者注册. :) 填写企业信息 不能使用和之前的公众号账户相同的邮箱,也就是说小程序是和微信公众号一个层级的. 填写公司机构信 ...

  6. $微信小程序开发实践点滴——Bmob基本REST API的python封装

    Refer:Bmob后端云REST API接口文档:http://docs.bmob.cn/data/Restful/a_faststart/doc/index.html 本文使用python对Bmo ...

  7. $微信小程序开发实践点滴——接入Bmob后端云

    Bmob后端云官网:http://www.bmob.cn/ 微信公众平台官网:https://mp.weixin.qq.com/ 微信小程序官方开发文档:https://mp.weixin.qq.co ...

  8. $微信小程序开发实践点滴——Bmob常用API的使用

    Bmob后端云官网:http://www.bmob.cn/ Bmob后端云微信小程序开发文档:http://docs.bmob.cn/data/wechatApp/b_developdoc/doc/i ...

  9. 开发实践丨昇腾CANN的推理应用开发体验

    摘要:这是关于一次 Ascend 在线实验的记录,主要内容是通过网络模型加载.推理.结果输出的部署全流程展示,从而快速熟悉并掌握 ACL(Ascend Computing Language)基本开发流 ...

  10. 手把手教你丨小熊派移植华为 LiteOS-M

    摘要:本文详细讲解如何移植 LiteOS 到小熊派. 本文分享自华为云社区<小熊派移植华为 LiteOS-M(基于MDK)>,作者: JeckXu666. 前言 之前使用小熊派实现了鸿蒙动 ...

随机推荐

  1. python制作定时发送信息脚本

    文章中提到的菜单是右下角这个 需求 我们需要做到打开微信获取输入框焦点及输入 思路 1,获取到右下角菜单的坐标和菜单中微信的坐标以及输入框的坐标 2,定时,用time.sleep()来定义多长时间后触 ...

  2. Tinyalsa PCM API 实现深度剖析

    高级 Linux 音频架构 (ALSA) 用于为 Linux 操作系统提供音频和 MIDI 功能.它可以高效地支持所有类型的音频接口,从消费者声卡到专业的多通道音频接口.它支持全模块化的音频驱动.它是 ...

  3. osx12.6设置全屏

    首先安装VMWARE TOOLS就是unlocker208下的tool的darwin.iso 然后进入终端命令,这里要说一下,好多资料说按COMMAND键,反正我是没有进去,直接在vmware菜单里选 ...

  4. 不写代码、构建一个开源的 ChatGPT,总共需要几步?|Hugging News #1020

    每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...

  5. Python 潮流周刊#25:性能最快的代码格式化工具 Ruff!

    你好,我是猫哥.这里每周分享优质的 Python.AI 及通用技术内容,大部分为英文.标题取自其中一则分享,不代表全部内容都是该主题,特此声明. 本周刊由 Python猫 出品,精心筛选国内外的 25 ...

  6. MongoDB 位置查询报错 planner returned error: unable to find index for $geoNear query

    执行查询语句,使用 $nearSphere /** * 1千米 = 0.6213712英里 15千米 = 9.3205679英里 查询通过除以地球的大约赤道半径(3963.2英里)将距离转换为弧度. ...

  7. Java实现两字符串相似度算法

    1.编辑距离 编辑距离:是衡量两个字符串之间差异的度量,它表示将一个字符串转换为另一个字符串所需的最少编辑操作次数(插入.删除.替换). 2.相似度 计算方法可以有多种,其中一种常见的方法是将编辑距离 ...

  8. 【Javaweb】什么是Listener监听器?

    1.Listener监听器它是Javaweb的三大组件之一.Javaweb的三大组件分别是:Servelt程序,Filter过滤器,Listener监听器. 2.Listener它是JavaEE的规范 ...

  9. idea配置servlet项目找不到servlet jar包爆红【解决办法】

    1.看你的implements 后面的Servlet是否大写了 2.大部分原因就是缺少servlet-api jar包或者idea找不到jar包 如果你是爆红的,那么问题就在这里,点击-号,重新添加这 ...

  10. wps表格求标准差怎么算?

    在WPS表格中,要计算标准差,可以使用STDEV函数.标准差是一种衡量数据集合离散程度的统计指标.下面我将详细介绍如何使用STDEV函数来计算标准差. STDEV函数的语法为:STDEV(range) ...