自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 C语言函数重入

C语言函数重入可重入函数:可以被中断的函数,即这个函数执行时,可以中断其执行,可以由一个或多个任务并发使用,而不比担心数据错误。 不可重入函数(不安全函数)不能运行在多任务环境下,除非能保证互斥(使用信号量/代码的关键部分禁用中断) 是由于使用了未受保护的系统资源,如全局变量区,中断向量表等。可重入函数:没有静态数据结构 不返回指向静态数据的指针 所有函数数据由函数的调用...

2020-01-17 15:57:36 1454

转载 中断服务函数

中断问题也是面试嵌入式岗位时,面试官比较喜欢拷问的问题之一,作为一个嵌入式开发人员,自然少不了与中断打交道,裸机程序中作为前台服务程序,发挥着重要的作用。中断服务函数应该注意的四大点:1.中断服务函数不能传入参数;2.中断服务函数不能有返回值;3.中断服务函数应做到短小精悍;4.不要在中断函数中使用printf函数,会带来重入和性能问题中断并不是程序一开始...

2020-01-17 14:44:45 8943 1

转载 volatile为什么要修饰中断里的变量

共有四种情况:就下面这三种情况,还有利用for循环去延时的程序防止被优化(编译器认为for循环没用而优化掉),没有其它了,如果是这几种,那就干脆直接用volatile修饰:一个是防止变量在其它地方被改变,而cash里没有改变,所以要求每次都要读取内存。一个是防止编译器优化,编译器感觉你这个变量不会有变化,但是实际在其它线程或硬件会改变它,所以要每次从内存读,你编译器就不要优化。所以...

2020-01-17 13:45:59 1878

转载 const、static型数据在内存中如何存储?(变量存放位置)

const、static型数据在内存中如何存储?(变量存放位置)static int val_a = 1 ; // 初始化的静态变量int val_b = 2 ; // 全局变量const int val_c = 3 ; // const 全局变量static int val_d ; // 未初始化的静态变量int val_e ; ...

2020-01-17 11:38:55 1853

转载 C语言运算中的数据类型自动转换原则

1、隐式转换C在以下四种情况下会进行隐式转换: 1、算术运算式中,低类型能够转换为高类型。2、赋值表达式中,右边表达式的值自动隐式转换为左边变量的类型,并赋值给他。3、函数调用中参数传递时,系统隐式地将实参转换为形参的类型后,赋给形参。4、函数有返回值时,系统将隐式地将返回表达式类型转换为返回值类型,赋值给调用函数。2、算数运...

2020-01-17 11:07:04 3065

原创 VC 小结

1.VC STATIC控件响应鼠标点击事件将notify设置为true。双击控件即可自动创建点击事件函数,如void CRecPlotDlg::OnStnClickedWavePwm()2.建立文件夹和文件/保存文件#include "shlwapi.h"#pragma comment(lib,"shlwapi.lib") CString filepath ...

2020-01-16 16:31:24 833

转载 CFile、CStdioFile、FILE和其他文件操作

CFile//创建/打开文件CFile file;file.Open(_T("test.txt"),CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite);文件打开模式可组合使用,用“|”隔开,常用的有以下几种:CFile::modeCreate:以新建方式打开,如果文件不存在,新建;如果文件已存在,把该文件长度置零,...

2020-01-14 16:29:19 1567

转载 STM32启动文件详解

启动文件使用的 ARM 汇编指令汇总 启动程序源码注释(点此下载)1. Stack—栈 Stack_Size EQU 0x00000400 AREA STACK, NOINIT, READWRITE, ALIGN= Stack_Mem SPACE Stack_Size __initial_sp 开辟栈的大小为 0X00000400...

2019-12-18 15:25:14 802

转载 关于堆栈的讲解(我见过的最经典的)

这是一篇转发的文章,我对他进行了格式化而已,原文出处不详。一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分...

2019-12-18 14:25:23 892

转载 内联函数

内联函数的作用作用:不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处,适用于功能简单,规模较小又使用频繁的函数。递归函数无法内联处理,内联函数不能有循环体,switch语句,不能进行异常接口声明。主要体现在于inline关键字内联是以代码膨胀(复制)为代价,仅仅省去了函数调用的开销,从而提高函数的执行效率。如果执行函数体内代码的时间,相比于函数调用的开销较大,那么效率的...

2019-12-18 11:06:05 1301

翻译 STM32如何查看Flash和RAM使用空间以及如何压缩RAM的使用空间

KEIL编译完成后,在Build Output窗口会出现一下信息:Code是代码占用的空间;RO-data是 Read Only 只读常量的大小,如const型;RW-data是(Read Write) 初始化了的可读写变量的大小;ZI-data是(Zero Initialize) 没有初始化的可读写变量的大小。ZI-data不会被算做代码里因为不会被初始化;简单的说就是在烧写...

2019-11-29 16:11:01 1478

转载 Linux错误代码含义

常用Linux错误代码含义,如下表所示: 名称 值 描述 EPERM 1 操作不允许 ENOENT 2 无此文件或目录 ESRCH 3 无此进程 ...

2019-11-11 15:19:24 888

转载 Failed to install the following Android SDK packages as some licences have not been accepted

Failed to install the following Android SDK packages as some licences have not been accepted(搬砖!!! 摘自简书:尽信书_不如无书)Failed to install the following Android SDK packages as some licences have not been a...

2019-10-28 14:35:43 1390

转载 PDB文件:每个开发人员都必须知道的

PDB文件:每个开发人员都必须知道的PDB Files: What Every Developer Must Knowhttp://www.wintellect.com/CS/blogs/jrobbins/archive/2009/05/11/pdb-files-what-every-developer-must-know.aspxPDB文件:每个开发人员都必须知道的...

2019-10-18 09:15:40 749

转载 jtag和swd有什么不同_jtag和swd的区别

本文为大家介绍jtag和swd的区别。jtag和swd有什么不同----引脚对比对于仿真ARM,TKScope仿真器家庭的AK100/AK100Pro、K8/K9等仿真器提供标准的20PIN调试接口。接口管脚定义如下。其中ARM芯片有两种调试模式,一种是JTAG,一种是SWD,二者在管脚上有复用。标准20PIN调试接口JTAG调试接口引脚JTAG调试接口必...

2019-10-17 08:51:08 2181

转载 sprintf相关源代码实现

//#include "stdafx.h"#define INCLUDE_STRING#ifdef INCLUDE_STRING #include "string.h"#endif#ifdef KERNEL #define NOFLOAT#endif#define sprintf my_sprintf#define vsprintf my_vsprintf...

2019-10-15 15:20:34 5636 1

转载 C语言~宏操作大全(宏定义、内置宏、__FILE__、__LINE__、##用法)

当然宏定义非常重要的,它可以帮助我们防止出错,提高代码的可移植性和可读性等。下面列举一些成熟软件中常用得宏定义1,防止一个头文件被重复包含#ifndef COMDEF_H#define COMDEF_H//头文件内容 …#endif2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。typedef unsigned long int ...

2019-10-15 14:01:48 2121

原创 字符串

int main(){ char str[50]; int n=0; memcpy(str,"this is a test.",strlen("this is a test.")+1); printf("str:%s,len:%d\n",str,strlen("this is a test.")+1); while(str[n]!='\...

2019-10-09 11:03:52 774

转载 C语言#pragma使用方法

2019-09-26 10:21:38 1386

转载 setlocale函数

函数原型:char* setlocale (int category, const char* locale);setlocale位于头文件,setlocale() 函数既可以用来对当前程序进行地域设置(本地设置、区域设置),也可以用来获取当前程序的地域设置信息,使用setlocale需要两个参数第一个参数category:用来设置地域设置的影响范围。地域设置包含日期格式、数字格...

2019-09-09 10:31:27 919

转载 VC中对文件的读写

注意:1、由于C是缓冲写 所以要在关闭或刷新后才能看到文件内容2、电脑处理文本型和二进制型的不同 (因为电脑只认识二进制格式)方法一 :用C++的方法// 写文件ofstream ofs("4.txt"); // 如果我们要用这个类 我们就需要先#include <fstream.h> ofs.write("hello",strlen("hel...

2019-09-04 10:51:39 2926

转载 STM32端口复用和重映射

STM32的引脚可设置为可设置为:普通IO功能、复用功能、重映射功能。不过普通IO功能、复用功能用得比较多。复用在TSM32里面,大部分的引脚都是有GPIO复用功能,也就是说,一个 GPIO如果可以复用为内置外设的功能引脚,那么当这个 GPIO 作为内置外设使用的时候,就叫做复用。例如图下方框:串口 1 的引脚对应的 IO 为 PA9,PA10。 CAN总线的的引脚对应的 IO 为 PA11,PA...

2019-08-30 17:55:06 771

原创 xilinx下载mcs文件到flash

首先要将bit文件转为MCS文件,然后下载MCS文件到ROM中。在ISE或EDK下生成BIT文件,可通过IMPACT对FPGA进行配制, bit文件是配制到FPGA内部RAM的,掉电就没有了, 如果需要固化到片外FLASH里面(下载到FLash或EEPROM),则需要将BIT文件转化为mcs文件,通过IMPACT固化到指定的ROM中。bit文件时用于在线调试的,掉电后会自动丢失,上电时F...

2019-08-29 11:40:33 1383

转载 IIC教程

基础知识介绍时序图本文所有时序图均来自AT24C02的芯片手册IIC I2C 总线是一种串行数据总线,只有二根信号线,一根是双向的数据线SDA,另一根是时钟线SCL,两条线可以挂多个设备。 IIC设备(绝大多数)里有个固化的地址,只有在两条线上传输的值等于IIC设备的固化地址时,其才会作出响应。通常我们为了方便把IIC设备分为主设备和从设备,基本上谁控制时钟线(即控制SCL...

2019-08-29 10:50:52 887

转载 如何利用Device DNA实现FPGA设计加密

Xilinx所有的FPGA器件都有Device DNA,这是一个57bit的二进制序列,在器件生产的时候烧死到芯片里面,每个芯片都是唯一的。这个序列,用户可以通过JTAG或者verilog(VHD)应用程序直接读出。怎么使用这个DNA,因应用不同可能千差万别。一般用作加密场合,是这么使用的:1、根据每个芯片唯一的57bitDNA,经过某种变换(加密算法)变成另外一串秘钥,同bit文件一起存储...

2019-08-29 10:07:53 2617

转载 【VC】 swscanf_s 函数使用,方便快捷的转换数据格式

int swscanf_s( const wchar_t *buffer, const wchar_t *format [, argument ] ...);例如:取字符串的颜色值。UINT R,G,B;CString szColor(_T("#FE00FA"));swscanf_s(szColor,_T("#%02x%02x%02x"),&am...

2019-08-29 09:47:40 364

转载 MFC 多线程间通信

AfxBeginThead全局变量参数传递消息传递线程通信目录(?)[-]线程间的通信 线程之间的通信简介 全局变量方式 参数传递方式 消息传递方式 线程同步法 线程间的通信1.线程之间的通信简介一般而言,在一个应用程序中(即进程),一个线程往往不是孤立存在的,常常需要和其它线程通信,以执行特定的任务。如主线程和次线程,次线程与次线程,工作线程和用户...

2019-08-28 16:21:08 523

转载 VC/MFC 进程间通信方法总结

摘要随着人们对应用程序的要求越来越高,单进程应用在许多场合已不能满足人们的要求。编写多进程/多线程程序成为现代程序设计的一个重要特点,在多进程程序设计中,进程间的通信是不可避免的。MicrosoftWin32API提供了多种进程间通信的方法,全面地阐述了这些方法的特点,并加以比较和分析,希望能给读者选择通信方法提供参考。1进程与进程通信  进程是装入内存并...

2019-08-28 16:16:04 476

原创 VC 进程间用匿名管道通信

1、注:在父进程中关闭不需要的句柄。为什么需要关闭不用的句柄?内核对象引用计数,是指系统内部有多少句柄在标识这内核对象(线程内核对象,进程内核对象).创建一个新的进程的时候,系统会创建一个进程内核对象,和一个线程内核对象,每一个内核对象都有一个使用计数,系统会为这两个对象赋予一个初始的计数一,在CreateProcess返回之前,打开进程和线程对象,并将和对象相关的句柄放入pi.hP...

2019-08-28 15:13:23 423

原创 iMPACT

1、在命令行中输入impact,启动GUI;在命令行中输入impact -batch,进入批处理模式。GUI模式和batch模式不能同时开启。2.如果impact -batch 的参数是文件,impact将会执行文件中的命令。3、可在输入impact -batch后,再输入命令,也可直接impact -batch file.cmd...

2019-08-28 11:33:34 1225

原创 windows批处理文件bat 命令脚本文件cmd

1.在程序中调用windows批处理文件bat,创建进程:CreateProcess("impact_read_dna.bat",NULL,NULL,NULL,TRUE,0,NULL,NULL,&sui,&pi)2.执行bat文件中的每行命令,相当于在dos命令行中执行命令。若需调用其他的exe软件,需将此软件路径添加到环境变量中,这样在调用此软件时无需写出绝对路径。E...

2019-08-28 10:46:38 513

转载 VC 进程和线程的区别

一、进程 进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。 在Mac、Windows NT等采用微内核结构的操作...

2019-08-27 10:30:32 214

原创 栈--表达式求值

#为表达式开始和结束的标志。

2019-08-21 09:23:27 84

原创 线性表--链表

1.插入2.删除时间复杂度为O(n)插入和删除都是找到i-1个结点,但是插入无需p->next是否为NULL,删除的p->next不可以是NULL。3.逆向新建4.合并...

2019-08-14 13:42:36 65

原创 数组/顺序表 插入 删除 合并

1.插入2.删除3.合并

2019-08-14 10:42:29 268

原创 自增++ 自减--

fun(++n);先将n自增,然后传递给函数funfun(n++);先将n传递给函数fun,然后自增

2019-08-14 09:35:17 320

原创 冒泡排序法

升序思路:相邻的数据两两比较,将最大的数值放在最后,先排好最后一个。i 为动态最后一个的序号。j 为从第一个开始直到最后一个,相邻数据比较时用。change为false,说明序列已经为升序排列,无需再排序。...

2019-08-14 09:00:00 167

转载 ATPC 寄存器作用

1. ATPC (Automatic Transfer Power Control) 自动发信功率控制。技术的要点是微波发信机的输出功率在ATPC控制范围内自动跟踪接收段接收电平的变化而变化2. 基本ATPCS规定了在子程序调用时的一些基本规则,包括下面3方面的内容:1、寄存器的使用必须满足下面的规则:1).子程序间通过寄存器R0一R3来传递参数,这时,寄存器R0~R3可...

2019-08-09 17:05:35 311

原创 int 长度

int类型的长度取决于计算机字长,32位系统,计算机字长为32位,int类型也为32位;16位系统,计算机字长和int类型均为16位。地址的长度也取决于计算机字长。...

2019-08-05 09:08:56 7411 1

转载 char *a 与char a[] 的区别和char** argv与char *argv[]区别

char *a 与char a[] 的区别char *a = "hello" 中的a是指向第一个字符‘a'的一个指针char a[20] = "hello" 中数组名a也是执行数组第一个字符‘h’的指针但二者并不相同:看实例:把两个字符串相加:结果:hello0123456789对比:对比:Segmentation fault把字符串加到指针所...

2019-08-05 09:00:35 161

空空如也

空空如也

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

TA关注的人

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