- 博客(55)
- 资源 (2)
- 收藏
- 关注
原创 void *作为函数形参类型
编译报错,修改如下:查看库函数中memcpy()函数:到安装位置去找。IAR forarm 没有给memcpy函数的源代码IAR for 430 给出了get:1.查看库的方法,看库中的函数是如何写的。学会看库2.void *作为函数形参类型可以传递任何类型的指针参数,调用时不需要再强制转换。...
2020-04-01 10:49:55
4091
原创 C++ reverse函数的用法
C++ reverse函数的用法reverse函数功能是逆序(或反转),多用于字符串、数组、容器。头文件是#include <algorithm>reverse函数用于反转在[first,last)范围内的顺序(包括first指向的元素,不包括last指向的元素),reverse函数无返回值eg.string str="hello world , hi";reve...
2020-02-27 17:26:20
5761
原创 进制转换
任意进制转换:https://blog.csdn.net/The_Lich_King/article/details/37997229十六进制转换为十进制牛客网机试题:https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6?tpId=37&tqId=21228&rp=0&ru=/ta/hu...
2020-02-07 11:44:58
229
原创 巧妙去重排序
牛客网的一道机试题https://www.nowcoder.com/practice/3245215fffb84b7b81285493eae92ff0?tpId=37&tqId=21226&tPage=1&rp=&ru=/ta/huawei&qru=/ta/huawei/question-ranking将输入的数据作为数组的下标。链接:http...
2020-02-06 16:26:47
167
原创 时钟--时钟周期、机器周期、指令周期
1.时钟周期单片机时钟频率的倒数 它可以表示为时钟晶振频率(1秒钟的时钟脉冲数)的倒数(也就是1s/时钟脉冲数,比如1/12MHz),是CPU和其他单片机的基本时间单位。对CPU来说,在一个时钟周期内,CPU仅完成一个最基本的动作。时钟脉冲是计算机的基本工作脉冲,控制着计算机的工作节奏。时钟频率越高,时钟周期就越短,工作速度也就越快。时钟周期在CPU的描述里也叫节拍,即将一个机器周期划分
2017-12-20 13:59:50
8473
原创 STM32的固件库和CubeMX
标准外设库STD(Standard Peripheral Libraries) peripheral 英 [pə’rɪf(ə)r(ə)l] 美 [pə’rɪfərəl] adj. 外围的;次要的;(神经)末梢区域的 n. 外部设备HAL(Hardware Abstraction Layer 硬件抽象层)库 HAL库是ST未来主推的库,从前年开始ST新出的芯片已
2017-12-06 10:25:34
1440
原创 STM32总结
中断1. 使用 EXTI_GetITStatus()来查询哪根线产生了中断。 比如EXTI_GetITStatus(EXTI_Line13)就是查询13线是否产生了中断的。2. 还有 :在设置中断引脚的时候都是不能把PB1和PD1同时设置为中断源的。如果非要设置,后面设置的会把前面的覆盖掉的。3. 编写中断服务函数经常需要使用两个函数。 第一个是判断某个中断线上的中断是
2017-11-16 11:02:32
499
原创 STM32中AHB和APB
AHB,是Advanced High performance Bus的缩写,译作高级高性能总线,这是一种“系统总线”。 AHB主要用于高性能模块(如CPU、DMA和DSP等)之间的连接。AHB 系统由主模块、从模块和基础结构(Infrastructure)3部分组成,整个AHB总线上的传输都由主模块发出,由从模块负责回应。APB,是Advanced Peripheral Bus的缩写,译作高级外围
2017-10-24 13:59:28
1253
原创 通讯方式:近场通讯和无线通讯
近场通讯近场通信(Near Field Communication,NFC)是一种短距高频的无线电技术,在13.56MHz频率运行于20厘米距离内。其传输速度有106 Kbit/秒、212 Kbit/秒或者424 Kbit/秒三种。 一种近场耦合天线,由于13.56Mhz波长很长,且读写距离很短,合适的耦合方式是磁场耦合,线圈是合适的耦合方式。 业界在手机中通常采用磁性薄膜(如TDK等公司生产)贴
2017-10-17 10:24:15
2643
原创 频率及无线通信
频段频段,是一个有关通讯和声音理学方面的词语。在声乐领域中,频段是指声音频率而言,人耳对声音频率的感觉是从最低的20Hz到最高的20KHz,而人的语音频率范围则集中在80Hz~12kHz之间,不同频段的声音对人的感受是不同的。在通讯领域中,频段指的是电磁波的频率范围,单位为Hz,按照频率的大小,可以分为:甚低频(VLF)3 kHz~30 kHz,对应电磁波的波长为甚长波100 km~10 km。
2017-10-17 09:40:59
1203
原创 MRI
概念MRI:磁共振成像,英文全称是:Magnetic Resonance Imaging原理核磁共振是一种物理现象,作为一种分析手段广泛应用于物理、化学生物等领域,到1973年才将它用于医学临床检测。为了避免与核医学中放射成像混淆,把它称为磁共振成像术(MR)。MR是一种生物磁自旋成像技术,它是利用原子核自旋运动的特点,在外加磁场内,经射频脉冲激后产生信号,用探测器检测并输入计算机,经过计算机处理转
2017-10-10 17:23:35
2580
原创 flash
flash英 [flæʃ]美 [flæʃ] 第三人称单数 flashes 过去式 flashed 过去分词 flashed 现在分词 flashingvt. 使闪光;反射n. 闪光,闪现;一瞬间vi. 闪光,闪现;反射adj. 闪光的,火速的n. (Flash)人名;(西)弗拉什1. 一种创作软件,进行动画创作与应用软件开发。2. F
2017-10-10 15:07:33
501
原创 volatile
volatile纠错英 ['vɒlətaɪl] 美 ['vɑlətl]adj. [化学] 挥发性的;不稳定的;爆炸性的;反复无常的n. 挥发物;有翅的动物n. (Volatile)人名;(意)沃拉蒂莱就像大家更熟悉的const一样,volatile是一个类型修饰符(type spec
2017-09-28 10:23:55
240
原创 以管理员权限运行
windows操作系统中为了系统安全,设置了多个用户身份,其中管理员(administrator)拥有最高权限,可以添加删除硬件,安装程序,可对系统文件进行操作,普通用户(user)可以运行程序,不能添加删除硬件,不能操作系统文件。如果硬盘使用了ntfs分区,在文件夹上单击右键,选择“属性”,进入后选择“安全”(winxp专业版上有,home版没有)可以看到用户对文件夹有那些权限(比如只读权限,修
2017-09-28 09:00:19
1547
原创 单片机的时钟
STM32的时钟系统时钟SYSCLK,它是供STM32中绝大部分部件工作的时钟源。系统时钟可选择为PLL输出、HSI或者HSE。系统时钟最大频率为72MHz,超过此会出问题,它通过AHB分频器分频后送给模块使用。
2017-09-22 15:34:32
758
原创 VCC、VDD和VSS
VCC:C=circuit 表示电路的意思, 即接入电路的电压;VDD:D=device 表示器件的意思, 即器件内部的工作电压;VSS:S=series 表示公共连接的意思,通常指电路公共接地端电压。
2017-09-15 13:22:28
545
原创 JTAG和SWD
STM32 JTAG和SWD的使用区别:http://www.51hei.com/mcu/1955.htmlJTAG和swd是该设备调试CPU的两种工作方式。两种方式的调试效果差不多,但是JTAG所需要的线要多一些,稳定性和速度要快一些SWD是新技术。JTAG是为了传承旧产品。SWD节省空间 SWD最大的好处就是节省PCB 的空间和布线难度,减少到2跟线去仿真的
2017-09-14 14:42:28
577
原创 仿真调试器
ARMCortex系列仿真调试器主流的调试工具1、 J-LinkJ-Link是最著名的ARM开发调试工具,J-Link由SEGGER公司生产。提供对市面上几乎所有ARM内核芯片的支持。目前最新版本的J-Link产品为V8,支持JTAG和SWD模式。并且对主要的IDE环境如KEIL、IAR都有良好的支持。优点很多,因此也是首选的调试工具。2、 ULINK,通用的ARM JTAG工
2017-09-14 13:47:20
987
原创 JTAG和ULINK、JLINK、ST-LINK
1. ULINKULINK是KEIL公司研发的仿真器,专用于KEIL开发环境。ULINK2是ARM公司最新推出的配套RealView MDK使用的仿真器,是ULink仿真器(由KEIL公司开发)的升级版本。ULINK2不仅具有ULINK仿真器的所有功能,还增加了串行调试(SWD)支持,返回时钟支持和实时代理等功能。开发工程师通过结合使用RealView MDK的调试器和ULINK2
2017-09-14 13:43:51
1973
原创 JTAG
1. 什么是JTAGJTAG(Joint Test Action Group;联合测试工作组) 是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO, 分别为模式选择、时钟、数据输入和数据输出线。2. JTAG作用2.1
2017-09-14 09:43:38
517
原创 单片机的仿真器
单片机仿真器是指以调试单片机软件为目的而专门设计制作的一套专用的硬件装置。单片机在体系结构上与PC机是完全相同的,也包括中央处理器,输入输出接口,存储器等基本单元,因而与PC机等设备的软件结构也是类似的。因而单片机在软件开发的过程中也需要对软件进行调试,观察其中间结果,排除软件中存在的问题。但是由于单片机的应用场合问题,其不具备标准的输入输出装置,受存储空间限制,也难以容纳用于调试程序的专用软
2017-09-13 17:37:05
1754
原创 ARM
arm是什么意思 什么是ARM来源:http://www.elecfans.com/emb/arm/200712206747.htmlarm是什么意思ARM(Adanced RISC Machines),是一个公司名字,也是一种处理器的通称,还可以认为是一种技术名字。 1991年ARM公司成立于英国Cambridge
2017-09-12 10:13:39
551
原创 IAR中如何生成hex文件?
IAR中如何生成hex文件? 看了一些方法,这个方法在我的IAR中行得通。来源:http://puppypuppy2005.blog.163.com/blog/static/52048156201002191143786/IAR生成HEX文件,打开IAR的工程选项选中左边栏中的Linker在右边的选项卡中选中第一项out
2017-08-30 16:57:30
2122
原创 宏定义中的do{...}while(0)
do while(0)不是循环,只执行一遍!他的目的和直接加大括号一样。用while只不过是使这个宏可以用于if等分支里。他显然比{}要好用了,它可以break,但是{}不可以。所以说和{}一样倒真的错了注意在宏定义中,while(0)后面不加分号。此用法的功能:1.宏展开时不至于出错,涉及分号的问题;#define DO_SOMETHING {int ti
2017-08-29 14:55:57
1530
原创 break,continue,return的区别
break,continue,return的区别 1)break 直接跳出当前的循环,从当前循环外面开始执行,忽略循环体中任何其他语句和循环条件测试。他只能跳出一层循环,如果你的循环是嵌套循环,那么你需要按照你嵌套的层次,逐步使用break来跳出. 2)continue 也是终止当前的循环过程,但他并不跳出循环,而是继续往下判断循环条件执行
2017-08-29 09:28:29
235
原创 MSP430中断相关
一、进入中断的条件进入串口中断至少应该具备四个条件: - 第一,串口使能; - 第二,串口中断使能; - 第三,开总中断; - 第四,设置对应的中断向量及中断服务函数。 注意:USART模块初始化的顺序是:SWRST=1的情况下设置串口;后设置SWRST=0使模块正常工作;最后如果需要中断,则设置相应的中断使能。即,中断使能要在SWRST=0后设置。如下程序中相应为:ME2|=
2017-08-28 17:35:49
1533
原创 防呆
1.具有即使有人为疏忽也不会发生错误的构造──不需要注意力。2.具有外行人来做也不会错的构造──不需要经验与直觉3 具有不管是谁或在何时工作都不会出差错的构造──不需要专门知识与高度的技能。例如常见的手机SIM卡,有一个缺角,这种有特殊的设计就是防呆缺口,如果你插反了,就插不下去,防止新手误操作将SIM卡插反。防呆法,其义即是防止呆笨的人做错事。亦即,连愚笨的人也不会做错事
2017-08-28 14:00:44
1386
原创 单片机Microcontrollers
概念单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。单片机(Microcontrollers)是一种集成电路芯片,是采用超大
2017-06-08 09:29:58
1425
原创 生成随机数方法
1.创建了Rand函数:返回一个dMin和dMax范围内的随机实数。#include using namespace std;double Rand(double dMin,double dMax){ double dVal=(double)rand()/RAND_MAX; return dMin+dVal*(dMax-dMin);}int main(){ double dC
2016-12-08 21:44:37
394
原创 Unicode
1.定义:中文名:统一码。Unicode是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。 使用Unicode编码可以使您的工程同时支持多种语言,使您的工程国际化。1990年开始研发,1994年正式公布。2.与ANSI编码区别
2016-12-08 20:59:53
229
原创 面向对象
面对对象就是:把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。对同类对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。程序流程由用户在使用中决定。 面向过程就是: 自顶向下顺序执行,逐步求精;其程序结构是按功能划分为若干个基本模
2016-11-30 11:40:43
191
原创 对一个类求sizeof
1. 空类#include using namespace std; class Base { }; int main(){ cout<<sizeof(Base)<<endl; return 0;}输出:1 因为一个空类也要实例化,所谓类的实例化就是在内存中分配一块地址,每个实例在内存中都有独一无二的地址。同样空类也会被实例化,所以编译器会给空类隐含的添加一
2016-11-21 17:22:34
415
原创 在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?
1.一个函数被c编译器和c++编译器编译过后生成的符号不同假设某个函数的原型为: void foo( int x, int y ); 该函数被C编译器编译后在符号库中的名字为:_foo, 而C++编译器则会产生像:_foo_int_int之类的名字(不同的编译器可能生成的名字不同,但是都采用了相同的机制,生成的新名字称为“mangled name”)。
2016-10-21 11:01:28
976
原创 malloc与new的区别
1. malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。2.对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的
2016-10-15 13:49:48
214
原创 static与全局变量相关总结
按变量的作用域分类: 1.局部变量:在函数内定义的变量,作用域仅限于函数内。 2.全局变量:定义在函数之外的变量,它的作用域从定义处开始,到所在文件的结束。作用域是所在的整个文件。 3.外部变量:一个文件中的全局变量可以在另一个文件中作为外部变量使用,某个文件中引用另一个文件中的全局变量。用extern声明,说明这个变量是在其他文件中已经定义过的外部变量。那么,该文件
2016-10-09 22:13:16
741
原创 排序算法总结
稳定排序:通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj, Ai原来在位置前,排序后Ai还是要在Aj位置前。 冒泡排序、插入排序不稳定排序:快速排序各个排序的稳定性分析见下载的一篇文章。1.冒泡排序(Bubble Sort)思想:借助“交换”进行排序的方法。
2016-10-07 21:53:51
346
原创 树及二叉树中一些易忘的术语和特性
层次:节点的层次(level)从根开始定义起,根为第一层,根的孩子为第二层。深度:树中结点的最大层次称为树的深度(depth)或高度。度:结点拥有的子树数称为结点的度(degree),二叉树不存在度大于2的结点。二叉树的一些特性:1.在二叉树的第i层至多有2^(i-1)个结点(i>=1)。2.深度为k的二叉树至多有(2^k)-1个结点。(等比数列公式)3.对任何一课
2016-09-17 11:35:21
265
原创 1024!末尾有几个0
问题是,在1024!的数值结果中(即1*2*3*4*……*1024),有多少个零。思路:一、小学数学奥林匹克题目是这样的,答案确实是253算法简单:10 = 2 *5,必须有5的因子才可能乘到10;所以计算1到1024中分解出5因子个数即得到结果。二、两个办法:1. 暴力做法:用大数计算1024!,然后再看后面有多少个0。大数计算的代码可以参考:大数的四则运算及
2016-09-16 16:38:41
1031
原创 约瑟夫环问题(循环链表)
约瑟夫环问题的原来描述为:设有编号为1,2,……,n的n(n>0)个人围成一个圈,从第1个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列。从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。试设计一个程序求出出列顺序。通过输入:n,m 输出:出列序列#include using namespace std;
2016-09-09 15:18:21
738
STM32的8种IO口模式区别
2017-10-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人