如何在LiteOS中移植传感器

68次阅读
没有评论

共计 1798 个字符,预计需要花费 5 分钟才能阅读完成。

今天就跟大家聊聊有关如何在 LiteOS 中移植传感器,可能很多人都不太了解,为了让大家更加了解,丸趣 TV 小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

1 hello world

相信大家无论在学习编程语言开始的第一个函数应该是 HelloWorld,丸趣 TV 小编将从 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 中移植传感器有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注丸趣 TV 行业资讯频道,感谢大家的支持。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-04发表,共计1798字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)