自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

huangbinvip的专栏

一个专注于分享嵌入式软硬件开发和研发管理的地盘

  • 博客(134)
  • 资源 (2)
  • 收藏
  • 关注

原创 C# 图像灰化处理方法及速度对比

第二种方法,使用托管内存来直接操作图像数据,速度速度较第一种方法快约30倍,非常明显,但是要根据不同的图片像素格式来处理数据,相对比较麻烦一些,兼容性不好。图像处理过程中,比较常见的灰化处理,将彩色图像处理为黑白图像,以便后续的其他处理工作。第三种方式,直接使用指针来操作内存,得到最快的速度(相比托管内存操作方式略快)。

2023-10-12 16:22:25 572 2

原创 在嵌入式系统高效实现软定时器-STOpen软件定时器

在中低端MCU中,定时器的资源有限,经常会使用起来入不敷出,捉襟见肘。而且有时候不同的场景需要的定时时间不同,操作比较麻烦。比如我们常见的按键扫描,灯闪烁,屏幕闪烁,延时退出等但是我们对这些需求进行仔细分析,基本上都会有如下特点:定时间隔较长(不是us级别),准确度要求不高(相差ms级基本无影响),有一次性定时的,也有循环定时的。针对这种需求,我们在STOpen实现了一组软件定时器,配合消...

2020-03-22 18:02:15 662

原创 一个用于嵌入式开发的简单可靠的消息系统-STOpen消息系统

在一般中低端的嵌入式系统里面,程序要么是跑大循环,要么是跑一个简单的操作系统(比如ucos,rtthread,freertos等等),简单和效率是第一要素,毕竟系统硬件资源有限。要在这方寸之间,施展十八般武艺,实属具有一定的挑战性。我们实现了一个简单的类windows的消息系统,让所有的操作都采用消息的机制来传递信息,把模块之间的耦合度降低到最低,并且让程序事务处理起来特别简单,层次分明,逻辑...

2020-03-21 21:59:35 1321 1

原创 在MDK新版本中添加AC5编译器支持

深圳市新龙微电子科技有限责任公司在使用兆讯芯片开发相关产品的时候,进行了大量的适合批量化的代码改进和工具完善(下载,升级,图片处理,压缩,资源生成等),为客户提供定制化的产品开发,提供优化后的二次开发SDK,加速产品应用。项目开发,芯片购买,技术交流联系:1356072三一四一(微信同号)从 Keil MDK 5.37 版本开始,AC5(ARM Compiler 5)编译器不再默认安装,需要用户手动安装。编译工程,如果编译成功,说明 AC5 编译器已正确安装并配置。

2025-04-07 22:09:17 616

原创 在MH2103上如何将usb cdc类虚拟出来的串口在Windows上使用固定串口号

但是官方usb cdc使用了默认的实现方式,每一个板子接入Windows系统的时候,都会出现一个新的串口号,这样子在批量升级或者下载资源的时候,随着板子的接入增多,串口号就会从com2一直飙升下去,直到com98,com99等等,在使用串口工具选择串口的时候非常麻烦,而且也容易和其他串口混淆(因为每一次接入一块新的板子的时候,串口号都不一样)。比如第一次接入Windows系统分配的是串口号10,以后这个类型的板子接入系统都是串口号10,那这样一来我所有的板子升级的时候就比较舒服了。最终完成我们的初始需求。

2025-04-07 18:18:26 133

原创 [ARM-2D 专题]6.脏矩形定义的宏使用技巧和分析

要使用这个功能,我们必须指出当前画面中的那些区域是需要更新的(第一次刷新除外),也就是定义好脏矩形,从而接下来的相关API在绘制图形的时候,才会对区域进行剪切,通过一些列复杂的计算,得到最终需要绘制的区域。这段代码的意思就是将素组的第一个arm_2d_region_list_item_t元素的ptNext指针,指向了该数组的第二个元素的其实地址,形成一个单向链表,同时,将tRegion按照传入的参数初始化。好啦,了解了上面的硬核知识,后,上面的定义我们进一步展开就得到如下代码(假定编译到这里的此时此刻,

2024-11-11 17:34:20 1023

原创 [ARM-2D 专题]5 MDK编译器一个旧版本-Ofast优化bug的问题及解决办法

以前使用microlib库编译,运行良好,所以也没有在意问题,现在使用arm-2d,不使用microlib编译,运行,读数据错误了。最近开始大量基于ARM-2D开发应用项目,为了达到最佳性能,我们使用了编译器的许多特殊技能,其中就包含了-Ofast优化,很不幸,一不小心踩坑了。还是这一段代码,其他配置一样,编译,链接,下载,测试。编译器的坑,很难对付,我们理解一下编译器的行为,站在编译器的角度去思考问题,平时写出更优质的代码,才能完全防止这种情况的发生。使用的MDK版本5.36,编译器6.16。

2024-10-26 12:07:15 1083

原创 [ARM-2D 专题]4. 快速搭建ARM2D的PC仿真开发环境及避坑手法

有几种情况你需要使用pc仿真开发环境:文章原创,欢迎转载,请注明出处,未经书面允许,不得用于商业用途。

2024-10-25 09:52:21 1026

原创 git 更新LingDongGui问题解决

oh,看起来和超时与网络有关,由于arm-2d是托管到github上的。众所周知的原因,我们访问github的网速那不是一个“爽”字了得,好了,魔高一尺道高一丈,我们打开加速器(自行百度)在试一次?灵动简化了直接使用arm-2d开发ui的工作,提供了诸多控件,作者在不停的更新,和arm-2d保持同步。而且也能够直接使用arm-2d混合编程,方便有个性需求的小伙伴手撸代码。经过漫长的等待,终于完成clone下来了,在如此恶劣的大环境下,要学点东西,实属不易啊。oh,my god,以外发生了。

2024-09-13 16:29:18 1002 1

原创 PADS设计:从库中更新已经用于设计的器件封装

在使用过程中,发现某个封装设计有缺陷,需要修正,修正后的结果除了用于当前设计以外,还希望更新库元件,以后其他设计也同时使用新的封装。要完成这个需求,我们可以先进入库管理,将元件的的封装修改完成后保存,以后其他网表导入新设计的时候,自然会使用最新的设计库封装。操作方法:选择要修改的器件,右键弹出菜单,选择“编辑封装”,进入封装编辑器,修改完成后退出,根据提示进行选择即可。针对这个器件的封装直接进行编辑,并且将修改应用于该器件,完成单独器件或者同类器件的修改。

2024-08-01 10:33:39 1261

原创 [物联网专题] RS485继电器输出之Modbus控制流程和时间优化分析

由于继电器属于机械触点,所以在吸合过程中不可避免的会产生机械整栋,是输出过程出现一个开关的往复动作,经过一个时间后才会稳定下来(这个和机械按键的抖动类似)。

2024-07-27 11:58:25 1185

原创 pads layout 脚本导出不能运行excle解决办法

导致上述问题的原因是在我们配置导出带坐标的脚本时,默认使用的是微软的Excel工具,而电脑上安装的却是WPS或者破解问题,所以就会出现上述所示的错误。

2024-07-02 21:42:44 1045 2

原创 [物联网专题] - 螺钉式接线端子的选择和辨识

级联方式如下:每一个端子一边是凸台,一边是凹槽,可以互相插入,组成更多位数的端子。这样端子与端子之间形成物理连接,更稳固,有效的避免两位端子的缺点(容易摇晃)。在设计pcb封装的时候,孔的尺寸一般设计为1.1-1.2mm较合适,能适应端子尺寸和装配的误差,也方便焊锡浸入内孔,增强导电性能。标准端子一般是2位(2个接线端子),端子与端子之间可以级联,组成任意数量的位数。端子的标准尺寸如下图:pin间距一边为标准的5.08mm,pin直径为0.9mm。端子按照材质不同,一般分为三种类型:全铜,半铜,铁。

2024-06-25 11:45:09 875

原创 华芯微特SWM34-使用定时器捕获快速解码EV1527编码

在无线应用领域,很多433Mhz和315Mhz的遥控器,红外探测器,门磁报警器,无线门铃等都使用EV1527编码格式来发射数据。发射和接收均有对应的RF芯片完成,而且成本极低(目前市场价3毛钱不到)。

2024-06-24 22:44:39 1511

原创 [ARM-2D 专题]3. ##运算符

##运算符,也叫连接运算符(也称胶水运算符),预处理程序把出现在##两侧的参数合并成一个符号,通常用于宏参数的连接。

2024-06-17 22:22:49 496

原创 [ARM-2D 专题] 2. 逗号表达式

逗号表达式,是c语言中的逗号运算符,优先级别最低,它将两个及其以上的式子联接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。(2) 逗号表达式作为一个整体,它的值为最后一个表达式(也即表达式n)的值。要注意逗号运算符和函数参数分隔符(也是一个逗号)的区别。(表达式1,表达式2,表达式3,…(3) 逗号运算符的优先级别在所有运算符中最低。(1) 逗号表达式的运算过程为:从左往右。万丈高楼平地起,基础非常重要。

2024-06-17 21:04:08 264

原创 [ARM-2D 专题] 1.开始:基本工程搭建,编译和开发环境配置问题解决

要开始使用ARM-2D,前期两个准备工作需要完成: 1. 一块mcu内核为cortex-M的板子,带显示屏(彩色TFT屏,分辨率建议320x240或以上,带TP更佳)。 2. 基于这个板子可以正常运行的keil MDK的工程。

2024-05-29 11:04:18 531

原创 [ARM-2D 专题] arm-2d配套开发工具准备

arm-2d 提供了配套的图片转换工具img2c.py和字体转换工具ttf2c.py,工具用python语言编写,所以需要先安装python及其相关的支持包。没有特别要求的,安装软件选择所有用户可以使用。勾选上面所有的项目,特别是PIP是必须的,后面其他软件安装需要他。如上图选择管理员身份安装,并且将路径增加到环境变量,以便在任意地方执行python的命令。从python网站可以下载到最新的安装版本,根据你自己的电脑配置选择。好了,一路next,正常安装完成。

2024-05-29 10:38:19 303

原创 [ARM-2D 专题] arm-2d项目简介

2023年2月发布第一个正式版V1.1.1,近一年来快速迭代和功能增强,成为Cortex-M系列的一个重要软件组成部分,其参考和实用价值的意义及其重大。初始目标:物联网终端设备、白色家电、手持设备和可穿戴设备,尤其是资源受限且功耗要求低的设备。Arm-2D 是一个用于 Cortex-M 处理器上的 2.5D 图像处理的开源项目。由ARM公司开发和维护,属于官方性质的项目,目前最新版本为V1.1.6.2022年7月发布1.0的预览版,

2024-05-29 10:14:57 441

原创 pcb天线设计中的DRC网络错误检查解决方法(allegro,pads等均适用)

原因是我们的天线原理图设计的时候有两个引脚,一个是输入信号,一个是接地。但是通过我们制作的倒F天线后,在pcb设计的过程中,两个引脚走线在物理上总是会连接到一起,出现两个不同的网络连接到一起,出现DRC检查网络错误的问题。我们通过观察pcb的最终设计图,可以发现有一个引脚连接到输入信号,一个引脚会连接到GND,并且由于RF的走线限制,肯定是走直线连接的。在射频天线的pcb设计过程中,会经常用到pcb走线来制作天线,比如2.4G的倒F天线,可以大幅降低成本和提供制造的一致性,取得良好的设计质量和性价比。

2024-02-20 11:34:26 1487

原创 BLE MAP profile时间戳格式

顺便唠叨一下,看看该profile的贡献人列表,发现基本上是国际大公司的员工(博通,ti,三星,诺基亚,东芝,摩托罗拉,intel等等),一方面蓝牙协议在最先在相关公司实现,进而推广。在广大的以应用开发为主的中小型公司做技术开发工作,以用为主,更多的是去理解和学习别人的东西,用到实际的产品中去。如果你对更底层和基础的技术工作更感兴趣,那么选择公司的时候还是要以大型公司为主,才有机会参与相关的工作,做到“名留青史”。对应的profile文件详细的列出了消息的格式,编码,参考的其他文档等内容。

2024-01-03 16:09:00 654

原创 BMP图像格式

BMP位图采用小端模式存储数据, 一个典型的24位bmp文件的头信息

2023-10-19 09:25:20 276

原创 C#之常见图形文件格式及其特点

PNG 文件可以存储每像素 8、24 或 48 位的颜色和每像素 1、2、4、8 或 16 位的灰度。PNG 文件还可以为每个像素存储一个 Alpha 值,该值指定该像素的颜色与背景色混合的程度,所以在相同分辨率的情况下,png的文件比jpg大很多。GIF 是网页上显示的图像的常用格式。与图像相关的信息(扫描仪制造商、主机、压缩类型、方向、每像素样本数等)可以存储在文件中,并使用标记进行排列。PNG 在 GIF 的基础上改进了其渐进式显示图像的能力(即,在图像通过网络连接到达时显示越来越好的近似图像)。

2023-10-12 10:22:20 609

原创 C语言的使用技巧--在IO操作中的移位和快速配置

他们的定义bit位置是经过精心的安排和计算的(比如不同的功能定义占用的bit位置不重叠,方便进行移位运算,和对应的寄存器的操作有一一的对应关系),以便于后续代码设计和简化代码的操作。通过前面这一条代码的操作,屏蔽了不需要操作的gpio配置位(也就是说关闭了对无关gpio的bit写的作用),比如你本次只是操作gpio0,这条代码就会把对gpio1-15的操作屏蔽,以后写其他配置寄存器(比如前面的MODER寄存器),就只有gpio0对应的bit起作用,其他bit不会影响原来的值。

2023-08-16 10:43:27 441 1

原创 华芯微特SWM34-编译优化

但是,这个代码有一个问题,如果我们使用keil()或者其他编译器)的时候,开了优化(非默认和-O0),此段代码会被编译器优化掉,不会起作用(不会运行,因为编译器发现此代码没有动作)。在开发过程中,经常会出现代码bug,导致各种死机问题,比较多的就是非法地址访问,导致出现硬件错误(HardFault)的中断。出现这种问题后,使用调试器再次连接,很难连接上cpu,需要使用工具,进行ISP擦除,开发非常不方便。此代码的原理,就是在启动阶段,延时一会,在程序跑飞之前,使调试器能够有机会连接上去。

2023-07-16 20:44:49 499

原创 华芯微特SWM34-IO速度优化之模拟SPI写速度提速

由于编译器的优化(而且一定要开优化(O1以上),速度才会快,开与不开大约相差3倍),从低电平到高电平之间的时间似乎并没有完全和代码一致,但是宽度已经变成14ns了,已经能基本满足我们的需求了。,请记住我们用的是32bit mcu,代码中的i,spidat两个变量是采用8bit定义的,习惯了单片机的内存紧张,尽量用最小单位来定义了。这个优化我们很容易忽略,因为spi传输8bit数据的时候,我们是msb在前,要先判断最高位,惯性的就用了8bit来表示数据,,在代码中,用32bit也是一样的效果。

2023-06-30 17:33:23 851

原创 LVGL-最新版本及其版本定义标准

lvgl的最新版本是9.0.0,处于开发分支中。建议一般开发使用稳定版8.3.0..\lvgl.h定义了当前版本。稳定版本是8.3.0.

2023-05-25 08:00:00 4235

原创 华芯微特SWM34-IO速度优化

答案是有,查询了一下手册,居然有一个不太注意的地方是可以的,操作虽然和st等其他类似芯片的有差异,但是结果是一致的。测试优化后的数据,io最高速度已经能到接近30Mhz(我这个是连续输出8bit,有判断语句,非纯粹翻转速度,也是大多应用的情况),估计这也是极限了。查阅datasheet发现有相关的描述,可以做位操作,虽然和用习惯了的st系列比起来有点不一样,但是结果一样。速度大约5Mhz,主要是因为函数调用开销和函数内部的移位和异或操作,增加了指令的运行数量。2 去掉调用开销,优化操作。

2023-05-24 17:31:16 1148

原创 LVGL- 颜色转换系统和相关宏的使用技巧

因为lvgl是一个通用的可以适配不同颜色深度像素的gui系统,要做到最大化,最简单的兼容这些系统,让用户无感,对应用代码不产生影响,具有最大的移植性,这是非常必要的。系统编译的时候就可以自动根据配置信息来选择合适的目标颜色系统,完成对应的操作。看完这一系列“眼花缭乱”的转换,替换后,你也许在嘀咕,简单的赋值不是更好吗,搞得这么“花里胡哨”的,有必要吗?其中有一个很关键的函数,转换r,g,b显示像素到对应的目标显示器的格式,使用这个函数来适配不同的目标设备。我可以很负责人的告诉你,很有必要。

2023-05-19 13:59:59 4110 9

原创 电阻阻值表及其规范

我们常用的是E24-5%精度,E96-1%精度。搞硬件的同学经常会用到的电阻阻值表。该标准属于国际规范,大家共同遵守。

2023-02-14 21:47:16 356

原创 华芯微特开发环境搭建-SWM34SVET6为例

SWM34S系列是cortex-M33,内核是arm-v8指令集,和其他cortex系列有差异,要新的工具版本支持(jlink要升级到V9以上,keil要升级到5.32以上)。然后选择flash download,选择add添加flash算法,注意要修改RAM的size为0x4000,否则算法文件放不下,还是会下载不了。打开包安装器,选择File->import,选择包Synwit.SWM32_DFP.2.0.4.pack,安装完成,关闭包安装器。恭喜恭喜,到这一步,你应该可以正常下载代码,进行调试了。

2023-02-14 10:48:06 4522 1

原创 C语言编程标准头文件格式推荐及其含义解释(#ifndef,#define,extern “C“,#endif)

而C语言没有类似的重载机制,一般是利用函数名来指明编译后的函数名的,对应上面的函数可能会是_foo这样的名字.所以如果你在c语言文件中调用一个c++文件中申明的foo函数,就会找不到这个符号。一个头文件可能会被多个其他头文件包含或者源文件包含进行应用,c语言的引用(include “xx.h”)在编译的时候是以复制方式进行展开,也就是说如果你在a文件包含了b,c文件(无论是源文件还是头文件),那么编译a文件的时候,它会先把b.c文件的内容放到a文件一起展开形成一个文件,然后再进行编译。

2023-02-01 18:00:17 3440

原创 三角函数sin cos tan和弧度,度等定义及其相关

三角函数,正弦,余弦,正切,弧度和度的定义及换算

2022-12-20 09:38:56 67729

原创 USB插座外壳接地的处理和emi,esd考虑

外壳是否接地,从理想电路环境(没有干扰,也不释放干扰)和电路原理来说,接和不接没有任何差异,也不会影响正常功能。但是实际的电子产品的工作环境,是一个处于被各种干扰包围的复杂的电磁场环境,既有EMI辐射干扰,也有ESD静电干扰。另外一方面,电子产品本身会聚集静电电荷和向外产生EMI的辐射,自身也是一个干扰源。所以我们在处理外壳和接口(比如usb插座等)与内部电路连接的时候,考虑的出发点就是基于以上的考虑来设计,其作用就是两个:提高抗扰能力和减少释放对外的干扰信号。从而提高自身的稳定性。以usb插座设计

2022-12-06 10:46:19 9455

原创 常用usb type c插座引脚图和功能差异

全功能的usb type-c插座的引脚定义如下:在实际应用中,为力简化设计和降低成本,会进行一些裁剪,形成几种常见的插座分类:

2022-12-05 10:47:38 11940

原创 C# 绘图单位及其关系

C#的gdi绘图的时候,不同的地方可能会用不同的单位去表示,其意义会跟随当前graphics的设置变化。指定显示设备的度量单位。通常,视频显示使用的单位是像素;打印机使用的单位是 1/100 英寸。用下面的调用,获取当前graphics使用的单位。将文档单位(1/300 英寸)指定为度量单位。将打印机点(1/72 英寸)指定为度量单位。将世界坐标系单位指定为度量单位。将设备像素指定为度量单位。将英寸指定为度量单位。将毫米指定为度量单位。然后根据需要进行转换。

2022-11-17 17:55:01 1534

原创 推荐一个C# 制作免安装程序的工具和方法,超级好用 fody

最后在输出目录下面会有一个app.publish目录,目录里面的有一个exe文件,就是最后需要的文件。要达到这个绿色免安装的目的,用常规的VS发布工具是不方便或者做不到这一点的。我们很多时候开发一些简单的程序的时候,都希望能够直接运行,免安装。一来方便测试,避免每一个版本测试的时候要卸载安装的过程,很麻烦。搜索如下两个包:fody,costura.fody然后安装。直接将这个文件就可以拷贝到其他目录或其他电脑直接运行。推荐一个超级好用的nuget包,方便简单,几乎无感。打开工程,选择nuget包导入。

2022-11-17 17:45:55 2734

原创 windows支持的编码页及其编码转换

windows为了支持全球化,同时兼容过去的很多旧的文档,不得不继续保留早期的使用代码页和编码名称方式来支持不同本地化的文件编码,其复杂性不言而喻,但是原理还是比较简单。编码参考另外文章:使用如下方式,可以在字节数组和字符编码之间进行来回转换。在c#中,有一个Encoding类来支持编码转换。使用如下代码可以获取到全部支持的编码列表。

2022-11-01 10:36:32 873

原创 windows文本文件的BOM标记,编码

如果没有这个标记,就会使用默认的系统环境编码(本地码)来解释这个文本文件,所以使用no bom(没有这个字节序标记)方式的文件,在不同的电脑(比如中文版和德文版,或者韩文版等)打开后的显示内容可能是不一样的。这就是BOM(字节序标记),他会告诉打开该文本文件的编辑器,这是一个UTF-16(unicode)编码的文件,你需要使用该编码来解释后面的内容。所以,你的乱码就是因为你保存的文本文件的编码和打开的时候没有使用同一种方式去解释编码的原因导致的。文本文件有不同的编码格式,如何识别保存的文本文件的格式呢?

2022-11-01 10:05:42 1401

原创 SQL server 2019 配置管理器,提示“MMC无法创建管理单元”的解决方法

Win10安装了SQLserver 2019版本后,打开SQL server 2019 配置管理器,提示“MMC无法创建管理单元”。然后,选择文件,从最近的文件打开带有“SQL”字样的msc文件,就可以正常打开了。右键点击windows图标,弹出菜单选择“运行”,输入mmc。根据他的提示,管理单元没有正确安装,莫名其妙。起始,完全不需要理会,可以有一个解决方法。

2022-10-31 23:42:41 5975 8

C语言规范标准-C99(中文版)

C99前六章中文完整版,后面的是库和附录没有翻译,可对照英文版阅读。

2022-09-06

蓝牙串口profile_BLE spp profile

BLE 串口 spp profile 蓝牙串口 gap gatt Bluetooth 透传 模拟 蓝牙串口profile 串口配置文件定义

2022-04-02

蓝牙BLE电池服务profile中文版本

蓝牙,电池服务,profile中文版本,BLE,BATTERY SERVICE SPECIFICATION,UUID,GATT,EDR,DR

2022-03-29

空空如也

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

TA关注的人

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