当前位置:首页 > 嵌入式 > 嵌入式微处理器
[导读]‍‍去年腾讯为了宣传自己针对物联网的开源操作系统TencentOStiny,举办了一场试用活动,当时幸运获得一块,但是当时公司任务较重,一直吃灰。板子实物就这样,没啥好介绍的,都是基础的外设,如今闲来无事,再加上众多大神完善了git库,使开发变得容易,所以索性掏出来玩一下。这次主...

‍‍


去年腾讯为了宣传自己针对物联网的开源操作系统TencentOS tiny,举办了一场试用活动,当时幸运获得一块,但是当时公司任务较重,一直吃灰。


板子实物就这样,没啥好介绍的,都是基础的外设,如今闲来无事,再加上众多大神完善了git库,使开发变得容易,所以索性掏出来玩一下。这次主要实现以下几个功能:
在腾讯物联网平台创建项目和产品(此处为智能灯)
通过平台控制灯
使用腾讯连连微信小程序控制灯

一.上手体验helloworld
腾讯物联网终端操作系统 TencentOS tiny 简介
腾讯物联网终端操作系统(TencentOS tiny)是腾讯面向物联网领域开发的实时操作系统,具有低功耗,低资源占用,模块化,安全可靠等特点,可有效提升物联网终端产品开发效率。TencentOS tiny 提供精简的 RTOS 内核,内核组件可裁剪可配置,可快速移植到多种主流 MCU 及模组芯片上。而且,基于RTOS内核提供了丰富的物联网组件,内部集成主流物联网协议栈(如 CoAP/MQTT/TLS/DTLS/LoRaWAN/NB-IoT 等),可助力物联网终端设备及业务快速接入腾讯物联网平台。
这是来源于官网的介绍,到底好不好还得看使用,对于我们新手,直接从源码开始,方便体验上手:TencentOS_ting源码仓库。

从仓库拉取下来后文件夹目录如下:


这里简单介绍几个主要的文件夹:
board文件夹这个文件夹中包含了目前为止TencentOS tiny 适配的开发板合集,在测试学习的时候非常好用,基本上热门的开发板均有适配。如果自己适配了新的开发板可以在开发完成后提交合并上去,为后续的开发者提供便利,到手即用。目前已适配很多。
   
device文件夹
该文件夹为TencentOS tiny支持的通信模组,包括了NB-IOT,wifi,2G,4G,lora。基本满足开发需求,使用很方便。


components文件夹
组件文件夹,包括上云组件,文件系统,安全组件,其中上云组件集合了各种常用的上云方式:


测试第一个代码:
根据自己的开发板在encentOS-tiny\board文件夹下寻找相对应的开发板,我这里选择TencentOS_tiny_EVB_MX_Plus,进入文件夹,打开KEIL文件,打开hello_world工程。
工程结构:


主函数中初始化了开发板的外设和任务的创建启动


board_init();初始化了系统的时钟,UART,定时器和OLED的显示,所以编译烧录后可以在屏幕上显示相关信息。
ce: normal;word-break: break-all;color: rgb(68, 68, 68);font-family: Tahoma, "Microsoft Yahei", Simsun;font-size: 16px;text-align: start;background-color: rgb(242, 249, 253);">

hello_world.c文件主要是创建任务,以及任务之间的调用。可以在串口观察任务运行情况

#define TASK1_STK_SIZE          1024void task1(void *arg);osThreadDef(task1, osPriorityNormal, 1, TASK1_STK_SIZE);#define TASK2_STK_SIZE 1024void task2(void *arg);osThreadDef(task2, osPriorityNormal, 1, TASK2_STK_SIZE);#if TOS_CFG_TASK_DYNAMIC_CREATE_EN > 0u#define TASK3_STK_SIZE 512void task3(void *arg);#endifvoid task1(void *arg){#if TOS_CFG_TASK_DYNAMIC_CREATE_EN > 0u osThreadId task_dyn_created; osThreadDynamicDef(task3, osPriorityNormal, 1, TASK3_STK_SIZE); task_dyn_created = osThreadCreate(osThread(task3), NULL);int count = 0;#endifwhile (1) {printf("###I am task1\r\n"); osDelay(2000);#if TOS_CFG_TASK_DYNAMIC_CREATE_EN > 0uif (count == 3) {printf("###I am task1, kill the task3(dynamic created)\r\n"); osThreadTerminate(task_dyn_created); }#endif }}void task2(void *arg){while (1) {#if TOS_CFG_TASK_STACK_DRAUGHT_DEPTH_DETACT_EN > 0uk_err_t rc;int depth; rc = tos_task_stack_draught_depth(K_NULL,
嵌入式ARM

扫描二维码,关注更多精彩内容

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭