随笔分类 - Embedded
摘要:@2019-01-16 【小记】 内存对齐就是除去对齐大小的余数 [ size, align] 向上对齐 (size + (align - 1)) - ((size + (align - 1))% align) = (size + (align - 1))& ~(align - 1) 向下对齐 si
阅读全文
摘要:@2018-12-28 【小记】 callback(obj) 与 obj.callback 的使用环境 相同:callback(obj) 适用于所有数据对象都有相似的处理方式,优点是数据对象都使用同一框架,简单高效省空间 相异:obj.callback 适用于每个数据对象都有独自的处理方式,优点是针
阅读全文
摘要:@2018-12-25 【小记】 代码变量、函数命名神奇网站: https://unbug.github.io/codelf/
阅读全文
摘要:@2018-12-21 【小记】 创建工程步骤: a. File > New File or Project > Non-Qt Project > Plain C Application b. 选择创建路径及命名项目 > 选择qmake > 选中Select all kits > 完成 c. 右键工
阅读全文
摘要:@2018-10-19 【方法】 巧妙利用0大小数组 char temp[0] = "This is test string!"; 编译结果: error: #144: a value of type "char [21]" cannot be used to initialize an entit
阅读全文
摘要:一种随机起始地址循环连续取数据的的机制 问题描述 1) 需要开辟一片缓存区以存储 ADC 采集的数据,数据连续不间断存储,按首地址 >末地址 >首地址的存储顺序。 2) 数据算法要对采集后的数据做处理,也是按照ADC数据的存储顺序做循环取数据的,要求每次取一包数据 (长度3120byte) 做处理,
阅读全文
摘要:定时更新一组状态一般用于状态机运行的判定条件 实现机制为: 利用一硬件定时器作为时基,该时基选取适合状态更新频率,以该时基为累加周期,待累加周期变量值满足各状态更新周期时更新各状态。 具体实现为:以各状态更新周期为对象,对累加周期变量取余,以结果0为依据更新各状态,累加周期变量清0依据为各状态更新周
阅读全文
摘要:上个世纪三十年代,河北籍学生张锡纶从中国第一所矿业高等学府焦作工学院毕业,作为一名专业为冶炼学的稀缺人才,他被上海的一家炼钢厂录用。抗战爆发后,上海工业大规模西迁,张锡纶也随着大部队辗转来到了战时陪都重庆。他工作的炼钢厂被并入国民政府军事工业系统,成为隶属兵工署的第21兵工厂。 1945年抗战胜利后
阅读全文
摘要:计算机系统中内存是以字节为单位进行编址的,每个地址单元都唯一的对应着1个字节(8 bit)。这可以应对char类型数据的存储要求,因为char类型长度刚好是1个字节,但是有些类型的长度是超过1个字节的(字符串虽然是多字节的,但它本质是由一个个char类型组成的类似数组的结构而已),比如C/C++中,
阅读全文
摘要:I2C总线为何需要上拉电阻? I2C(Inter-Intergrated Circuit)总线是微电子通信控制领域中常用的一种总线标准,具有接线少,控制方式简单,通信速率高等优点。 I2C总线的内部结构图如图1所示,I2C器件连接到总线输出级必须是集电极开路或漏极开路形式才能实现线“与”的逻辑功能。
阅读全文
摘要:在AD采集中经常要用到数字滤波,而不同情况下又有不同的滤波需求,下面是10种经典的软件滤波方法的程序和优缺点分析: 限幅滤波法(又称程序判断滤波法) 中位值滤波法 算术平均滤波法 递推平均滤波法(又称滑动平均滤波法) 中位值平均滤波法(又称防脉冲干扰平均滤波法) 限幅平均滤波法 一阶滞后滤波法 加权
阅读全文
摘要:一、CRC16校验码的使用 现选择最常用的CRC-16校验,说明它的使用方法。 根据Modbus协议,常规485通讯的信息发送形式如下: 地址 功能码 数据信息 校验码 1byte 1byte nbyte 2byte CRC校验是前面几段数据内容的校验值,为一个16位数据,发送时,低8位在前,高8为
阅读全文
摘要:1、CRC CRC循环冗余校验码是数据通信中的一种查错校验码。 循环冗余检查对数据进行多项式计算,将计算结果附加在帧后面,接收数据的设备执行模2运算,保证数据传输的正确性和完整性。 2.模2除法 ①不向上借位,只要除数和被除数的位数相同就可进行计算,不比较它们的大小; ②模2运算中用到了模2减法,与
阅读全文
摘要:概述 进行C/C++开发的时候我们都会需要打印调试信息,打印调试信息时我们习惯使用printf函数,但是在Keil C51环境下,由于我们的程序是下载到单片机里,使用printf函数时不能直接打印到串口上,这个时候就需要我们对printf函数输出重定向。 重定向 重定向printf很简单,我们知道,
阅读全文
摘要:Get Skill 2018-01-16 > 001 防止数组越界的一种方法 > 002 超时机制 在等待某个事件或标志时,设定一定时限,时限到,等待的事件或标志还未发生,则输出一条提示信息 拒绝死等,即永无时限的等待某个事件或标志发生,这样在调试程序很麻烦,不方便定位问题 > 003 spi总线时
阅读全文
摘要:缘 起 最近在stm32f103上做一个智能家居的项目,其中选择的实时操作系统是 rt_thread OS v1.2.2稳定版本,其中涉及到C和java(android)端数据的交换问题,经过讨论和研究,选择了json格式的数据进行交互。当然,如果自己去写一个json解析器,有点重造轮子的嫌疑。于是
阅读全文
摘要:关于cjson的介绍和使用方法就不在这里介绍了,详情请查看上一篇博客cjson使用方法。 JSON的内存结构像广义表,可以认为是有层次的双向链表。 cJSON程序中的细节点如下: 大量宏替换 大量静态函数 错误处理机制 字符串处理时存在utf16转utf9,编码转换 用函数指针封装malloc,fr
阅读全文
摘要:cJSON源码分析 简介 由于C语言汇总,没有直接的字典,字符串数组等数据结构,所以要借助结构体定义,处理json。 JSON是一种轻量级的数据交换格式。JSON采用完全独立与语言的文本格式,易于人阅读和编写。同时也易于机器解析和生成。它是基于JavaScript,Programming Langu
阅读全文
摘要:前言 cjson 的代码只有 1000+ 行, 而且只是简单的几个函数的调用。 而且 cjson 还有很多不完善的地方, 推荐大家看完之后自己实现一个 封装好的功能完善的 cjson 程序。 json 基本信息 在阅读 json 之前, 建议阅读一下 json 的官方介绍。 如果上面的英文吓到你了的
阅读全文
摘要:Compiler optimization levels and the debug view 4.3 Compiler optimization levels and the debug view The precise optimizations performed by the compile
阅读全文