漫谈LiteOS之传感器移植

举报
星辰27 发表于 2020/10/20 16:59:31 2020/10/20
【摘要】 本文基于小熊派开发板简单介绍了如何在LiteOS中移植传感器,从而实现对于传感器的相关控制。


1 hello world

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

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

1.png

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

2.png

首先来介绍一下代码运行的简单流程,之前在漫谈LiteOS系列中介绍过LiteOS 的启动流程,我们知道在程序下载到开发板之后,首先会按一下Reset按键进行开发板的启动,因此在开发板上电之后执行的第一个函数就是ReSet_Handler函数。首先找到对应的启动文件los_startup.S 文件(根据使用的操作系统以及板子MCU系列查找文件目录),可以看到其由汇编语言编写,具体启动流程在漫谈LiteOS系列中已经介绍过,这里只看低91行,运行到main函数,接下来程序将从main函数开始执行。

3.png

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

4.png

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!。接下来我们进行传感器的移植。

5.png

2 传感器移植

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

6.png

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

7.png

首先我们需要添加传感器头文件到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);

具体如下图

8.png

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

9.png


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。