自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(353)
  • 论坛 (1)
  • 收藏
  • 关注

原创 【C语言】预编译先于enum

C语言的预编译是先于enum,什么意思呢,看代码:#include <errno.h>#include <unistd.h>#include <string.h>#include <sys/ioctl.h>enum{ ENUM_ABC, ENUM_DEF,};#define DEF ENUM_DEF int main(int argc, char **argv){#if DEF == ENUM_ABC

2021-05-04 15:26:18 23 1

原创 【C语言】静态链接库文件(.a)和object文件(.o)区别

静态链接库(.a)文件其实就是将多个object文件(.o)文件打包成一份文件。链接过程可以使用.a或者.o文件。测试一下,三个文件 main.c / fun1.c / fun2.c 分别是:main.c:#include "stdio.h"int fun1(int b);int fun2(int b);void main(){ printf("%d,%d\r\n",fun1(12),fun2(12));}fun1.c:int fun1(int b){ return

2021-04-11 00:08:54 52

原创 【C语言】嵌套if else的低级错误

下面的代码中,第二个 else if 会和中间的 if “结合”,而不是和第一个 else if “结合”,因此造成运行逻辑改变。不要被缩进给蒙蔽了双眼。 . . . else if(sw == CTRL_PREV) if(media_list_pos > 0) media_list_pos--; else if(sw == CTRL_START)

2021-04-01 14:15:43 56

转载 【计算机】ELF文件和BIN文件

原文:http://blog.chinaunix.net/uid-24148050-id-362928.html文件的内容:1. BIN文件是 raw binary 文件,这种文件只包含机器码。BIN文件中的所有数据都是机器可以执行的指令码、指令参数或者常量数据,不包含其它调试信息。单片机中烧写的都是bin文件。2. ELF文件除了机器码外,还包含其它额外的信息,如段的加载地址,运行地址,重定位表,符号表等。ELF文件相当于是对bin文件的一个包装和解释,不仅仅包含程序的机器码,还包含加载.

2021-03-26 15:49:56 60

原创 【C语言】ASCII、GB2312以及UTF8编码格式

1. ASCII编码百度百科 - “ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符”ASCII码使用一个字节表示128种字符,其中0x00 ~ 0x1F是..

2021-03-25 11:08:39 60

原创 【C语言】可变参数

实例://All the variable parameters have the type of "int"//sum: The only fixed parameter that indicates the number of variable parameters.//returns the summary of variable parameter.int sum(int num,...){ va_list ap; int sum = 0; int i;

2021-03-21 12:29:52 19

原创 【嵌入式系统】板级支持包BSP和硬件抽象层HAL的区别和关联

就我跟人理解而言BSP就是硬件驱动程序,它包含了操控硬件的必要函数,单片机系统使用BSP可以直接进行应用开发,这时候应用开发的hierarchy如下图所示:但是由于日益增长的芯片种类和芯片复杂度,直接使用BSP进行应用开发将会受到巨大的挑战,因此为了程序的可阅读性以及可移植性提出了硬件抽象层HAL这一个概念。引入HAL之后操作系统将会使用相对更为统一的HAL接口来实现对硬件的操作,

2021-01-26 15:29:45 8393 1

原创 【单片机】RGB和RGBW LED灯珠的区别

1、RGB三基色1:1:1混合原理上能得到纯白色。2、相同电流下,RGB三个发光二极管的发光亮度是不同的,例如WS2812灯珠的RGB灯泡参数:三基色的发光强度范围是不同的,尽管额定工作电流都是20mA。所以为了能将RGB的发光强度映射到0x00~0xFF上去,需要每个颜色对应不同的驱动电流,但是总会有误差,而且电流和发光强度的对应关系也不一定是线性的。所以就会发现纯白光的情况下WS2812的灯泡并不是完美的白色。3、SK6812这种灯珠有RGBW型号,其中W就是White,是将颜色中的白色

2020-12-14 15:04:22 944 1

转载 【单片机】An Introduction to the Digital Multiplex Protocol

https://www.electroschematics.com/an-introduction-to-the-digital-multiplex-protocol/The Digital Multiplex (DMX) protocol is everywhere in lighting, so if you’re fiddling with lighting, it’s not going to be long before you start to have questions about th

2020-12-11 16:54:18 35

转载 【模电】电场、磁场、电磁场的屏蔽原理

简述电场、磁场、电磁场的屏蔽原理及屏蔽要点:https://wenku.baidu.com/view/2f4a7622b84ae45c3b358cae.html电磁屏蔽技术:https://wenku.baidu.com/view/d4549f3a294ac850ad02de80d4d8d15abf23007f.html电磁场屏蔽的机理:https://wenku.baidu.com/view/26773fa826284b73f242336c1eb91a37f0113262.html三种电磁屏蔽

2020-12-03 17:17:05 350

转载 【模电】RS485采用差分信号,为什么还用三线制(共地)

RS-485是一种应用十分广泛的通信协议bai。其显著特点是信号采用“差分”的方式传输,因此抗干扰能力很强,通信距离也比RS-232远得多。RS-485通信一般是半双工的,仅需要2根信号线,也可以是全双工的,需要4根信号线。差分信号是一对大小相等而极性相反的对称信号,差分信号用于传输有用的信号。共模信号是作用于差分信号线上的一对大小相等极性也相同的信号,共模信号往往来自于外部干扰。差分信号在接收端是靠差分放大器来检测的。差分放大器只对两路输入信号之间的差值起放大作用,而对两路输入信号共同对地的电位不起作用

2020-11-26 14:04:14 1246

原创 【计算机】What is Rendering?

皮克斯动画的教程:https://www.khanacademy.org/computing/pixar/rendering/rendering1/a/start-here-renderingHave fun!(非专业解释)Rendering(渲染)是使用摄像机(眼镜)从某一特定角度和距离观察(拍照)一个3D或者2D场景(计算机中创建的模型),得到一幅映射到二维画面并展现在显示器上。其中包含了大量的数学运算,需要考虑物体的颜色、材质、光的反射、折射等很多因素。渲染可以是反向推算,从观察点出发进行光线的.

2020-09-07 11:32:58 78

转载 【机械自动化】PMSM、ACIM、BLDC

参考文章:https://www.d1ev.com/news/jishu/87456http://www.hbzhan.com/tech_news/detail/594284.html永磁同步电机具有定子三相分布绕组和永磁转子,在磁路结构和绕组分布上保证感应电动势波形为正弦,外加的定子电压和电流也应为正弦波,一般靠交流变压变频器提供。永磁同步电机控制系统常采用自控式,也需要位置反馈信息,可以采用矢量控制(磁场定向控制)或直接转矩控制的先进控制方式。无刷直流电机通常情况下转子磁极采用瓦型.

2020-07-13 11:36:32 309

原创 【C#】M2Mqtt

https://github.com/eclipse/paho.mqtt.m2mqttM2Mqtt is a MQTT client available for all .Net platforms (.Net Framework, .Net Compact Framework and .Net Micro Framework) and WinRT platforms (Windows 8.1, Windows Phone 8.1 and Windows 10) for Internet of Thin

2020-07-09 15:47:31 133

原创 【电子】Baseband Signal and Passband Signal

Baseband的参考文章:https://techterms.com/definition/baseband引用原文:Baseband refers to the original frequency range of a transmission signal before it is converted, or modulated, to a different frequency range. For example, an audio signal may have a baseband r.

2020-05-09 17:03:54 436

原创 【单片机】stm32f030 硬件 I2C

test

2020-05-08 13:11:23 344

转载 【C#】C# ToString格式化

原文链接:https://www.cnblogs.com/xdotnet/archive/2009/01/17/tostring_format.html在很多对象显示为字符串的时候都会使用到ToString中的格式化,由于以前没怎么注意到这个问题,想总结一下各个基础结构对象的格式化,以便后备之用!!!Int.ToString(format):格式字符串采用以下形式:Axx...

2020-03-24 10:53:31 86

原创 【电路设计】AD多样覆铜连接方式共存

AD设置覆铜的连接方式:https://blog.csdn.net/tq384998430/article/details/76702400。如果所有GND信号的覆铜都是使用 Direct Connect 方式的话,手工焊接的时候会出现GND焊盘难以焊接的情况, 由于连接到大面积的覆铜导致散热较快,以致温度下降难以焊接,这时候使用 Relief Connect 会比较好。但是过孔的连接使用D...

2020-03-17 18:37:09 675

原创 【计算机数学】神奇的傅里叶变换

两个手机,第一个安装“Frequency Sound Generator” APP,用于生成不同频率的声音,这里我生成了1000Hz、500Hz、200Hz:第二个手机安装“音频分析仪” APP,用第二个手机听第一个手机的声音:可以看到200Hz、499Hz、1000Hz处的值很高,其它位置的位环境杂波。...

2020-03-11 18:17:15 283

原创 【单片机】SI4432 Based Networking 2

SI4432芯片的内部状态机以及各个状态下的:编写一个简单地碰撞检测示例程序:void RF_SendProcedure_CSMA_CA(void){ static const u8 random_withdraw_time_table[] = {5,22,19,14,12,20,9,10,6,11,7,13,8,23,25,17,16,21,24,18}; static ...

2020-03-11 11:52:58 100

原创 【单片机】SI4432 Based Networking 1

设计了一个基于SI4432的USB Dongle:焊接了两个设备,相距20CM,正常状态下,两个设备都是处于接收状态,不向外发射信号:软件上以100Hz的速度读取RSSI寄存器的值并显示波形:这时候无线芯片收到的RSSI值在60到70左右,比较平稳,这可能是环境中存在的已经来自大自然(宇宙)的杂波。SI4432的数据手册对RSSI值的解释:The RSSI (Re...

2020-03-10 15:01:00 176

原创 【单片机】DIY无刷电机驱动器 2

接着上篇,先解释一下为什么会出现“共振”现象,如下图:假如A1的占空比为25%,B2的占空比为10%,C2的占空比也为10%,我一开始想象的A1和B1之间的信号强度应该是:25% x 10% = 2.5%但是实际远不是这么回事,假如B2的高电平时间范围正好都落在了A1的高电平时间范围中,那么A1到B2的信号的实际占空比就是B2信号的占空比10%。但是如果B2的高电平时间范围没有完...

2020-03-04 18:48:51 519

原创 【单片机】DIY无刷电机驱动器 1

参考文章:《【机械自动化】BLDC驱动器ESC》。控制直流无刷电机和控制直流有刷电机的最大区别有两点:1、有刷直流电机使用用两个驱动桥臂,无刷直流电机需要使用三个驱动桥臂。2、有刷直流电机使用碳刷换相,无刷直流电机需要外部控制换相。这里为了简化,没有使用霍尔传感器以及参考文章中介绍的反电势法(BEMF)原理进行换相检测,这里使用的方法是“猜”,“猜”法很简单,就是我觉得该换相了,就...

2020-03-04 12:25:10 1668 4

原创 【单片机】STM32F030硬件SPI的坑

使用的是STM32F030F4P6,这是一个小封装的单片机,但是五脏俱全,很多功能,就是引脚不多。使用到SPI的时候感觉应该和以前用过的STM32F103系列是一样的,寄存器的结构几乎是完全一样的,寄存器操作的程序甚至都能兼容,但是在使用的时候就是调不通,耽误了不少时间。SPI的引脚初始化和配置代码: GPIO_InitStructure.GPIO_Pin = nIRQ_PIN;// |...

2020-03-03 15:46:02 1934 1

原创 【单片机】数字电位器(旋转编码器)检测程序

void EXTI4_15_IRQHandler(void){ if(EXTI->PR & EXTI_Line5) { //每一相脉冲都可能有抖动,类似于按键的抖动 //需要在软件上将抖动过滤掉,延时放在最前面。 delay_us(1000); //去抖动,放在中断处理的最前面! // printf("r"); now = GPIOA->IDR ...

2020-02-27 19:40:58 1655 1

原创 【C语言】部分不能表示二进制数的编译器中如何表示二进制数

KEIL for 51和RealView MDK就不能使用类似 int a = 0b00010101; 以及 int a = 0b00010101B; 这样的表示二进制数的方法,有时候不方便。解决小技巧参考文章:http://ask.zol.com.cn/x/9159373.html#ifndef __BINARY_H__#define __BINARY_H__#define B32(...

2020-02-25 13:45:52 1169

原创 【机械自动化】BLDC驱动器ESC

《【抢头条】迄今最全的无刷电机工作及控制原理分享-绝对...!》中已经很详细的解释了无刷电机的工作原理,但是文章中没有介绍BLDC的驱动器。以ESC(Electric Speed Controller)为例,这是四轴飞行器上的无刷电机使用的一种无刷电机驱动器,也叫“电子调速器”,俗名“电调”,我使用过的电调以及配套的无刷电机长这样:电调的三个蓝色线接到BLDC的三相,右边的红黑线...

2019-12-13 13:35:12 641

原创 【C语言】有符号和无符号数的比较运算

int a = -1; unsigned int b = 1; if(a < b) printf("a < b\r\n"); else printf("a > b\r\n"); if(a < (int)b) printf("a < b\r\n"); else printf("a > b\r\n");运行结果:a &g...

2019-12-06 13:42:14 252

原创 【模电】电容屏原理

1、表面电容式触摸屏参考视频:https://www.bilibili.com/video/av25429352,感谢李永乐老师通俗易懂的科普。表面式电容屏有个氧化铟锡(ITO)层(透明的导体层),该层有4个电极(在长方形的四个角),每个电极可以产生交流电压,ITO层的上一层是一个(透明的)绝缘层,(手指)触摸位置会和触摸屏的ITO层之间形成一个电容器,由于有交流电压加在电容屏的ITO层上...

2019-10-31 11:16:56 913

原创 【Linux开发】JNI for Android实验

这是一项拖延了很久没做的事,为什么实验Android平台下的JNI实验?安卓系统现在太成熟了,开发人员也很多,相对于闭源的IOS系统来说,安卓系统在消费电子、医疗电子、工业控制等方面上的优势太大了,因为不可能在工业控制器上嵌入一个好几千的iPad。以我熟悉的工业控制方向为例,现在有很多基于Android系统的工控一体机(一体机指带有显示器工控板),可以做出非常友好且功能强大的人机交互软件,侵占了一...

2019-10-22 17:42:29 117

原创 【物联网】MQTT协议

维基和官网的 文档资料比较完整,引用一张网络上的关于解释MQTT协议工作原理的图片: 简单的说,MQTT就是一种基于发布-订阅结构的(publish-subscribe-based messaging protocol)协议,其实现基于TCP/IP协议,也可以使用UDP等协议实现。消息的生产者产生新的消息的过程可以称为“发布”,消息的消费者想...

2019-09-29 12:04:22 359

转载 【Linux开发】开源协议是什么?有哪些?如何选择?

转自:http://c.biancheng.net/view/2947.html,如有侵权请留言联系,非常感谢!开源软件在追求“自由”的同时,不能牺牲程序员的利益,否则将会影响程序员的创造激情,因此世界上现在有 60 多种被开源促进组织(Open Source Initiative)认可的开源许可协议来保证开源工作者的权益。开源协议规定了你在使用开源软件时的权利和责任,也就是规定了你可以做什...

2019-09-11 11:41:15 945

原创 【Linux开发】关于X11

X-Window(维基百科:https://en.wikipedia.org/wiki/X_Window_System)是一个窗口系统,采用的是server-client架构,分为两个部分x-server和x-client,其中x-server其能够直接操作硬件显示器,而x-client不能直接操作显存,而是使用X11协议向x-server发送图像绘制请求,例如“请在点(10,10)处绘制一个半径...

2019-09-10 19:24:33 1774

原创 【Linux开发】关于Cmake

1、参考教程:CMake 入门实战:https://www.hahack.com/codes/cmake/在linux下使用CMake构建应用程序:https://www.ibm.com/developerworks/cn/linux/l-cn-cmake/cmake与autoconf+automake的对比:https://blog.csdn.net/cnsword/article/...

2019-09-10 11:23:57 150

原创 【Linux开发】GDB的使用

1、GDB常用命令及缩写:https://blog.csdn.net/gnuhpc/article/details/4368831https://www.jianshu.com/p/6cdd79ed7dfbhttps://www.cnblogs.com/me115/p/3837960.html2、How to Debug C Program using gdb in 6 Si...

2019-09-10 10:55:29 87

原创 【Linux开发】另一个小规模工程的Makefile模板

和上一个Makefile模板相似,但是解决了一个问题,就是源码目录中可能有不需要被编译的源码文件,为了解决这个问题,需要设置好哪些源码文件需要被编译,我们可以在源码根目录下的Makefile中设置好,但是显得很不灵活方便,想到了Linux内核的Makefile配置方式,使用obj-y和obj-m这样的变量来代表需要编译的文件,我这里设计了一个专门的文件叫做SourceList,在每个源码目录中都会...

2019-09-09 22:09:47 103

原创 【Linux开发】一个小规模工程的Makefile模板

本Makefile适用于小规模软件工程。修改SOURCE_PATH变量设置源码路径,修改BINARY_PATH变量设置输出文件的路径,OBJECT_PATH变量为中间.o文件的存放目录,INCLUDE_PATH变量为头文件包含路径,TARGET变量为输出文件名。Makefile会输出依赖关系文件“xxx.o.d”,以便根据依赖关系只进行必要的编译工作。# GNU的make工作时的执行步骤如下...

2019-09-09 14:47:57 78

原创 【Linux开发】IPC

IPC即Inter-Process Communication,进程间通信,准确的来说IPC是用于实现不同进程中的线程之间的通信。注意进程间通信和(同一个进程中的)线程间通信是有区别的,一个进程中的所有线程都在同一个寻址空间,可以直接使用全局变量(包含信号量、消息队列等)进行通信,而不同进程拥有不同的内存映射空间,所以不同进程中的线程是无法直接进行通信的。来个应用场景举例。打开两个应用:浏...

2019-08-22 14:23:39 403

原创 【Linux开发】Ubuntu下交叉编译opencv

参考文章:https://blog.csdn.net/qq_30155503/article/details/79983630、https://www.jianshu.com/p/0fcdce428d8f。一开始编译opencv的时候我使用了交叉编译器4.4.1和4.6.3两个版本,opencv试验了4.1.1、3.4.7两个版本,编译都遇到一堆莫名其妙的问题,有的问题能解决,但是有的没有头绪...

2019-08-20 18:41:45 1314

原创 【Linux开发】Ubuntu下的opencv的编译与安装

参考文章:https://www.cnblogs.com/jsxyhelu/p/10349447.html、https://www.cnblogs.com/kangxinxin/p/9320913.html。废话不多说,opencv的官方源码下载路径:https://opencv.org/releases/,选择Sources下载最新的opencv源码(当前是4.1.1),解压得到源码目录op...

2019-08-20 18:41:34 255

空空如也

Mr_汤的留言板

发表于 2020-01-02 最后回复 2020-02-19

空空如也

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

TA关注的人 TA的粉丝

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