共计 1697 个字符,预计需要花费 5 分钟才能阅读完成。
摘要: 本文基于小熊派开发板简略介绍了如何在 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:%dn", (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);
具体如下图
之后咱们编译烧录,通过串口验证一下传感器的移植是否正确。
点击关注,第一工夫理解华为云陈腐技术~