一、环境

控制器STM32F407+MDK5.34+cJSON1.7.7

二、安装cJSON

MDK中打开Pack Install,选择Generic下边MDK-Pack::cJSON,点击安装Install

安装成功后,在Manage Run-Time Environment 中找到Data Exchange,并选择cJSON,下方点击OK。

可以在工程栏目下看到已经添加了cJSON。

三、使用cJSON

(1)在需要使用的文件中,增加头文件#include "cJSON.h"

(2)使用了操作系统时,用操作系统的内存管理接口替换cJSON默认的内存分配,以FREERTOS为例,调用cJSON_InitHooks函数进行重新指定。

cJSON_Hooks cJSONhooks_freeRTOS;
cJSONhooks_freeRTOS.malloc_fn = pvPortMalloc;
cJSONhooks_freeRTOS.free_fn   = vPortFree;
cJSON_InitHooks(&cJSONhooks_freeRTOS);

(3)创建json对象并打印

cJSON *root,*fmt;
char *out;  root=cJSON_CreateObject();cJSON_AddItemToObject(root, "from", cJSON_CreateString("Jianwang16"));
cJSON_AddItemToObject(root, "body", fmt=cJSON_CreateObject());
cJSON_AddStringToObject(fmt,"cmd", "start");
cJSON_AddNumberToObject(fmt,"port", 5100);
cJSON_AddFalseToObject (fmt,"pwr");   out=cJSON_PrintUnformatted(root);
OS_msgPrintf("size = %d string:%s\r\n\r\n\r\n",strlen(out),out);

(4)cJSON几乎都是动态内存分配,所以使用json对象结束后需要清理内存,清理root对象即可,如果调用了cJSON打印,则需要清理打印输出的char 指针,例如:

cJSON_Delete(root);
vPortFree(out);

四、测试样例和结果

STM32嵌入式系统FreeRTOS使用cJSON解析和构建JSON相关推荐

  1. 计算机三级嵌入式试题讲解,计算机三级嵌入式系统操作题及解析.docx

    PAGE PAGE # 计算机三级嵌入式系统操作题及解析 操作题(一) 1地铁进出站闸机的控制器以 S3C2410芯片为核心,并外加其他功能电 路来进行设计,其基本功能描述如下: a闸机能够识别本地铁 ...

  2. 微型计算机工业控制技术,基于ARM的微机原理与接口技术(STM32嵌入式系统架构编程与应用嵌入式与工业控制技术高等学校电子信息类专业系列教材)...

    导语 内容提要 本书首先介绍微型计算机的相关概念及嵌入式系统的应用,接着介绍Cortex M3微处理器架构及开发方法,介绍汇编语言及其程序设计.在开发应用方面,以STM32F103VET6为背景,介绍 ...

  3. linux模块移植到freertos,FATFS在嵌入式操作系统FreeRTOS中的移植与应用

    摘 要: FreeRTOS作为一款免费的实时操作系统,系统内核小.裁剪方便.移植性好,广泛应用于对成本敏感的小型嵌入式系统中,但是FreeRTOS本身不带文件管理功能,不便于很多需要经常进行文件存储与 ...

  4. 2022-2028年中国嵌入式系统行业市场专项调研及竞争战略分析报告

    报告类型:产业研究 报告格式:电子版.纸介版 出品单位:智研咨询-产业信息网 嵌入式系统由硬件和软件组成.是能够独立进行运作的器件.其软件内容只包括软件运行环境及其操作系统.硬件内容包括信号处理器.存 ...

  5. freertos与linux区别,μClinux、μC/OS-II、eCos、FreeRTOS和djyos操作系统的特点及不足-嵌入式系统-与非网...

    基于 STM 平台且满足实时控制要求操作系统,有以下 5 种可供移植选择.分别为μClinux.μC/OS-II.eCos.FreeRTOS 和都江堰操作系统(djyos). 下面分别介绍这五种嵌入式 ...

  6. GCKontrol与嵌入式系统:STM32实现电机控制案例

    摘要:系统设计与仿真软件GCKontrol能够对控制系统进行建模.仿真与测试.软件基于模型自动生成的代码能够满足嵌入式系统要求.GCKontrol的模型属于"应用层软件",能够与& ...

  7. 基于STM32的光敏传感器数据采集系统-嵌入式系统与设计课程设计

    目录 1 项目概述 1.1 项目介绍 1.2 项目开发环境 1.3 小组人员及分工 2 需求分析 2.1 系统需求分析 2.2 可行性分析 2.3 项目实施安排 3 系统硬件设计 3.1 系统整体硬件 ...

  8. 解决方法:STM32使用cJSON解析数据失败

    一.问题 在 STM32 移植 cJSON 库后,使用 cJSON_Parse(),解析失败. char cmd[512] = "{\"msg\":\"this ...

  9. STM32CubeMX+FreeRTOS 嵌入式系统学习

    STM32CubeMX+FreeRTOS 嵌入式系统学习 FreeRTOS 嵌入式系统学习 FreeRTOS一些实用函数---持续更新中........ FreeRTOS 嵌入式系统学习 在左边任务栏 ...

最新文章

  1. 第一个net-mvc程序
  2. hive中array嵌套map以及行转列的使用
  3. ICML进行时 | 一文看尽获奖论文及Google、Facebook、微软、腾讯的最新科研成果
  4. python3.4 使用pymysql 连接mysql数据库
  5. java 对象拷贝属性_使用Java对两个对象的属性进行拷贝
  6. 改变世界的七大NLP技术,你了解多少?(上)
  7. 作为一个程序员,进步完全取决于自己
  8. 南溪的远程桌面软件使用笔记
  9. IdleHandler,页面启动优化神器
  10. java byte数组与16进制间的相互转换
  11. 最适合数据分析师的数据库为什么不是MySQL?
  12. 小写数字转大写_微软太坏了,这个函数居然被隐藏了,用它搞定数值转中文大小写...
  13. python勒索病毒,新型勒索病毒Crypted强势来袭
  14. v8声卡调音软件_V8声卡的福音! V8声卡用什么机架VST插件声卡调试?
  15. 虚拟机Linux IP地址更改
  16. 起底白帽黑客郭盛华读过的学校,看完流眼泪了!
  17. In library(package, lib.loc = lib.loc,character.only = TRUE, there is no package called ‘kknn’
  18. 重庆大学计算机学院专硕分析,重庆大学电子信息(专硕)专业考研难度分析-专业排名-难度大小...
  19. labview对dll的调用
  20. 介绍一下openkylin(开放麒麟),优麒麟和统信UOS

热门文章

  1. Oracle多表连接查询
  2. c语言中if和goto的用法,C语言中if和goto的用法.doc
  3. java 无侵入监控_MyPerf4J 一个高性能、无侵入的Java性能监控和统计工具
  4. linux中安装多个mysql_liunx系统下安装多个MySql数据库并做主从配置
  5. 什么叫有效物理网卡_如何区分虚拟网卡和物理网卡?-阿里云开发者社区
  6. Linux 字符设备驱动开发基础(五)—— ioremap() 函数解析
  7. Pro*c源程序中使用宿主结构保存查询结果
  8. Taro+react开发(28)本地用require线上不必
  9. [html] 举例说明Shadow DOM的应用场景有哪些?
  10. [html] 说说如果a链接href=““(空)时点击时会有什么表现?