github issue提交Bug的格式
github issue提交Bug的格式前言: github早已在国内程序员中流行起来,我们经常会访问github上别人的源码或使用别人提供的插件,有时候会发现一些Bug希望作者能将其改进,这时候就可以考虑提交issue。 1...
主动笔的曲线校准方法
主动笔的曲线校准方法前言: 为了保证主动笔的书写体验,减小每一支笔之间的压力感知差异,在主动笔出货前一般会有一个校准过程。校准是指主动笔的压力曲线校准,这条压力曲线横轴是笔尖的克重压力,纵轴是输出到显示屏的压力等级。校准的目的就是保证随便拿一直笔,相同的力去书写使其粗细变化都是基本一致的。 1 主动笔的压力曲线1.1 什么样的压力曲线适合主动笔呢?很容易想到随着克重压力的增加,输出的压力等级也应该增加,也即压力和压力等级是正相关关系。那么更具体的曲线趋势应该是哪种呢?我们讨论如下三种: 指数函数关系; 一次函数关系(属于幂函数); 对数函数关系; 1.2...
单片机编码BPSK信号
单片机编码BPSK信号前言: 一些终端短距无限通讯的设备,依然选择使用电信号作为信号的载体,比如主动笔和触控屏之间。算然短距但是信号幅度不强又易受到干扰,通常传输中伴随着信号源的运动,比如笔在书写的过程中向屏发送信号等。这就要求我们选择的通讯方式要具有较强的抗干扰能力,从笔端到屏端发送的数据可以以BPSK码作为载波,增强信号传输过程中的抗干扰能力。本文介绍了如何通过单片机将数据转化为BPSK码发送。 1 什么是BPSK信号? BPSK(Binary phase Shift...
压力曲线
...
c代码命名规范
芯片AES加密密钥生成工具前言: 嵌入式单片机开发,为了防止别人将芯片内的代码读取出来通过反编译手段拿到源码,常用的手段是对芯片和烧录文件进行加密。大部分的芯片厂商都会提供一个加密烧录和配置文件的工具。这个工具一般需要你填写一定长度的密钥,如果密钥填写得太有规律比如:123456,或项目名+版本号等,这样的密钥对公司来说极度不安全,如果被对手知道别人很可能直接破解出你的源码,然后抄一下你的板就和你一模一样出货了,别人省去了开发成本何乐不为呢?所以本文介绍一种通过AES加密算法将明文转换为密文的工具制作。AES加密算法目前没有破解办法,据我所知微信小程序就用到了这种加密算法。 1 模块构成 制作这样的工具只需要三个模块即可完成,AES加密算法模块、芯片加密模块、GUI模块。本文使用Pathon3语言开发。 2...
SVN软件开发日志规范
SVN SVN软件开发日志规范前言: 写代码的好习惯除了言简意赅的注释外,还有完善且必要的日志。注释主要是对代码内的模块或功能函数、算法、逻辑框架等进行必要简明的说明,它关注的是”这个“代码里做了什么。而日志需要说明的是这版代码和上一版本改了什么(重点关注代码的升级迭代、用途、风险),和其他代码有啥关系(比如关注是否某些功能模块借鉴或移植于其他项目)。所以日志主要关注的是“这些”代码之间的关系(改动、移植),以及怎么用它,有何风险。所以不要觉得代码里写了足够的注释就不需要写Log了,经验丰富的软件开发们会形成自己完整的一套规范风格。 1...
c代码文件内布局规范
c代码文件内布局规范 从上到下按如下布局代码: 1 *.h文件内代码布局规范 文件头注释。 文件条件编译宏。 头文件包含。 普通宏定义 结构体定义。 联合定义。 枚举定义。 宏定义。 全局变量声明。 全局函数声明。 宏函数定义。 2 *.c文件内代码布局规范 文件头注释。 头文件包含。 变量定义(按类型分类,从占字节少到字节多,然后是结构体、联合、枚举变量)。 函数定义。
c代码命名规范
c代码命名规范前言: 为了兼容不同供应商的芯片驱动库,最好的办法是使用自定义的数据类型等,这样有利于代码的重用性和移植性。 1 变量命名1.1 命名前缀12345678910111213//类型宏定义,为了屏蔽不同芯片库文件的变量类型名称不一致,增强可移植性typedef _Bool Bool; //!< 布尔类型变量,变量命名时前缀加btypedef uint8_t Byte; //!< 1个字节无符号整型,变量命名时前缀加bytypedef uint16_t Word; //!< 2个字节无符号整型,变量命名时前缀加wtypedef uint32_t DWord; //!<...
c代码Doxygen注释规范
c代码Doxygen注释规范前言: 良好得注释风格利于后期维护和团队协作开发,使得代码逻辑清晰,意图明了。Doxygen是一种能自动提取代码内注释生成版主文档的开源软件,它是跨平台的。非开源项目也许并不需要有这样一份帮助文档,但Doxygen的注释规范也不失为一种好的风格,可以推广遵守。 1 Doxygen注释规范模板1.1 文件注释模板123456789/** * @file 文件名(*.h/*.c) * @brief 该模块功能的简介。 * @details 使用该模块有哪些细节注意等。 * @author 创建该文件的人名。 * @data 该文件的创建日期(2020-03-10)。 * @version 文件或模块版本号(V1.0.0)。 * @copyright 版权所属公司。 */ 若某项无相关的说明,中文写 无 ,英文写 None ,此时末尾不加标点,若有相关的说明,则建议正常使用标点符号,包括句末标点。 1.2 函数注释模板1.2.1 完整格式1234567891011121314151617181920/** *...
一阶低通滤波
一阶低通滤波前言: 在使用单片机开发中,常常会用到的外设包括ADC采样。而采样必然会伴随这随机干扰引起的毛刺噪声,对于需要捕捉采样值突变的系统来说尤其需要减小毛刺突变的影响。从硬件电路和软件算法上都能一定程度的减少噪声达到滤波的目的,本文主要讲解软件使用低通滤波算法来滤波ADC采样值的方法。 1 一阶低通滤波(又叫惯性滤波)算法1.1 算法原理 滤波算法公式: Y(n) = a * X(n) + (1 - a) * Y(n - 1) Y(n):本次滤波结果。a:滤波系数。取值范围为0~1, 值越小越稳定,越大越灵敏。X(n):本次采样值。Y(n - 1):上次滤波结果。 1.2 C代码实现1234567891011//一阶低通滤波#define FO_LOW_PASS_FILTER_SENSITIVE_a 0.8f //一阶低通滤波系数取值范围为(0,1)。值越小越稳定,越大越灵敏,二者难兼顾。#define...









