自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 资源 (15)
  • 收藏
  • 关注

原创 为什么日志系统普遍用标准错误输出stderr?而不是标准输出stdcout?

因为stderr是不带缓冲的,每个输出都会立即flush。而stdout是行缓冲的,要等到缓冲满了才flush,或者手动调fflush。前者更符合作为日志的需要,不然你程序执行过程中core了,缓冲里的遗言可能就丢了,而丢掉的往往是最接近出问题的地方的。参考:APUE第5.4节 https://www.zhihu.com/question/67629357...

2021-02-17 17:14:31 977

转载 【C++学习笔记】03-图说C++对象模型:对象内存布局详解

0.前言文章较长,而且内容相对来说比较枯燥,希望对C++对象的内存布局、虚表指针、虚基类指针等有深入了解的朋友可以慢慢看。本文的结论都在VS2013上得到验证。不同的编译器在内存布局的细节上可能有所不同。文章如果有解释不清、解释不通或疏漏的地方,恳请指出。1.何为C++对象模型?引用《深度探索C++对象模型》这本书中的话:有两个概念可以解释C++对象模型:语言中直接支持面向对象程序设计的部分。 对于各种支持的底层实现机制。直接支持面向对象程序设计,包括了构造函数、析构函数、

2021-01-03 21:11:20 441

原创 WSL的坑

在WSL下测试消息队列实现多进程通信,在执行到msgget时报错,错误信息“function not implemented”。在下面链接中发现,WSL不支持消息队列。https://github.com/microsoft/WSL/issues/1443...

2019-12-31 14:39:36 1212

转载 【C++学习笔记】02-传递常量引用比传值更好

转载自:https://blog.csdn.net/Function_Dou/article/details/86608247在c++中引入了引用, 而引用其实也就是指针, 只是使用起来更加的方便. 使用使用使得在函数传值时可以为对象创造一个别名, 操作时实际上就是操作原对象本身, 这样的传引用可以避免对象传递时产生临时对象. 这样避免就可以减少很多不必要的时间和空间的开销.实际例子以Eff...

2019-09-03 13:46:43 355

原创 【C++学习笔记】01-理解const引用传递

第一次看到C++中的const引用传递有点困惑。在我的理解中,之所以用引用传递,是因为函数可以修改传递的参数。而不是像值传递那样,只创建参数的副本,无法修改参数。但是加上const,又表示不能修改该参数。那这const引用传递有啥用呢?先不讨论引用传递和值传递。直接默认使用引用传递,看非const引用传递和const引用传递的区别。实际例子考虑如下代码#include<iostrea...

2019-09-03 13:45:10 2567 2

转载 版本控制工具git之生成ppk及使用

本人用的是Git Extensions,用SSH传输。在配置秘钥时遇到问题,参考下面博客解决。转载自:https://www.cnblogs.com/TingJie/p/4992111.html一、简介Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Gi...

2019-05-17 10:37:10 1836

原创 Linux学习笔记1——删除名字带有反斜杠的文件或文件夹

在用adb push向linux板子里push文件时,目的路径不小心写成\data,导致在板子上新建了个名为“\data”的文件,直接 rm \data是删除不了的,正确的命令是:rm '\data'用单引号把文件名包住,带有其他特殊字符的文件应该也可以这样删除。...

2019-04-25 12:05:53 5471 2

原创 信号处理学习笔记6——自适应滤波器4-递归最小二乘(RLS)自适应滤波器

前面学习的LMS自适应滤波器的核心思想是最速下降法,并根据当前输入信号和期望输出对代价函数的瞬时梯度进行估计。但它只使用了当前时刻的输入和期望信号,没有充分利用过去的信息。这就导致LMS自适应滤波器误差大、收敛慢。  一个直接的想法就是,如果能把过去的信息也都利用起来,那么梯度估计的误差就会大大减小,算法便会很快收敛。最小二乘(Least Squares,LS)算法正好就实现了这一过程,...

2019-03-25 20:46:34 7456 1

原创 信号处理学习笔记5——自适应滤波器3-LMS自适应滤波器

    LMS算法全称最小均方算法(least mean square),是一种线性自适应滤波算法。它不需要计算相关函数,也不需要矩阵求逆计算。由于其简单性,LMS算法成为其它线性自适应滤波算法的参照标准。  LMS一般包含两个基本过程:滤波过程:a. 计算线性滤波器输出对输入信号的响应;b. 通过比较输出结果与期望响应产生估计误差自适应过程:根据估计误差自动调整滤波器参数1.LMS自...

2019-03-13 18:01:11 4365

原创 信号处理学习笔记4——自适应滤波器2-最速下降法用于FIR型维纳滤波

几点说明:上面提到的式(4.4)就是最速下降法中的权值更新公式。在维纳滤波中,期望响应一般就是噪声。因为维纳滤波本身就假设信号和噪声是(即这里的抽头输入u(n)和期望响应w(n))广义联合平稳的,所以输入相关矩阵R\bold RR以及输入和噪声的互相关向量p\bold pp是恒定的。因此式(4.9)和式(4.10)的计算结果仅与迭代时的权值向量有关,并且是可以精确计算的(这是与后面LM...

2019-03-13 17:23:54 1785

原创 信号处理学习笔记3——自适应滤波器1-最速下降法理论

关于什么是自适应滤波器,在参考文献1的“关于&amp;amp;amp;amp;amp;amp;amp;lt;自适应滤波器原理&amp;amp;amp;amp;amp;amp;amp;gt;一书”一节中,有如下描述:  自适应信号处理可以在无需先验知识的条件下,通过自学习适应或跟踪外部环境的非平稳随机变化,并最终逼近维纳滤波器和卡尔曼滤波器的最优滤波性能。  由于没有先验知识,自适应滤波器的性能一般只能逼近维纳滤波器和卡尔曼滤波器。这是可以理解的。1. 先导知识——最速下降法最

2019-03-07 16:58:15 1985

原创 信号处理学习笔记2——维纳滤波器

在讨论维纳滤波之前,先来看看维纳滤波器在线性滤波器体系中处于什么位置。  经典的FIR和IIR滤波器要求已知信号和噪声的频谱信息,并且信号和噪声的频谱没有交叠。信号和噪声的频谱有交叠时,如果硬要使用FIR和IIR当然也可以,但要么会造成噪声滤除不干净,要么会造成滤除噪声的同时对有用信号造成“误伤”。  实际上,在信号和噪声频谱有交叠时,滤波问题演变为在已知观测量的前提下,对未知信号进行最佳估计的问题(所以这里信号也称为估计量)。既然希望估计是最佳,那必然要有个评价准则,不同的评价准则便衍生出不同的估

2019-03-07 15:17:37 22059 5

原创 信号处理学习笔记1——滤波概述

什么是滤波?按照我个人的理解,滤波就是从观测信号中去除噪声,留下想要信号的过程。线性滤波与非线性滤波根据滤波器的输出是否为输入的线性函数,可将它分为线性滤波器和非线性滤波器两种。若噪声为加性,即噪声是叠加到“干净”信号上的,则可用线性滤波器将噪声滤除。若噪声不是加性,则需要非线性滤波器。典型的线性滤波如经典IIR、FIR滤波,典型的非线性滤波如中值滤波、形态学滤波、同态滤波、基于小波分...

2019-03-06 15:21:46 2702

转载 实时嵌入式软件开发的25个常见错误

转载自:https://blog.csdn.net/lulubooboo/article/details/7370808  英文原文由David B. Stewart撰写,  这篇论文对实时嵌入式软件开发的易犯错误做了深入分析,对我们的开发非常有指导意义。 David B. StewartSoftware Engineering for Real-Time Systems ...

2019-02-15 13:41:45 3375

原创 《程序设计与数据结构》读书笔记1——2.2节结构体相关

结构体定义时需要注意字节对齐的问题,在串口/网络等数据传输时,有时为了传输帧格式设计方便,将帧格式设计为结构体,这时更要注意结构体对齐,防止出现不希望的补零。为保险起见,可在定义结构体时声明结构体为1字节对齐。因为结构体指针比整个结构体小的多,所以需要向函数传递结构体时,最好传递结构体指针,而不是结构体本身。这样在函数调用时,压入堆栈的效率要更高。结构体的成员不仅可以是变量,还可以是函数指针...

2019-02-12 17:46:56 180 2

转载 浅谈嵌入式 MCU 软件开发之应用工程的堆与栈

转载自:http://huxiongwei.spaces.eepw.com.cn/articles/article/item/136717 内容提要 概述与案例分析1. 嵌入式 C 语言应用工程中堆栈的定义和作用2. 嵌入式 C 语言应用工程的栈大小确定3. 嵌入式 C 语言应用工程的堆栈溢出定义、危害以及应对措施 概述与案例分析过去工作中,我经常遇到客户非...

2019-01-31 14:20:29 1335

转载 关于嵌入式开发中堆栈的理解

转载自:https://blog.csdn.net/Eric_01230/article/details/86299949 今天去面试,面试官再一次问到了对堆栈的理解这个问题,答的不是太好,在网上又查阅了一些讲的比较清楚的博客,现在来梳理一下内容,以备下次之需。一个由C/C++编译的程序占用的内存包括下列几项:栈区(stack) 堆区(heap)静态区(全局区)常量区代码区它...

2019-01-31 14:19:31 1015

转载 STM32学习笔记11——HardFault_Handler处理方法

根据网络资料及自己调试经验总结如下:STM32 出现 HardFault_Handler 故障的原因主要有两个方面:1、内存溢出或者访问越界。这个需要自己写程序的时候规范代码,遇到了需要慢慢排查。2、堆栈溢出。增加堆栈的大小。排查方法:发生异常之后可首先查看 LR 寄存器中的值,确定进入异常前一刻使用的堆栈为 MSP 或 PSP,然后找到相应堆栈的指针?注:在 HardFault_Ha...

2019-01-11 16:57:24 2690

原创 嵌入式linux开发板web服务器搭建2——CGIC移植

移植完Boa后,还需要利用C语言的CGI库“CGIC”,并结合html完成Web开发,实现前端网页和设备的数据交互。主要步骤参考https://wenku.baidu.com/view/8d5dd954f01dc281e53af08f.html中的描述,主要步骤如下:CGIC简单测试先编写个test.c程序,如下:#include &amp;amp;amp;amp;lt;stdlib.h&amp;amp;amp;amp;gt;int main(...

2019-01-07 21:44:23 2665 3

原创 嵌入式linux开发板web服务器搭建1——Boa移植

嵌入式linux开发板web服务器Boa移植笔记环境Ubuntu10.04.4boa-0.94.13主要步骤主要参考https://wenku.baidu.com/view/8d5dd954f01dc281e53af08f.html和https://blog.csdn.net/lyiya/article/details/50865947两篇博客的步骤。从http://www.boa....

2019-01-07 12:36:05 2847

原创 linux下移植libcurl记录

移植过程主要参考博客:https://blog.csdn.net/wuzhiwuweisun/article/details/79129838也借鉴了博客:https://blog.csdn.net/zhouzhenhe2008/article/details/53768854 下载的文件为:curl-7.61.1.tar.gz,网址为:https://curl.haxx.se/d...

2018-12-29 18:11:34 511

转载 SysTick的优先级是高还是低

转载自:https://blog.csdn.net/yxfabcdefg/article/details/49308329摘要             SysTick系统嘀嗒定时器是Cortex内核的部分,尤其对于有实时操作系统的软件,它一般会作为整个系统的时基,所以这个对操作系统非常重要。            SysTick                、CM3、系统嘀嗒      ...

2018-12-17 17:24:44 727

原创 基于μCOSiii的AT指令代码和使用方法详解

一、主要思路项目中需要用到AT指令与模块通信,前期写了个不带操作系统的AT指令代码模块。现在需要用μCOSiii操作系统,为了提高代码健壮性,对代码进行了重构。在网上看到RT-Thread中实现了AT组件(https://www.rt-thread.org/document/site/submodules/rtthread-manual-doc/zh/1chapters/14-chapte...

2018-12-17 10:34:37 1551 1

原创 windows和linux下读取文件换行符的一个坑——\r\n和\n

      拿同事的一个windows下的C程序,在Linux下跑,结果不正确。定位为读取.ini配置文件错误。该配置文件是在windows下编辑的,网上查到资料,说是windows和linux下对换行符处理不同导致的。      博客https://blog.csdn.net/stpeace/article/details/45767245说的很详细,主要意思是如下:       Win...

2018-12-12 21:31:20 19720 1

原创 在子函数中malloc分配内存和free释放内存的方法(基于C)

1. 子函数malloc分配内存       为了增强程序可读性,有时会在子函数中malloc分配内存。测试了如下三种方法,容易想到的是第一种。事实证明这种也是错误的!#include &lt;stdio.h&gt;#include &lt;string.h&gt;#include &lt;stdlib.h&gt;typedef struct _dataStc{ int bu...

2018-12-04 18:00:45 10913 11

原创 AT指令代码与实现方法(基于C语言)

WiFi、蓝牙、4G等多种通信模块均需使用AT指令进行配置和通信。基于μCOSIII操作系统,写了个AT指令的代码,也可以简单修改后用于裸奔系统。简单介绍一下,完整代码下载链接为:https://download.csdn.net/download/hnxyxiaomeng/108156561、AT配置结构体设计了一个结构体stcATConfig,可以对发送的每个指令分别进行配置。...

2018-11-29 10:00:02 30358 3

原创 字符串常量不可赋值,字符数组可以

C语言中除了初始化外,给字符串赋值的方法有memcpy、strcpy和sprintf。项目中将使用到的字符串定义为常量,然后试图用sprintf改变它的值,一直失败,后来定义改为字符数组就可以了。代码如下: char *str = "aaaa"; char chArray[] = "aaaa"; sprintf(str,"%s"...

2018-11-21 18:12:03 2624

转载 解决:invalid application of `sizeof' to incomplete type `char[] '错误

最近做一个DIY玩具,遇到的这个问题: 解决:invalid application of sizeof' to incomplete typechar[] ‘错误//a.c文件#include "a.h" char array[]={0XED,0X34,0X40,0X34};//a.h文件#ifndef _A_H#define _A_H#define size   (sizeo...

2018-11-16 15:21:17 7032

转载 数字证书及CA的扫盲介绍

 ★ 先说一个通俗的例子  考虑到证书体系的相关知识比较枯燥、晦涩。俺先拿一个通俗的例子来说事儿。  ◇ 普通的介绍信  想必大伙儿都听说过介绍信的例子吧?假设 A 公司的张三先生要到 B 公司去拜访,但是 B 公司的所有人都不认识他,他咋办捏?常用的办法是带公司开的一张介绍信,在信中说:兹有张三先生前往贵公司办理业务,请给予接洽......云云。然后在信上敲上A公司的公章。  张...

2018-10-18 10:48:07 175 1

转载 扫盲 HTTPS 和 SSL/TLS 协议

转载自:https://blog.csdn.net/PTkin/article/details/50563831本文转载自大神编程随想的博客。阅读原文需要科学上网,建议有条件者直接阅读原文,本文转载只为方便墙内阅读与存档学习。原文传送门:扫盲 HTTPS 和 SSL/TLS 协议[0]:引子 @ 编程随想的博客扫盲 HTTPS 和 SSL/TLS 协议[1]:背景知识、协议的需求、...

2018-10-10 14:50:34 560

原创 网络调试(TCP和MQTT)调试的好工具

网址为:http://tongxinmao.com/App/List网站提供了公用的外网TCP服务器和MQTT服务器,以及调试终端助手,功能非常强大。并且集成了很多软件开发小工具。感谢作者!...

2018-09-29 17:54:31 11812

转载 利用strlen和sizeof求取字符串长度注意事项

 首先,strlen是函数,sizeof是运算操作符,二者得到的结果类型为size_t,即unsigned int类型。大部分编译程序在编译的时候就把sizeof计算过了,而strlen的结果要在运行的时候才能计算出来。 对于以下语句:char *str1 = "asdfgh";char str2[] = "asdfgh";char str3[8] = {'a', 's',...

2018-09-25 11:00:40 340

转载 C语言如何不用goto、多处return进行错误处理?

参考:https://www.zhihu.com/question/51668402/answer/126921007do {break;} while(0);Goto不够优雅,对生成代码优化也不友好,实际上多年来关于要不要Goto一直有争论。而多return的问题在于不好做资源释放,前一个初始化分配的资源如果后面有错是要释放的,这样就导致每次出错return时都要小心保证前面的资源...

2018-09-18 21:15:39 663

原创 CC2530学习笔记2——Flash读写程序设计

在做CC2530 Flash读写时,对该芯片的Flash存储器典型操作进行了一些学习,总结在这里。理解不当甚至错误之处,请高手赐教,谢谢。CC2530的Flash按页组织,每页2048字节。与其它Flash存储器一样,被擦除为1,被写为 0。另外,在后面与逻辑空间映射时,还有个BANK的概念,是32KB。对Flash存储器有3种操作,简介如下:    擦除:最小单元是页,即2048字节;...

2018-09-03 20:11:44 4223 1

转载 CC2530学习笔记1——Flash存储器映射的讨论

转载自https://blog.csdn.net/bailyzheng/article/details/7541422 接触了一个月的zigbee,发现对cc2530的存储器映射还不是很熟悉,所以写这篇文章来和各位高手讨论一下,一下大家能指正我一些理解上的错误。本文以CC2530的F256为例,即有256kb的flash存储器和8K的sram存储器    一、CC2530里的四种存储空间...

2018-09-03 20:07:48 1773

转载 《面向机器智能的TensorFlow实践》StanfordDog完整修改

以下转载自博客:https://blog.csdn.net/fnhc462354756/article/details/79872994主要是为了备份。当然,他的代码参考了我之前的一篇博客,注释都还没变,哈哈。 《面向机器智能的TensorFlow实践》深入浅出,将tensorflow的很多概念讲的很清楚,很适合tensorflow的初学者学习。该书完整的代码在https://gith...

2018-08-09 08:48:49 426 1

原创 可用于实时嵌入式设备的心电信号基线漂移滤除方法——基于延迟的近似零相位IIR滤波器

      考虑到ECG信号去基漂算法需要在嵌入式设备中运行,并且尽可能降低延迟,选择IIR低通滤波器求得信号的基线漂移。将信号减去基漂后得到最终信号。      参考论文《基于零相位的心电信号基线漂移滤波方法的实时性改进》。该论文提出了一种(近似)零相位的心电信号基线漂移滤波方法。零相位IIR滤波在很多书中都有提到,主要原理是:先将输入信号按顺序滤波,然后将结果逆转后再次通过滤波器,将结果逆转...

2018-08-05 19:59:14 5995 1

原创 Z变换零点、极点分布与系统特性的关系

下述文字摘自博客:https://blog.csdn.net/guange99/article/details/42557919在Z变换里,零点的位置表示系统的“谷”,极点的位置表示系统的“峰”,我们把有峰的地方看做信号可以通过的地方,而有谷的地方看做信号被截止的地方。并且我们选择单位圆为频域的一个周期,那么可以得出,如果无零点时,极点在虚轴左半边为高通,极点在虚轴右边为低通;如果无无极点时,...

2018-08-01 16:44:21 21011

原创 提高USB HID设备速率的方法——基于C8051F380

       项目采用C8051F380的USB2.0接口实现HID设备(配置为Game Controller)。利用端点1发送数据,每包12个字节。经测试,即使设备什么也不做,仅在main函数的while(1)循环中持续发送数据,最快数据也仅达到5ms一包。后查阅资料,得到了如下结论,提高了发送速率(参考资料见后面的几幅图片):        1、USB HID设备上报数据采用的端点1必须配置为...

2018-03-29 14:40:05 10141 4

原创 STM32学习笔记9——stm32L072 SD卡程序移植记录

项目使用stm32L072,需要将采样的数据保存到SD卡中。SD卡程序参考ST公司的官方STM32L073Z_EVAL开发板的例程。需要修改的地方如下: 1、 修改stm32L073z_eval.h中SPI的管脚配置、AF配置; 2、 官方开发板使用了一片STM32L152CCT6扩展了STM32L073的IO口,并通过I2C接口连接。在SD卡例程中,扩展IO口用于检测SD卡是否连接好。我们

2017-12-17 18:40:50 3144

基于μCOSiii的AT指令代码和详细使用说明

借鉴RT-Thread思路,实现基于μCOSiii的AT指令代码,并附带详细使用说明。与MCU和模块基本没有耦合性,可直接用于绝大多数模块。

2018-12-17

基于C语言的AT指令代码实现

基于C语言的通用AT指令代码,含有详细的代码、解释及例子,可直接用于各模块的AT指令通信。

2018-11-29

CC2530 Flash读写测试程序

自己写的CC2530 Flash存储器读写测试程序,除了有擦除、写入和读取等函数实现外,还有测试程序,是完整的IAR工程。方便直接使用。

2018-09-03

用于去除心电图(ECG)高频干扰的IIR滤波器实现(基于C#)

采用C#实现的ECG低通滤波器,可有效去除高频噪声。ECG信号采样频率为250Hz ,滤波器系数是采用matlab中的fdatool设计得到。滤波器系数可按照自己设计的结果修改。

2018-08-01

iir with all-pass filter design example(matlab).pdf

为了得到(近似)线性相位,需要在iir滤波器后添加一个全通滤波器。本文给出了一个设计的详细例子。可以在matlab中运行。

2018-07-23

deep brain stimulation programming mechanisms principles and practice

国外权威电子书,关于DBS(深部脑刺激)的理论和实践,deep brain stimulation programming mechanisms principles and practice.pdf

2018-07-19

基于STM32F4的小波变换移植(含小波分解与重构)

基于STM32F4平台,采用C实现了小波变换和提升小波变换,并附有详细移植说明和例程,可直接使用。

2018-03-22

Labview控制Angilent信号发生器

采用Labview编写的Agilent 33220A信号发生器控制程序,可加载txt格式数据。

2017-03-13

C嵌入式编程设计模式

高清晰版。嵌入式C语言编程设计模式,实用。

2016-11-17

嵌入式C语言进阶之道

嵌入式C语言进阶知道,讲述详细。

2016-11-17

C8051F38X中文手册

C8051F38X中文手册,不好找啊

2016-08-31

单片机的C语言

单片机C语言,适合初学者系统学习

2016-08-31

电子线路计算机辅助设计

电子线路计算机辅助设计非常精炼的讲义,很实用的!

2009-02-26

空空如也

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

TA关注的人

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