自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 ESP32连接xbox手柄

简单介绍一下如何使用ESP32连接xbox的蓝牙手柄,使之变成一个相对通用的遥控器。

2024-06-10 11:24:11 654

原创 苹果ipnone 6s Taptic Engine测试

iphone从6开始使用LRA马达,很早之前买了一个回来打算研究一下,结果一拖就拖到了现在,终于找到了时间去测试一下这个可以让一个假按键按下振动以假乱真的Taptic Engine。结构结构网上对应的图片很多,下面放两个比较直观的图,第一幅图是官方的渲染图,从这张图基本就能看出整个LRA的结构,转子为加有配重的永磁体,定子共两组线圈。两端弹簧用来限制转子位置,保证在无输出的时候转子始终处于...

2020-03-14 21:14:19 1048 2

原创 深度解析NRF24L01

本文将深度解析一款烂大街的无线芯片,NRF24L01(及国产完全兼容的SI24R1)。实在是现在网上很多写NRF24L01的文章抓不到重点,一些冷门用法没人写,就写了这个文章。推荐选用SI24R1,原因是功能完全相同,但SI24R1内置PA,最大输出是7dbm,而挪威原版的NRF24L01+最大输出只有0dbm。因为2.4G是ISM频段,功率即正义!以下以SI24R1为例进行说明读写控制...

2020-03-09 21:20:05 4451 8

原创 [GN] 生成bin和hex

gn对于工具链的配置只到可执行文件就结束了,在我们之前配置的armcc中,最终生成axf就算结束了,但对于一些应用场景来说,bin和hex是必须的,因此还需要执行额外的步骤来实现bin和hex的生成,对于bin和hex,arm工具链中提供了fromelf来做这件事情。构建后动作gn提供了目标action来做工具链之外的动作,action可以接受python脚本,因此我们的选择就是在pyth...

2020-02-06 16:26:05 1089

原创 [GN] 让构建更快更快以及更快

基于GN+ninja的构建系统已经在构建系统层面将速度提升到了极致,但对于编译来说远远没有!我们可以通过对于不常改动的文件编译为lib的方式来避免每次清理后的重复构建,这样直接把编译的过程都省掉了,构建就可以变得更快。静态链接库编译一个静态链接库对于gn来说简直是小菜一碟static_library("stm32f103c8t6") { sources = [ "co...

2020-02-06 16:15:40 935

原创 [GN] 工程架构

前面说到了怎么配置一个可用的armcc的工具链,这篇文档将基于其工具链架构一个真实可用的具体工程。环境依赖首先需要下载gn.exe和ninja.exe两个程序,每个程序只有几百k,相对于cmake来说真的是清爽,而且无需安装,可以直接嵌入你的工程,两者均可以在chromium的原码中找到。 下载并安装python3,该步骤并不是必须的,但是gn支持的外部脚本只有python,原生并不支持...

2020-02-06 15:55:32 1738 2

原创 [GN] 配置armcc工具链

对于gn来说,工具链被抽象为一系列的工具描述,我们要做的就是写对应的工具描述文件出来。首先在工程根目录建立一个文件.gn(注意文件的名字为空,后缀为.gn),文件中配置工具链描述文件所在的路径buildconfig = "//build/buildconfig.gn"该变量定义了构建工具链描述文件所在的路径,//表示工程根目录。在buildconfig.gn中定义工具链。s...

2020-02-06 14:47:29 2654 2

转载 [GN] 官方文档

介绍本页面描述了许多语言的细节和行为。使用内置的帮助!GN有一个广泛的内置帮助系统,为每个功能和内置变量提供参考。这个是gn文档的主要来源!gn help设计理念 编写构建文件不应该是一个创造性的努力。理想情况下,两个人应该产生相同的构建文件来实现相同的需求。除非绝对需要,否则不应有任何灵活性。做越多的事情越可能产生致命的错误。 定义应该比代码更像代码。我不...

2020-02-06 14:09:14 3489

原创 [GN] 使用GN+Ninja替代MDK进行编译

背景在单片机开发者中,使用MDK一直是一个较为普遍的选择,但是当工程变的越来越大之后,MDK开始力不从心,编译速度下降,配置复杂,编译过程中添加自定义行为困难等问题开始显露出来,因此选择一个更好的编译工具就变成了一个需要提上日程的需求。工具选择make make属于第一代构建系统。经常在linux下开发的开发者对于makefile应该相当熟悉,使用makefile来做工程编译管理是很...

2020-02-06 13:30:20 3884 2

原创 [GN] 谷歌元构建系统GN,toolchain配置

注:主要信息来自于GN的帮助文件典型格式:tool(<tool type>) { <tool variables...> }tool type可选的范围:编译器:"cc": C编译器"cxx": C++ 编译器"objc": Objective C 编译器"objcxx": Objective C++ 编译器"rc": Resourc...

2020-01-30 19:02:12 2263

原创 一种相对高效的按键消抖方法

按键软件消抖自我接触单片机开始就已经存在这个问题了,网上的办法无非是延时消抖和定时轮询。对于写裸机的我来说这两种方法都不可避免的会有资源浪费掉,今天突然有了灵感,想到了一种相对高效的办法来解决消抖问题。硬件平台:STM32F103RCT6开发板开发环境:WIN7-64bit+MDK5+STD库按键消抖的必要性在此我就不多说了。直接步入正题。在使用本方法前请注意,本方法需要一个全

2017-09-29 20:43:20 8274 3

原创 使用字符映射完成简单的对称加密

最近做了点东西,为了防止能够被简单的逆向破解通讯协议,所以需要进行简单的加密操作。于是实现了一个简单的字符映射的对称加密。首先先说一下实现原理吧,其实原理很简单,对每byte数据进行重新映射,比如明文1映射到9,那么解密的时候9对应的就是1。原理并不复杂。但是由于需要完成1对1 的映射,不能出现1映射到了9,同时2也映射到了9,那么将无法完成解密。由于每byte是8 bit,那么需要的映射表就

2017-05-07 18:16:33 1974

原创 linux环境下使用V4L2及Qt设计简易照相机

最近放假,比较清闲,正好手上有一个USB的免驱摄像头,想了想打算做一个简易的照相机,后期移植到4412的板子上做实时监控。之后在网上找了找参考资料,发现需要用到V4L2还有其他的一些东西,就研究了几天,最后好在让我做出来了,于是就写了这篇博客,也当作是完整梳理一下思路和留作以后的参考,其中包含了我遇到的问题及解决办法。

2016-07-12 09:20:20 10944 22

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除