- 博客(68)
- 资源 (30)
- 收藏
- 关注
原创 如何将不同大小及宽度的数据,拼接在同一块内存中?
/*************************************************************************@ brief 拼接一段数据到某个地址step1: 先定义一块地址,用于存储拼接之后的数据. 这里介绍两种方式:一种是用malloc一段内存: char *Ptr = NULL; Ptr = (char*)malloc(100 * sizeof...
2019-06-02 00:28:42
789
原创 VS coide 如何打开并显示十六进制的文件?
Q. vscode中如何显示hex码bin文件(内存hex码)?A: 利用vscode中的hexdump插件。hexdump可以显示文件的16进制,非常好用。Display a specified file in hexadecimal.插件简介:Display a specified file in hexadecimal...
2019-06-02 00:04:23
14616
1
原创 使得循环中某部分程序只执行一次的技巧
set a flag,使得某部分程序只执行一次。// *********************************************// @brief : the code for c experience// @author : mas// *********************************************#include <...
2019-06-01 23:53:18
6511
1
原创 指针和数组用到的一个小方法随记
比如我随手定义一个一维指针:typedef struct { int *src_height; int *src_width;}structname;然后我可以直接用这个指针名来当做数组用。structname *structname;structname->src_height[0] = pFrame->height;structname-...
2019-05-09 22:07:18
202
原创 YUV随笔
YUV: Y表示明亮度(Luminance或者luma),U和V表示的是色度(Chrominance),作用是用来描述影像色彩和饱和度,用于指定像素的颜色(用Cr和Cb来表示,Cr表示RGB输入信号红色部分和RGB亮度值之间的差异,Cb表示RGB输入信号蓝色部分和RGB亮度值之间的差异)。 YUV的优点在于传输时占用极少的带宽,(比如RGB在传输时需要三个独立的视频同时传输)...
2019-05-09 21:57:45
283
原创 vscode配置C调试环境(launch.json tasks.json setting.json)
废话不多说,直接甩配置代码。如有在参考过程中有问题请联系我。首先,tasks.json是用来设置指令编译代码,launch.json是设置执行环境来执行代码。setting是设置语言环境;tasks.json:{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation...
2019-05-07 20:58:19
21639
3
原创 vscode创建python编译环境(launch.json)
废话不多说,直接甩文件,配置有问题的请参考。{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsof...
2019-05-07 19:55:24
24668
3
原创 python 从入门到放弃 哈哈哈
2019.04.26 开始的第一天001.学习输入input()和输出print('')# 学习输入input()和输出print('')print('hello world')name = input() print('name is ' + name) # 可以是字符串,也可以是变量值;002. 计算字符串长度# len() 计算字符...
2019-04-27 09:03:53
1058
1
原创 CAN总线知识入门小结(搬运工)
本文为网上资料搬运,实在是PPT作者做的内容质量非常高,在这里感谢作者分享。资料来源地址不详,如有内容冲突,请联系我,谢谢。CAN: Controller Area Network. - BOSCH Company for cars. CAN最初是由德国的BOSCH公司为汽车监测、控制系统而设计的。现代汽车越来越多地采用电子装置控制,如发动机的定时、注油控制,加速、...
2019-04-21 15:57:41
1497
原创 DSP和普通的MCU或者SOC区别小结
对比项 属性/特征 硬件乘法器/累加器AUL 通用的MCU在执行乘法操作时是通过软件编程的方式的来实现的,通常需要几十甚至上百个时钟周期,而DSP处理器却有自己的硬件乘法器,使用硬件的方式来执行乘法操作,用硬件的方法总比用软件的方法有着无法比拟的速度优势。 DSP处理都有自己的累加器单元AUL,大多数的DSP处理器在执行乘加操作时可以在一条指令周期内同时...
2019-04-21 15:07:41
4974
原创 Frimware的release模式和debug模式
Debug模式和Realease模式:1)debug有调试代码,体积大;release版本没有调试代码,体积小,执行速度快! 调试模式:在程序中设置Bpoint时,程序知道在Bpoint的位置停止,并可以看到veriable的值。是因为debug模式下,编译器在代码中添加了许多调试需要的代码,可以让SystemTrace得到,返回给你。 这些代码当然是要占用空间和时...
2019-04-21 14:43:50
399
原创 .md文档是什么? 如何打开?
.md文档是什么? 首先来普及一下什么是md文件, md全称markdown,markdown也是一种标记语言。 .md即markdown文件的基本常用编写语法,是一种快速标记、快速排版语言,现在很多前段项目中的说明文件readme等都是用.md文件编写的,而且很多企业也在在鼓励使用这种编辑方式,特别作为一个前端从业者更要学会使用这种语言。下面就简单和大家分享一些...
2019-03-30 10:18:50
15768
原创 TDA2X 开发笔记(1)-环境搭建知识点
Code Composer Studio Code Composer Studio 是一种集成开发环境 (IDE),支持 TI 的微控制器和嵌入式处理器产品系列。Code Composer Studio 包含一整套用于开发和调试嵌入式应用的工具。它包含了用于优化的 C/C++ 编译器、源码编辑器、项目构建环境、调试器、描述器以及多种其他功能。直观的 IDE 提供了单个用户界面,可帮...
2019-03-30 07:23:32
4411
1
原创 DOS命令总结整理
DOS命令,计算机术语,是指DOS操作系统的命令,是一种面向磁盘的操作命令,主要包括目录操作类命令、磁盘操作类命令、文件操作类命令和其它命令。 目前大家常用的操作系统有windows10,windows 7等,都是图形化的界面。在有这些系统之前的人们使用的操作系统是DOS系统。 下面总结了常用的DOS命令,以方便项目开发,有总结不充分的地方,欢迎大家留言补...
2019-03-29 22:35:58
896
原创 windows下,如何用dos命令进入某个文件夹,并验证进入成功
cmd;D: //进入D盘cd + path(D盘) //进入D盘绝对路径;set pa=%cd% // 将路径赋值给变量;echo %pa% // 显示路径;
2019-03-29 21:29:20
3661
原创 关于C语言中的递归函数
递归实例:#include <stdio.h>void up_and_down(int);int main(void){ up_and_down(1); return 0;} void up_and_down(int n){ printf("Level %d: n location %p\n", n, &n); // #1 if (n <...
2019-03-14 11:09:34
22363
1
原创 嵌入式C中,变量的存储区域盘点
嵌入式中,变量的存储区域如下:1、BSS段( bss segment )通常是指用来存放程序中未初始化的全局变量和静态变量 (这里注意一个问题:一般的书上都会说全局变量和静态变量是会自动初始化的,那么哪来的未初始化的变量呢?变量的初始化可以分为显示初始化和隐式初始化,全局变量和静态变量如果程序员自己不初始化的话的确也会被初始化,那就是不管什么类型都初始化为0,这种没有显示初始化的就...
2019-03-06 17:11:22
627
1
原创 ASIC/FPGA开发流程及工具
电路设计语言: verilog / VHDL电路仿真工具:VCS/ VSS Synopsys仿真综合:DC Compile Synopsys布局布线:candence静态时序分析:Prime time Synopsys测试:DFT Compile Synopsys...
2019-03-06 07:51:08
1130
原创 专利申请的几个阶段
发明专利:提交申请-受理-初审-公布-实质审查-授权。 发明专利一般要1.5年-3年实用新型:提交申请-受理-初审-公布-授权。使用新型一般要7-14个月。备注:1. 实用新型是没有实质审查这个阶段的。2. 专利受理过后才会公布,因此在专利网上是查不到的。...
2019-03-05 07:12:15
2198
原创 结构体应用细节总结
项目背景:最近在做一个小系统,其中一个模块是一个SOC和基于FreeRTOS的WIFI模组通过UART数据包通信。 遇到的问题: 目前对结构体的认知是struct 后的AFE4300_Event_s是声明结构体用的, 而结构体{}后的AFE4300_Event_t是具体化的结构体对象。 但是在定义结构体的时候又用了:AFE4300_Event_t AF...
2019-01-08 20:08:47
379
3
原创 快速计算CRC校验(异或)的方法
在嵌入式的通信协议中,为了提高通信的鲁棒性,经常会对数据帧进行校验(其中一种常用方式是异或)。之前的做法是写 C程序进行校验,并输出结果。其实另一种方式是可以用BCC校验在线计算器进行校验值计算。BCC校验在线计算方式:http://www.ip33.com/bcc.htmlC程序计算方式:#include <stdio.h>unsigned cha...
2019-01-08 17:46:47
9869
1
原创 AFE ADC测量芯片在读取ADC值时,出现读取ADC值恒0的情况
项目背景: BPA项目, 使用的是一个模拟前端芯片,该AFE集成了24bit的ADC和BIM模块,与主控SOC的通信采用SPI通信。遇到的问题描述: 在读取AD值过程中,发现读出的AD值全部为0,不论是内short模式,还是外load模式。功能如下: 1)开启测量,丢掉前4笔数据(ADC有一个建立的过程,此时AD值还未达到稳定值)。 ...
2019-01-07 20:18:10
3670
2
原创 FreeRTOS临界区应用与总结
项目背景: 做一个测量阻抗脉搏波的设备,设备功能其中之一是采集阻抗信号,通过一个高精度ADC转换为AD值,并将AD值输出。软件模块示例如下:if (CS1259Ready()) //等待ADC转换完成 { Z13Adc = ReadADC(); //转换完成后读取ADC值; printf("%d\t\t",Z13Adc); Z13R...
2019-01-02 15:33:47
4257
原创 关于模拟信号的信噪比分析总结(待完善)
背景是做一个阻抗脉搏波的项目,大致原理为用高精度的ADC采集人体的阻抗信号,分析阻抗信号的变化和信号特征,从而得到人体的一些参数。例如: 在此信号情形下,想要获取和分析信号的细节,就要对信噪比提出了一个比较高的要求。否则白噪声或者系统噪声就会将一些信号细节淹没,从而影响结果参数的准确性,重复性,一致性等。 因此本文主要是针对信号做信噪比的处理分析。目的是将...
2019-01-01 19:33:09
4886
原创 万用表测交流电压时测出的为有效值还是有效值?
背景是测量一个阻抗的交流电流大小。IC内部可以产生50Khz的交流正弦信号,交流电流会流经C19,C16,1K或者300R,返回到IC,R16起到了限流的作用,这里需要测量流经R16限流电阻的交流电压的大小。 方法是用万用表交流档测量R16两端的电压,通过I=U/I得出电流大小。实测时,万用表显示的交流电压是一个稳定的值。那么这个值是交流电压的峰峰值还是有效值呢...
2018-12-25 09:49:30
22304
1
原创 蓝牙4.0: Classic Bluetooth 和 Bluetooth Low Energy对比
蓝牙是爱立信于1994年提出的一种短距离无线通讯技术。特点在于: 1)工作在2.4Ghz的ISM频段; 2)可同时传输语音和数据; 3)可 建立临时性的对等连接,设备可分为主设备(Master)和从设备(Slave), 几个设备组成一个皮网(Piconet),其中,只有一个设备为主设备,其余均为从设备,皮网是蓝牙最基本的网络形式。最简单的皮...
2018-12-21 14:38:24
2927
原创 #pragma 用法总结
现在的编译器中,可以通过命令行参数或IDE菜单修改编译器的一些设置。#pragma把编译器指令放入源代码中。例如:可以让编译器支持某Ç标准。#pragma c9x on 此外的#pragma还有许多其他用途,例如:1)防止头文件多次编译@pragma once/**************************************1. 在头...
2018-12-17 23:01:44
562
原创 关于阻抗心率信号信噪比问题的解决思路整理
最近在做一个阻抗心率的项目,原理是利用人体的阻抗,随着血液的循环,会呈现一定的规律性变化,变化过程中会有0.5ohm左右的变化。但是在项目过程中遇到信噪比差的问题。在这里对问题的思路定位做一个总结和知识点的整理。现象如下:正常信号示意图: 测量原理如下: 原因分析: 已经确认了测量芯片的软件配置和硬件电路配置。但是信噪比仍然差。因...
2018-12-12 23:37:19
1561
4
原创 四脚贴片晶振的引脚区分
最近在使用TI的AFE4300,其ADC需要一个外挂的1M晶振驱动才能工作,因此设计了1M晶振驱动,然而在贴片的过程中,不知道怎么去识别晶振的引脚,因此这里对这种四角的贴片晶振的引脚识别做一个简单的总结。 常见的贴片晶振规格有2.5*2.0mm,3.2*2.5mm,5.0*3.2mm,6.0*3.5mm,5.0*7.0mm。 2脚无源贴片晶振通常要数陶瓷面的较为...
2018-12-12 10:21:36
36358
2
原创 嵌入式C中的预定义宏总结
在程序设计过程中,经常需要设置预定义宏来返回程序的某些状态,以方便交叉编译和调试,比如用__func__打印该函数和__LINE__打印该行行数,以定位程序中打印该信息的函数和位置:myPrintf(MY_PRINTF_DEBUG,"%s(%d):enFlag = %d\r\n",__func__,__LINE__,userGlobalParameter.encryption...
2018-12-11 07:39:28
244
原创 嵌入式C中的条件编译总结
在程序设计时,可以根据条件编译告诉编译器的条件执行或者忽略代码。例如在配置从机(eg: 模拟前端)的寄存器时,需要确认数据写入是否成功,进行读出和重写!此时可选择性的选择是否重写和重写次数。如下:SendDataToAddr(ADDR_AFE_BIM1,Body_FWR_50KHz);#if(DEBUG_CS1258_REWRITE == 1) uint8 count = ...
2018-12-10 23:17:58
554
原创 关于软件识别下降沿动作一个注意事项总结
项目背景是写一个测量阻抗的ADC芯片(AFE模拟前端)芯片驱动。问题背景:测量原理是该ADC芯片可以测量外接阻容网络的阻抗和相位,将外接阻抗的阻值(模拟量)转化为AD值(数字量),以80hz或者160hz或者320hz输出。并在AD转换完成后拉高GPIOx 25.12us。转换动作如下: 因此在读取AD时,检测识别该GPIOx的下降沿,识别到后说明AD转换完成,可以进行读取数据操作...
2018-12-10 19:51:43
997
原创 关于Kingst VIS 显示内存不足的解决方案
嵌入式领域中,经常会用到Kingst简易数字逻辑分析仪调试通信协议,或者评估某些进程运算时间。但经常在使用过程中偶然会显示内存不足,此时应该如何解决呢? 当金思拓数字逻辑分析仪显示内存不足时,有时,重新拔插逻辑分析仪器的电源或者重启上位机软件即可。但当重新拔插逻辑分析仪器的电源或者重启上位机软件都无效,还是会显示内存不足时此时由两种解决方法:1)重新换...
2018-12-10 17:39:13
1697
原创 C在程序执行之前,C预处理器会进行哪些操作?
了解C预处理的一些操作,对C的嵌入式开发的设计,调试,应用都会有很大的帮助,因此这里对C预处理器的一些操作做了一个简单的总结,一是对我接下来的嵌入式设计有一个思路的整理,另一方面也希望对偶然逛到本文的你有帮助。 想要深入的了解,必须解决几个问题。1 . C预处理器负责哪些事情? 1)将符号缩写替换成其表示的内容(ex:#define); ...
2018-12-05 01:14:34
611
原创 关于数据存储,寻址,内存映射,硬件指针的总结与应用
最近在做一个测量阻抗心率的算法,背景是基于阻抗测量原理,运用家用人体秤的金属电极片(或者ITO),进行人体心率的检测和测量,达到心率健康检测的目的。应用场景在于家庭健康测量方面。 在算法设计和调试过程中,因为内存映射理解不深刻,硬件指针应用不熟练,过程中走了很多弯路。比如在内存翻PAGE,翻BANK的问题上,由于对直接寻址和间接寻址的理解误差,导致心率算法版本更新迭代时,...
2018-12-04 10:53:50
1105
原创 如何理解FreeRTOS中的vTaskDelay(n)
FreeRTOS提供了一个任务睡眠函数,该函数是一个非常有用的系统API。void vTaskDelay(portTickType xTicksToDelay); //任务睡眠函数 该函数目的在于告诉操作系统,现在无任务在做,请告诉kernel将时间分配给其他任务,并在某个时间点将该任务唤醒。这个时间点就是函数的入参,一般都是以tick为单位。...
2018-11-28 00:06:10
14784
原创 FreeRTOS 简单总结(待完善)
1)如何声明任务函数原型:void ATaskFunction( void *pvParamaters); 返回值必须为无效的,且带有一个空隙指针参数; 任务可以理解为在自己权限范围内的小程序,是一个死循环,不会退出; 没有返回值,决不能出现回报;2)一个任务函数是什么样的(任务描述)?//@func : 如何实现一个任务;void ATaskFunction(void...
2018-11-27 00:51:29
943
原创 ##__VA_ARGS__ 总结
在嵌入式的交叉编译过程中,经常会用到宏定义控制程序运行模式,或者控制打印模式,提高程序开发和调试效率,比如在某个项目中,设置了几种程序运行模式,控制打印输出:#define MY_PRINTF_NORMAL 0#define MY_PRINTF_MUST 1#define MY_PRINTF_ERROR 2#define MY_PRINTF_DEBUG 3//#...
2018-11-25 17:44:12
6327
原创 嵌入式开发中, \r和\r\n的区别
在嵌入式开发中,经常会涉及到用UART去打印一些运算中间层数据作为调试,或者是打印输出结果。为了处理数据的方便性,经常会涉及到数据的换行操作。那么在换行过程中\r和\r\n有什么区别呢?在windows系统中:'\r' 回车,回到当前行的行首,而不会换到下一行,如果接着输出的话,本行以前的内容会被逐一覆盖;'\n' 换行,换到当前位置的下一行,而不会回到行首;举个例子:...
2018-11-25 10:13:22
1198
原创 ADC VS参考电压在测量时和AD值的大小对应关系
背景是这样的,用24位的ADC,外接人体电阻,进行电阻AD值采集,当VS = 2.4V时,体电阻的AD值对应值为9.86 * 10 ^ 5量级,当VS = 2.8V时,体电阻的AD值对应值为7.01 * 10 ^ 5量级。 问题在为什么AD值不一样,且测量同一个外接电阻,VS = 2.4V时AD值比VS = 2.8V大?本文做一个较为深入的整理和分析。分析如...
2018-11-21 14:21:42
13114
3
Linux内存管理总结
2018-11-19
程序,进程,线程解析
2018-11-10
UART知识汇总
2018-11-09
汇编语言程序基本结构与组成
2018-11-09
DHCP基础知识简介(图文)
2018-11-07
CAN总线协议原理特点
2018-11-05
CAN总线协议入门
2018-11-05
FreeRTOS工作原理
2018-11-05
嵌入式实时系统FreeRTOS(经典学习资料)
2018-11-05
802.11abgn详细介绍和对比(经典)
2018-11-02
WebSocket图文解析
2018-11-02
SSL和OPENSSL 资料整理
2018-11-02
TCP/IP体系结构
2018-11-01
TCP/IP协议栈详细解释(绝对经典!强烈推荐)
2018-11-01
TCP/IP协议简要介绍
2018-11-01
FreeRTOS经典学习资料
2018-10-30
WIFI技术培训资料
2018-10-19
WIFI技术简要而全面的介绍
2018-10-12
华为WIFI培训资料
2018-10-12
WIFI国家及行业标准
2018-10-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人