准备工作

  • 一个能正常跑机智云的工程
  • 下载好对应的ucos移植包
  • 将ucos移植到MCU上,并能正常跑LED灯

以上工作漫天的教程…

UCOSIII与机智云的结合

-1、移植是,先知道自己用的MCU是否支持FPU浮点运算,如果支持,在.s文件里面,需要添加一段话:

Reset_Handler    PROCEXPORT  Reset_Handler             [WEAK]IMPORT  SystemInitIMPORT  __main;从这开始LDR     R0, =SystemInitBLX     R0IF {FPU} != "SoftVFP"; Enable Floating Point Support at reset for FPULDR.W   R0, =0xE000ED88         ; Load address of CPACR registerLDR     R1, [R0]                ; Read value at CPACRORR     R1,  R1, #(0xF <<20)    ; Set bits 20-23 to enable CP10 and CP11 coprocessors; Write back the modified CPACR valueSTR     R1, [R0]                ; Wait for store to completeDSB; Disable automatic FP register content; Disable lazy context switchLDR.W   R0, =0xE000EF34         ; Load address to FPCCR registerLDR     R1, [R0]AND     R1,  R1, #(0x3FFFFFFF)  ; Clear the LSPEN and ASPEN bitsSTR     R1, [R0]ISB                             ; Reset pipeline now the FPU is enabledENDIF;到这结束,就上面这段LDR     R0, =SystemInitBLX     R0LDR     R0, =__mainBX      R0ENDP

确定好了之后,在有中断的地方,加上中断保护函数:

void TIM7_IRQHandler(void)
{OSIntEnter();if(__HAL_TIM_GET_FLAG(&htim7, TIM_FLAG_UPDATE) != RESET){if(__HAL_TIM_GET_IT_SOURCE(&htim7, TIM_IT_UPDATE) !=RESET){__HAL_TIM_CLEAR_IT(&htim7, TIM_IT_UPDATE);gizTimerMs();//系统毫秒定时}}OSIntExit();
}

用OSIntEnter()和OSIntExit(),完成之后,单独为机智云创建一个任务

void gizwitsHand_task(void *p_arg)
{   p_arg = p_arg;OS_ERR err;while(1){OSSchedLock(&err);gizwitsHandle((dataPoint_t *)&currentDataPoint);//协议处理userHandle();  OSSchedUnlock(&err);ucos_delay_ms(500);}
}
#define gizwits_task_PRIO                           4
#define gizwits_task_SIZE                           256
OS_TCB  gizwits_task_TCB;
CPU_STK gizwits_task_STK[gizwits_task_SIZE];void gizwits_task_creat(void)
{OS_ERR err;OSTaskCreate(&gizwits_task_TCB,"gizwits task",gizwitsHand_task,0,gizwits_task_PRIO,&gizwits_task_STK[0],gizwits_task_SIZE/10,gizwits_task_SIZE,0,20,0,OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,&err);
}

完成后,试试?反正我就可以了。
值得注意的是,

#define OS_CFG_OBJ_TYPE_CHK_EN          1u

需要将这个置1。
在gizwitsHandle()这个函数执行时,需要加入OSSchedLock()和OSSchedUnlock()给调度器上锁,发送期间不能因调度被打断。

UCOSIII+机智云协议的移植笔记相关推荐

  1. 【STM32移植机智云】超详细教程#2ESP8266移植机智云教程‘代码移植’

    1.引言 本人购买了一个ESP8266的WiFi模块,想做一个物联网控制小灯的demo. 本文记录了基于机智云平台,移植代码,实现物联网小灯详细操作步骤. 并不是移植步骤很麻烦, 只是文章真的写的极其 ...

  2. 机智云STM32平台移植oled显示屏

    机智云gokitSTM32平台移植oled显示屏 首先非常感谢机智云官方提供的免费开发板,需要的同学可以上机智云的官方网站申请. oled简介 OLED,即有机发光二极管( Organic Light ...

  3. leach协议c++代码_入门教程4:教你STM32F407标准库移植机智云代码(控制LED灯)

    我们知道,使用机智云自助开发平台会根据产品定义的数据点生成对应产品的设备端代码即MCU代码包.自动生成的代码实现了机智云通信协议的解析与封包.传感器数据与通信数据的转换逻辑,并封装成了简单的API,且 ...

  4. 基于RT-Thread系统的机智云数字仪表教程(一)——移植RT-Thread的BSP模板

    基于RT-Thread系统的机智云数字仪表教程(一) 目录: 实验内容: 实验平台: 实验前准备工作: 代码: 联系作者: 移植RT-Thread的BSP模板: 1.学习RT-Thread系统(学过的 ...

  5. 机智云代码移植_IoT开发者 | 基于STM32F103的机智云宠物屋外加4路继电器开源教程...

    [ 写在前面 ] 自智云社区开辟IoT开源项目专区以来,一直有IoT开发者在贡献案例.玛莉甄选了一些具有代表性的案例分享给IoT爱好者们,本文亦如此. 若你有好的案例,想和IoT爱好者们分享,欢迎投稿 ...

  6. STM32连接机智云(踩雷日记)

    目录 一.前期准备 二.固件烧写 三.创建机智云产品 ​四.MCU开发 好记性不如赖笔头,为了自己以后开发物联网项目,同时方便大家学习利用机智云进行物联网开发,我觉得有必要把自己的学习经历写下来. 一 ...

  7. 基于物联网的远程温湿度监测系统 --- ESP8266 + 机智云

    基于物联网的远程温湿度监测系统 一.ESP-8266 烧录固件 二.机智云创建产品 三.手机端安装机智云 APP 四.编写 DHT11 驱动 五.机智云工程代码移植 六.采集数据的上发 七.控制数据的 ...

  8. STM32使用ESP8266接入机智云点亮LED教程

    首先我们要访问机智云的官网,注册相应的开发者账号. 机智云开发者中心 点击立即注册后,登陆刚刚注册的账号,来到开发者中心,可以看到如下界面. 点击右侧的创建新产品,开始我们的demo创建. 产品分类, ...

  9. 基于机智云的智能花盆2.0

    目录 一.版本更新内容 二.总体设计 2.1整体模型 2.2硬件结构 2.3软件结构 三.硬件设计 3.1硬件资源布局 3.2主控芯片 3.2.1主控选型 3.2.2引脚配置 3.3数据采集部分 3. ...

最新文章

  1. 【跃迁之路】【725天】程序员高效学习方法论探索系列(实验阶段482-2019.2.15)...
  2. Java实现堆排序及详细图解
  3. azure_Azure ML算法备忘单
  4. 微信开源组件WCDB漫谈及Demo
  5. 这个城市正式将电子烟纳入控烟管理 10月1日起实施
  6. 以父之名想表达什么_科幻电影《猩球崛起3:终极之战》究竟想表达什么?
  7. Uniswap 24h交易量约11.2亿美元涨23.91%
  8. 2018.12.18
  9. JAVA实现二叉树带权路径长度和_哈夫曼树的构建与最小带权路径长度
  10. C语言如何写循环队列,C语言 队列(循环队列)
  11. 大学什么专业学matlab,我选自动化专业,该专业在大学里学些什么课程?
  12. python计算log2×_带有Python示例的math.log2()方法
  13. 有什么什么比较好用又不流氓的独立的弹窗拦截软件?这4款App让你杜绝流氓软件弹窗
  14. Longhorn 云原生容器分布式存储 - 故障排除指南
  15. 非常实用的视频剪辑软件,它可以满足您进行视频制作的需要,使用剪映mac版能够轻松对视频进行各种编辑。
  16. 9.3.2另一种计算机器2
  17. Qt中的C++技术 张波
  18. MYSQL学习思维导图
  19. 实验吧-证明自己吧(超详细)
  20. oracle如何删除一个用户下的所有数据?

热门文章

  1. linux不识别U盘
  2. el-checkbox多选框点击第一次不能勾选,第二次才会勾选
  3. R语言swirl教程(R Programming)13——Simulation
  4. 项目1:德州扑克游戏
  5. C++实现德州扑克游戏(和电脑一起玩)
  6. 联发科AI解决方案芯片i700规格参数介绍
  7. 区块链+:颠覆互联网+模式不是事!
  8. 调用支付jsapi缺少参数 total_fee
  9. mysql启动关闭debug
  10. (转)活灵活现用Git-技巧篇