- 博客(33)
- 收藏
- 关注
原创 C++析构函数
C++析构函数前言一、析构函数特点二、析构函数的使用1.析构函数的使用2.总结前言在构造函数的基础上有了析构函数,析构函数与构造函数密切相关的,析构函数的作用主要是执行清理任务,释放分配给对象的内存空间一、析构函数特点 析构函数(destructor)是成员函数的一种,它的名字与类名相同,但前面要加~没有参数和返回值,在定义时,不能说明它的数据类型,甚至void类型也不可以析构函数没有参数,因此不能被重载一个类可以有多个构造函数,但是只能有一个析构函数撤销对象的时候,析构函数会被自动调
2021-05-09 15:50:30
1649
原创 No Cortex-M Device found in JTAG chain问题
No Cortex-M Device found in JTAG chain问题问题描述解决办法问题描述在使用JTAG下载的时候的时候出现该问题,排除了硬件连接以及下载器损坏的情况下,导致下载不成功。解决办法首先在Keil 中确认当前下载器选择是否正确之后查看下载方式是否正确,这是由于我们使用的是SW的接口但是选择的却是JTAG,因此需要修改接口问SW。完成如上操作即可成功解决该问题。...
2021-05-08 13:42:46
8743
6
原创 C++引用用于函数
将引用作为函数参数进行传参的方式叫做引用传参。按照引用传递允许被调用的函数访问函数中的变量。使用引用交换两个数。 void refrece_swap(int &a,int &b) { int temp; temp = a; a = b; b = temp; } int main() { int a = 10,b = 20; cout<<"a...
2021-04-21 10:27:37
989
原创 C++引用之引用语法
引用是C++提供了一种给函数传递地址的途径,引用的本质就是给一个已经定义好的变量取一个别名。语法:(1) &和别名结合表示引用(2) 给某个变量去别名就定义某个变量(3) 从上往下替换(4) 引用必须初始化(5) 引用一旦初始化就不能再次修改别名程序实例: #include <iostream> using namespace std; int main() { int i; int &j...
2021-04-20 00:33:22
555
原创 C++函数重载
函数参数的类型不同,或这种参数的个数不同,或者二者都有,两个或者两个函数可以使用相同的函数名,当两个或者两个以上的函数共用一个函数名时,称为函数的重载,被重载的函数称为重载函数。(1)调用重载函数时,两个函数仅返回值类型不同不能作为重载函数,例如int mul(int x,int y);double mul(int x,int y);由于函数参数和个数完全相同,因此编译器无法判断哪个函数进行匹配操作。(2)函数的重载与带默认值的函数一起使用的时候,有可能有二义性,例如void dra
2021-04-20 00:29:29
275
原创 C语言进阶[2]:字符串常量
C语言中的字符串是一串以NUL字符结尾的零个或多个字符,字符串通常存储在字符数组中。 由于NUL字节是用于终结字符串的,因此,在字符串内部不能有NUL字节,之所以选择用NUL作为字符串的终止符是因为它是一个不可打印的字符。 字符串的NUL结束符并不是显示的出现在字符串中,而是每个字符串的最后都有一个隐式的NUL结束符。 字符串是一个常量,无法对其进行修改。在程序中使用字符串常量会生成一个“指向字符的常量指针”,当一个字符串常量出现在一个表达式中,表达式所使用的值就是这些字符串所存储...
2020-11-18 23:27:40
279
原创 C语言整型数据类型
1.1数据类型的本质数据类型的本质就是固定内存大小的别名,因为每个数据类型编译器都规定了其占用内存空间的大小,在此基础上才衍生除了变量的大小,因此,变量的本质就是一段连续内存空间的别名。对变量的操作最终都是转换位对内存的操作。1.2整型的分类? 整型分为字符,短整型,整型,长整型。同时有无符号和有符号之分。 数据类型划分以及其表示数据范围如下长整型至少要和整型一样长,而整型至少应该和短整型一样长。 在实际开发过程中,short int 至少是16bit的,而l...
2020-11-16 23:14:42
779
原创 如何在Keil中获取当前时间
在Keil中如何调用系统的时间。(1) 使用下面两个宏,一个是日期,一个是时间const u8 gSystemDate[12] = __DATE__;//注意,是两个下划线__const u8 gSystemTime[16] = __TIME__;(2)使用打印函数打印出当前的时间printf("date:%s \r\n",gSystemDate);printf("time:%s \r\n",gSystemTime);(3) 结果显示date:Jul 11 2020 ..
2020-07-11 11:42:39
9996
2
原创 ADC参数详解
ADC 的主要参数(1) ADC 的时钟。时钟是ADC能正常工作的基础,一般情况下,ADC的时钟频率越高,ADC采样的速度越快。但是,这个时钟并不是越高越好,一般的MCU都会设定一个建议的最高ADC工作频率,在合理的工作频率范围内有助于提高ADC的采样精确度。(2)ADC的采样率。采样率就是ADC 采样的速率。它是指在规定的时间内可以采集的次数,采样率越高,采集到的点数就越多,那么对原始信号的还原率就越高。采样率的单位是SPS(sample per sencond),每秒采样次数。这个值越大,采样速
2020-07-10 22:19:04
14344
原创 STM32F407使用FSMC驱动ILI9486显示
昨天使用探索者STM32F407将ILI9486 TFTLCD显示屏驱动已经正常调通,下面将附上所有的程序代码//tftlcd.c 文件程序如下所示/***************************************************************************************** 函 数 名: TFTLCD_GPIO_Init* 函数功能: tft lcd 显示屏初始化函数* 输 入: 无* 输 出: 无* ...
2020-06-23 19:15:35
3463
3
原创 STM32 静态全局变量值不正常问题
今天在调试按键驱动的过程中,使用Systick 定时器中断中每10ms 调用一次按键检测程序,在按键检测程序中按下时有一个定时器计时,具体程序如下所示。 void buttonScan(void){static u8 sLastButtonState = BUTTON_RELEASE;//初始状态为松开static u8 sButtonState;static u8 sButtonPreCnt; if(isButtonPressed()) { sButtonTick++...
2020-06-17 00:39:37
3513
1
原创 最好的芳华遇到你,余生都是你
2020年1月3日,我们终于办完了婚礼,虽然领证在2018年的9月30号都已经领了。但是,由于各种原因导致婚礼时间一直被滞后,很感谢能遇到你,你出现在我的生命中,第一次看到你就想能和你有未来。8年多的时间,从高中时期的青春年少再到出入社会之后的成熟稳重,时间在变,人在变,而你依据是我内心深处的那个人,从在一起开始我就幻想能和你白头偕老。我也在慢慢的去实现自己的理想,我深知自己没有什么优势...
2020-01-07 08:56:30
328
原创 单片机的内部结构
51单片机的内部结构包含了作为微型计算机的所具备的基本功能部件,如CPU,RAM,ROM,I/O等。CPU的主要功能是产生各种控制信号,控制存储器,I/O口的数据传送、数据运算,逻辑运算等。CPU由控制器和运算器组成。(1)控制器 作用:对指令进行译码,从而让CPU能识别 实现控制信号的操作 组成: ①程序计数器(PC) PC指针,存放下...
2019-07-16 00:04:38
3958
原创 将字符串IP地址解析成数组IP
uint8_t StrToIP(const int8_t* str, void *ip){ /* The count of the number of bytes processed. */ int i; /* A pointer to the next digit to process. */ const char * start; s...
2019-05-27 22:17:01
1210
原创 eclipse启动出现“An Error has Occurred. See the log file...”解决方法
当eclipse出现上面这种问题的时候一般是上次强制退出了eclipse时,比如软件没有关闭就直接电脑关机了。解决办法:(1) 删除你之前工程目录下的:“..\configuration\.settings\org.eclipse.ui.ide.prefs”文件,在你的eclpse的安装路径中找该路径(2) 重启软件;(3) 在软件打开不之后换一个workspace...
2019-05-19 21:10:30
8785
原创 STM32:Error:L6218E错误的解决方法
在调试STM32程序的过程中出现下面的这些错误提示..\OBJ\LED.axf: Error: L6218E: Undefined symbol PWR_ClearFlag (referred from main.o)...\OBJ\LED.axf: Error: L6218E: Undefined symbol PWR_EnterSTANDBYMode (referred from mai...
2019-03-30 21:42:25
21254
原创 给自己的七个切勿!!!
切勿眼高手低 不知从什么时候开始,觉得自己好像什么都会,看懂原理就觉得一切都OK,但是实际做开发的时候却发现莫名的出现了很多问题,其实自己并没有搞懂,只是觉得简单就不愿意去动手。 切勿三天打鱼两天晒网认准了的东西就一定要去不断的探索,学一会又不学,最终的结果就是什么都没有学到,还浪费时间与精力。 切勿沉迷游戏;游戏里面什么都没有,适度才能发挥其...
2019-03-11 19:53:58
207
原创 N76E003的输入捕获处理
N76E003的输入捕获功能还是挺强大的,具体的说明在这里就不多讲,配置的步骤如下: (1) 将要检测输入捕获的IO口配置成输入模式; (2) 选择信道输入CAP0/1/2,在官方的例程中使用TIMER2_CAP1_Capture_Mode等该宏定义进行进行配置,但是在这里一定要注意,进入这个宏定义,是对T2CON和T2MOD的配置,而T2MOD是对定时器...
2019-01-04 18:46:53
3332
1
原创 新唐N76E003 ADC多通道采集处理(2)
之前的一篇博文也是关于N76E003的ADC的多通道采集,但是该版本还是存在一些问题,后面也没有想起来去改它,所以,这里重新对这些处理的方法做一些完善。 首先是配置方面,配置是非常简单的,在初始化的时候先将一个通道初始化好,然后定义使用一个全局变量gAdcChannel用来作为轮流的标志位,该MCU的ADC的速度还是比较不错的,大概3-4us就能完成一次ADC的采样,但是建议不...
2019-01-04 15:18:26
4984
1
原创 2018年终总结
时光不易,一年转逝。回首这一年,还是有许多需要记忆的。 这一年,定了自己的终身大事,将长跑了7年的爱情画上了圆满的句号,正月初二订婚,9月30日领取结婚证。感谢我的妻子和岳父岳母能看重我,同时也要感谢父母的艰辛付出,才使一切都变得水到渠成。 这一年,岳父岳母买了房子,想减轻一点我们两个人的负担,后面开始装修,置办家具,尽自己最大的努力减轻他们的一些负担,同时妻子...
2019-01-02 19:14:13
535
1
原创 从软件开发角度去看当前的市面上的电子烟
从事电子烟的软件开发已有一年,对电子烟也算有了一定的了解,下面从开发者的角度去介绍一下电子烟。 1.原理 传统意义上的电子烟都是通过电池供电,现在市面上的大部分使用的是18650系列的一节或者两节电池,一节电池满电状态在4.20V左右,两节则在8.40V左右,通过驱动负载(也就是雾化芯)输出而将烟油雾化最终出烟。这是一个很广范围的概述,里面的技术则是设计到对PCBAB...
2018-10-19 09:42:25
3843
5
原创 C语言开发中对有关联宏定义的使用注意事项
宏定义是我们在项目开发中经常会使用到的,尤其是在嵌入式开发中,比如针对IO口的宏定义。宏定义不会占据内存,宏定义只会在程序使用到的时候插入进来。 在开发过程中我们经常会将一些具有关联的数据使用宏定义,比如,在单片机的开发中,定时器是一个非常重要且几乎都要被使用到的外设,在项目中都会设定一个基准的定时时间假设是1ms,在此,我们可以将1ms这个计时基准设置成为一个宏定义,比如#...
2018-10-18 16:58:49
432
原创 位(bit)交换函数
/*bit交换函数,output[7:0] = input[0:7]*/static uint32_t swap_bits(uint32_t inp){ uint32_t i; uint32_t retval = 0; inp = (inp & 0x000000FFUL); for(i = 0; i < 8; i++) { retval |= ((inp >...
2018-10-11 13:55:43
1934
原创 ADC均值滤波的方法
#define ADC_SAMPLE_NUM 10u16 adc_value[5*ADC_SAMPLE_NUM];//ADC采集值存放缓冲区void ADC_Filter(u16* adc_val){ u16 i=0; u32 sum[5]={0,0,0,0}; for(;i<ADC_SAMPLE_NUM;i++) { sum[0]+=adc_value[5*i+...
2018-10-10 10:12:36
4439
原创 STM32DMA ADC配置方法
void Adc_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; ADC_InitTypeDef ADC_InitStructure; DMA_InitTypeDef DMA_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GP...
2018-10-10 10:07:42
3529
原创 C++派生类与构造函数示例代码
#pragma once//基类.hclass TabletennisPlayer{public: TabletennisPlayer(const char * fn = "none", const char *ln = "none", bool ht = false); void Name() const; bool isHasTable()const { retu...
2018-09-11 19:23:59
554
原创 C++ const 成员函数
在C语言中,已经有很多对const的知识介绍,而const在实际开发中用的也是比较多,在本人的开发过程中一般是在函数传值过程中,尤其是传一些字符串类型,可以参考C语言那些字符串的库函数的源码。下面我们说一下在C++中的成员函数。class Stock{ private: public: void show();//成员函数};int...
2018-09-11 09:57:34
316
原创 C++内联函数
内联函数:定义位于类声明中的函数都将自动成为内联函数,类声经常将短小的成员函数作为内联函数。内联函数使用inline关键字进行修饰class Stock{ private: char company[20];//campany name int stockNum; double stockPrice; doubl...
2018-09-10 19:58:40
248
原创 KEIL5与Source Insight同一个工程在Source Insight中乱码的解决方法
来源不仅仅是一个源码查看的好工具,同时也是编程的好工具。 出现注释乱码的解决办法 在SI中“FILE”-->"Reload as Ecording"--->选择与你的KEIL中一样的编码格式,确定。 如此则搞定。...
2018-05-09 23:30:14
2011
原创 浅谈单片机开发中宏定义的使用
(1)IO口管脚使用见名知意的宏定义,比如LED1,LED_ONE_PIN (2)IO口电平高低使用宏定义,例如PIN_ON/PIN_OFF (3)某一个需要与变量进行比较的数值,使用宏定义 ...当然,我说的也只是一些很片面的,但是宏定义对于我们去修改程序就有了很大的便利之处,(1)将软件层与硬件层分割开,比如IO管脚使用宏定义,那么管脚变了,只要修改成另一个管脚,软件...
2018-04-26 17:20:15
3548
原创 N76E003低功耗的处理
低功耗是项目中非常重要的一部分,尤其是对于一些使用电池供电的设备。 N76E003支持两种低功耗模式,一种是空闲模式,一种是掉电模式,从字面意思一看就知道如果要最求最低的功耗,一定是需要使用掉电模式。在掉电模式下,作者对当前的项目应用中测试出来的最低的功耗是5uA,这个值本人认为已经是非常不错的。针对N76E003如何实现低功耗谈谈个人的经验。 首先肯定是配置掉电模式,一条se...
2018-04-26 16:50:00
7790
1
原创 新唐N76E003AT20 多通道ADC采集方法
不得不说N76E003的功能在8051内核单片机中功能已经是非常强大了,并且官方开提供了BSP 开发库,这些都是可以直接在官网中直接找到的。对于N76E003的ADC,因为作者没有用过很早之前的版本,作者使用的时候官方已经提供了VBG反推VDD的例程,但是这种做法还是有一些缺陷,因为内部的乘除法运算对于一个8位的单片机来说还是有一定的困难的。但是在实际项目中应该都是需要使用到多个通道轮流采...
2018-04-13 09:34:31
14260
3
原创 C语言中的声明优先级规则
A 声明从它的名字开始读取,然后按照优先级顺序依次读取B 优先级从高到低依次是:B. 1 声明中被括号括起来的那部分B. 2 后操作符: ()表示这是一个函数 []表示这是一个数组C. 3 前缀操作符:*表示“指向什么的指针”。C 如果const或volatie关键字后面紧跟类型说明符(int 、long等)说明它作用于类型说明符,在其他情况下,const vol
2017-03-17 19:31:06
467
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人