【STM32】MDK环境下移植cJSON

【STM32】MDK环境下移植cJSON

前言

由于工作需要,需要在STM32上使用Json,所以把一个JSON库移植到了STM32(keil MDK),实际上keil已经有了JSON扩展包(Jansson),只需要从keil官网上下载JSON Pack再导入就行,有兴趣的可以看这篇文章。

这篇文章主要讲解如何把cJSON移植到keil环境下,用于STM32。

测试平台

keil版本:uVision 5.2.1a
芯片型号:STM32F051
下载并移植cJSON库
首先去github下载cJSON库,链接:https://github.com/DaveGamble/cJSON

cJSON有三个源文件及其对应的头文件:cJSON.c/cJSON.h,cJSON_Utils.c/cJSON_Utils.h,test.c/test.h。我们主要使用cJSON和test,把这些文件拷贝到keil工程目录下,并添加入keil工程目录。

在这里插入图片描述
由于test.c文件里面有main主函数,可以把这个主函数改一下,然后在自己工程的main主函数调用该测试函数即可。

保存,编译,烧写代码。

注意事项

由于cJSON使用printf打印数据,要先重定向printf输出到串口, 之后用串口调试工具查看cJSON调试信息,具体做法可以点击这里或者参考其他资料;
正常运行cJSON的测试例程需要3KB的heap, 如果芯片内存足够,可以在启动文件(startup_XXX.s)里修改。

在这里插入图片描述
注意: 我这次项目使用的芯片是STM32F051,默认大小是512B不修改这里的话解析test文件的json是会出错的,最多只能解析三层键值项。
cJSON的文档查看github即可。

void test_cjson(void)
{
	double	grade[4]={66.51,118.52,61.53,128.54};
	int 	time[4]={123,456,789,150};
		
		cJSON *measurements = cJSON_CreateObject();				//创建一个对象
		
		cJSON_AddStringToObject(measurements,"AAA","26.55666");		//添加字符串 
		cJSON_AddNumberToObject(measurements,"BBB",13);			//添加整型数字 
		cJSON_AddNumberToObject(measurements,"CCC",13.55666);	//添加浮点型数字
		cJSON_AddFalseToObject(measurements,"gender");			//添加逻辑值false
		cJSON_AddStringToObject(measurements,"status","0x8000");		//添加字符串 
		 
	
		cJSON *item1 = cJSON_CreateObject(); 			//创建一个对象
		cJSON_AddStringToObject(item1,"item1_string","China"); //添加字符串 
		cJSON_AddNumberToObject(item1,"item1_num",2021); //添加整型数字
		cJSON_AddItemToObject(measurements,"item1",item1);

		objJson = cJSON_GetObjectItem(measurements, "AAA");
		f1 = strtod(objJson->valuestring, NULL);
	
		char *json_data = cJSON_PrintUnformatted(measurements); //JSON数据结构转换为JSON字符串
		printf("%s\n",json_data);//输出字符串
		free(json_data);
		cJSON_Delete(measurements);//清除结构体
		
}

原文链接:
https://blog.csdn.net/yannanxiu/article/details/52712078

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
odrive是一个开源的电机驱动器项目,它的主要设计目标是为了实现高性能的电机控制系统。而STMicroelectronics的MDK则是一款为STM32微控制器提供集成开发环境的软件工具。 移植odrive到STM32 MDK环境中需要进行以下步骤: 1. 首先,需要下载并安装MDK软件工具,确保与所使用的STM32微控制器兼容。能够成功编译和下载代码。 2. 然后,需要获取odrive的源代码,这可以通过从GitHub上克隆odrive项目来完成。确保获取了最新稳定版本的代码。 3. 接下来,需要创建一个新的MDK工程,并将odrive的源代码添加到工程中。根据需要对工程进行配置,例如选择正确的编译器、调试接口等。 4. 确保在MDK工程中正确设置了STM32微控制器的引脚配置,以便与odrive的硬件设计相匹配。这可能涉及到对GPIO、SPI、UART等引脚进行适当配置。 5. 确保在MDK工程中包含了odrive的所有依赖项,例如相关的库文件、驱动程序等。 6. 对odrive源代码进行必要的修改和调整,以适应STM32 MDK环境。这可能涉及到修改编译选项、函数调用、变量定义等。 7. 最后,进行编译和下载测试,确保odrive在STM32 MDK环境下能够正常工作。在调试过程中可能会遇到一些问题,需要根据具体情况进行调试和修复。 总之,移植odrive到STM32 MDK环境需要确保正确配置MDK工程和STM32微控制器,适配odrive的源代码,并进行必要的调试和修复。通过这些步骤,便可以将odrive成功移植STM32 MDK环境中,为电机控制系统提供高性能的驱动功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值