STM32 基础系列教程 48 – CJSON

2023-11-14

前言

    JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。它独立于开发语言,是一种文本格式, 很适用描述在各个系统间交换的数据。

JSON 格式的数据看起来就像下面这个样子:

{

“Room1”: {

“LED”: “on”,

“Temperature”: “36”

}

}

这个 JSON 数据描述的是 Room1 的 LED 灯状态以及温度值。它由一组“名称(key) ”以及对应的“ 值(value) ”组成。“名称”和“ 值”之间由“ : ”分开。各组“名称: 值”对之间由“, ”符号进行分割。本节将给大家演示STM32MCU + CJSON库实现对JSON数据的组包与解包过程,下面开始进入正题。

 

示例详解

基于硬件平台: 正点源子的stm32f4 探索者开发板,MCU 的型号是 STM32F4ZET6, 使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。本示例所用的开发板及部分原理图:

https://www.eeboard.com/shop/data/uploads/2018/08/01/1533087371.jpg

 

    1. 关于CUBEMX工具及KEIL工具的操作将不再细讲,如果还有不熟悉的可以查看之前的教程文档。下面直接介绍工程配置:

 

      1. 系统时钟树

 

      1. 串口配置(用于程序调试)

 

      1. RCC配置

      1. SYS配置

 

      1. 引脚配置,用到引脚极少

      1. 堆栈配置:

 

    1. 工程代码
      1. Keil MDK开发环境可以扩展丰富的第三方库,本节要用到的CJSON库也可以直接在MDK开发环境中导入,具体操作如下:

库安装》

库引入工程》

引入库后》

 

      1. 在main.c 中main函数中USER CODE BEGIN Includes、 USER CODE1、USER CODE 2, USER CODE 4 区域加入如下图所示代码:

  

 

c) 编译工程,调试程序, (注:在使用探索者F4调试时,下载或仿真调试时先不要PC串口工具连接上开发板的USB_232接口,有可能导致程序运行不了--boot0引脚电平不对,可以先跑起来再在PC串口工具上连接相应端口!!,可按下面的具体操作步骤来操作—>>  )

 

串口已打开,程序全速运行(F5或单击全速运行图标)相看运行结果:

 

这个时候可以在串口中看到如下程序运行结果(成功打印出JSON数据并成功解析):

复制上面输出的结果,打开电脑网页浏览器,打开http://www.bejson.com/ (在线JSON格式化)网站,格式化一下输出结果!!

到此本次的基于CJSON库的JSON数据操作(创建与解析)就完成了,快快让你的程序也Json起来吧。

 

OK,本期实验完成!下期见!同时如果大家有什么疑问或是有想了解的其它内容,也欢迎大家留言!!最后喜欢这个公众号的同学们记得加关注了,会有不定期技术干货推出!!

 

文中源码资料下载,在公众号里给十三发消息:

下载|STM32基础系列教程48

 

关注十三公众号

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32 基础系列教程 48 – CJSON 的相关文章

随机推荐

  • Ubuntu安装redis5.0.0

    一 下载 sudo wget http download redis io releases redis 5 0 0 tar gz 如果慢 可以传上去 二 解压编译安装 解压后 切换目录 cd app redis 5 0 0 编译 make
  • 【C++】对数组指针的理解,例如 int (*p)[3]

    目录 简介 思考 理解 结语 简介 Hello 非常感谢您阅读海轰的文章 倘若文中有错误的地方 欢迎您指出 昵称 海轰 标签 程序猿 C 选手 学生 简介 因C语言结识编程 随后转入计算机专业 获得过国家奖学金 有幸在竞赛中拿过一些国奖 省
  • 【MYSQL】mysql1130错误与安装重置密码

    1 连接服务器 mysql u root p 2 看当前所有数据库 show databases 3 进入mysql数据库 use mysql 4 查看mysql数据库中所有的表 show tables 5 查看user表中的数据 sele
  • freeswitch编译过程以及添加odbc连接mysql

    freeswitch 编译 参考官网wiki bootstrap sh j configure prefix home make make j install make j cd sounds install make j cd moh i
  • Git的Patch功能

    本文整理编辑自 http www cnblogs com y041039 articles 2411600 html http yuxu9710108 blog 163 com blog static 2375153420101114488
  • 可以免费使用的ChatGPT-4,微软开放Bing Chat功能,供用户体验

    微软Bing取消了 Bing Chat的等待名单 现在用户可以通过使用 Edge 浏览器并使用微软帐户登录就可以使用Bing Chat了 入口 打开Bing首页 用户点击 聊天 Chat 即可进入Bing Chat界面 目前Bing Cha
  • Open3D(C++) 模型锐化

    目录 一 模型锐化 1 概述 2 主要函数 二 代码实现 三 结果展示 1 原始模型 2 锐化处理 一 模型锐化 1 概述 Open3D中的实现一种模型锐化处理的算法 该算法的输出值 v o v o v
  • uni.switchTab()跳转不刷新页面问题

    uni switchTab 跳转不刷新页面问题 大家应该都遇到过 调转到 tabBar 里面的页面时 只能使用 uni switchTab 或者是 uni navigator 跳转 使用 uni reLauch 或者是 uni redire
  • 【BLE】-CC2541 OSAL操作系统抽象层应用程序接口API介绍

    参考源source 简介 目的 本文档的目的是定义OS抽象层 OSAL 的API 这个API适用于TI协议栈软件组的产品 例如Z 堆栈 RemoTI 和BLE 适用范围 该文件列举了由OSAL提供的所有函数调用 详细地说明了所有函数调用 方
  • C++11之继承构造函数(using 声明)

    系列文章 C 11之正则表达式 regex match regex search regex replace C 11之线程库 Thread Mutex atomic lock guard 同步 C 11之智能指针 unique ptr s
  • SQL,NowSQL及NewSQL浅析

    关系型数据库 NOSQL NEWSQL浅析 1 关系型数据库 关系数据库 是建立在关系模型基础上的数据库 借助于集合代数等数学概念和方法来处理数据库中的数据 简单来说 关系模型指的就是二维表格模型 而一个关系型数据库就是由二维表及其之间的联
  • 华为OD机试 - 在字符串中找出连续最长的数字串(含“+-”号)(Java)

    题目描述 请在一个字符串中找出连续最长的数字串 并返回这个数字串 如果存在长度相同的连续数字串 返回最后一个 如果没有符合条件的字符串 返回空字符串 注意 数字串可以由数字 0 9 小数点 正负号 组成 长度包括组成数字串的所有符号 仅能出
  • 臭名昭著的MOS管米勒效应

    概述 MOS管的米勒效应会在高频开关电路中 延长开关频率 增加功耗 降低系统稳定性 可谓是臭名昭著 各大厂商都在不遗余力的减少米勒电容 分析 如下是一个NMOS的开关电路 阶跃信号VG1设置DC电平2V 方波 振幅2V 频率50Hz T2的
  • 求大神们指教

    都已经定义了 为什么出现如下错误 求大神们指教 1 gt main obj error LNK2019 无法解析的外部符号 public char thiscall LinkStack
  • x86直接写屏显示字符串

    直接向显存地址 0xb800 xxxx 写入数据 屏幕显示 80列 25行 一个字符显存2byte file showstr s code16 globl start begtext begdata begbss endtext endda
  • 一般试卷的纸张大小是多少_平时打印卷子的纸是多大的?

    展开全部 一般使用的是A3大小的纸 一 打印的卷子纸 一般是8K大小 就像两张A4纸拼在一起的大小 但是 32313133353236313431303231363533e59b9ee7ad9431333365643661家用打印机一般只能
  • Java学习笔记32——字符缓冲流

    字符缓冲流 字符流 字符缓冲流 字符缓冲流的特有功能 IO流小结 字节流 字符流 字符流 字符缓冲流 BufferedWriter 将文本写入字符输出流 缓冲字符 以提供单个字符 数组和字符串的高效写入 可以指定缓冲区大小 或者可以接受默认
  • IDEA 解决Maven打包时控制台中文乱码

    File Settings VM Options中加入 DarchetypeCatalog internal Dfile encoding GBK
  • 遍历提取文件夹中特定的jpg图片并存入指定文件夹

    coding utf 8 usr bin python test copyfile py import os shutil rootdir home unbuntu Desktop yixian 要提取文件夹的根目录 dstdir0 hom
  • STM32 基础系列教程 48 – CJSON

    前言 JSON JavaScript Object Notation JS 对象简谱 是一种轻量级的数据交换格式 它基于 ECMAScript 欧洲计算机协会制定的js规范 的一个子集 采用完全独立于编程语言的文本格式来存储和表示数据 简洁