- 博客(26)
- 资源 (5)
- 收藏
- 关注
原创 深入理解派生类
虚函数是在基类中声明的一种特殊函数,它可以被派生类重写。需要注意的是,在派生类的构造函数中,如果没有显式地调用基类的构造函数,则会调用默认的基类构造函数。总的来说,派生类构造顺序是按照基类构造函数、成员对象构造函数、派生类构造函数的顺序依次执行的,需要开发者根据实际情况进行调用和传递参数的处理。在调用派生类的构造函数前,基类的构造函数和成员对象的构造函数都已经完成了。因此,在派生类的构造函数中,可以直接使用基类的成员和成员对象。同时,在派生类的构造函数中,也可以显式地调用基类的构造函数,并传递相应的参数。
2023-08-06 11:29:41
186
原创 2021-02-14
一行脚本统计出开源项目中的所有头文件grep -irn "#include*" ./|awk '{print $2}'|sort -u
2021-02-14 20:09:28
158
原创 搭建vim开发环境
搭建vim开发环境一、安装llvm+clang工具这里通过apt进行自动化安装时,llvm和clang工具不会被全部安装,存在很多问题。所以一定要手动编译源码安装。安装过程分成三步:拉取llvm及clang源码、配置及编译、安装拉取llvm及clang源码llvm是开源编译框架,clang是llvm的子项目。在github上有llvm工程可以拉取,同时拉取子模块,就一步到位了,省去指定各个部分的目录。cd ~/Downloadgit clone --recursive https://gith
2020-08-23 21:15:57
610
原创 C语言实现快速排序算法
快速排序C语言实现与分析快速排序是C.A.R.Hoare于1962年发明的。算法的基本思想是:递归。对于一个给定的数组,从中任意选取一个元素,以这个元素为界,将其余元素划分为两个子集,一个子集要求全部小于这个元素,另一个子集要求全部大于或等于这个元素。对这两个子集递归执行这个过程,当某个子集中的元素个数小于2时,终止递归。1.算法分析递归思想在C语言程序设计中,比较独特,并不推荐...
2019-12-01 19:59:14
663
原创 C语言常用类型转换函数实现
常用c语言类型转换1 字符串转换为整型数1.1 分析说明一串数字以字符串的形式表示,并在不同接口间传递,是编程中很常见的。通常情况下,字符串表示的数字,可以直观的看到,但计算机并不这么理解,这只是方便人们直观的看。所以可以使用字符串表示的数字作为输入,当计算机使用它进行运算时,需要转化为实际的数字。1.2 函数实现int atoi(char *s){ int i, n;...
2019-11-24 21:00:17
814
原创 vim 支持markdown 浏览器实时预览功能ubuntu
1.vim-instant-markdown插件该插件支持vim编辑markdown文件时实时预览,不需要手动做任何事情!使用vim打开一个xxx.md文件,浏览器会自动打开一个预览网页,在编辑这个文件的过程中,浏览器会自动更新,并不用保存该文档。2 安装vim-instant-markdown2.1 安装node.jscurl -sL https://deb.nodesource.co...
2019-11-24 13:38:30
1834
转载 浅谈可重入函数与不可重入函数【转】
来自:https://blog.youkuaiyun.com/lianghe_work/article/details/476119...
2019-07-12 14:51:56
263
原创 stm32 史上最简单得GPIO设置
stm32f4 GPIO寄存器设置 说起GPIO设置,是大部分人学单片机得第一步,常常也是最后一步,哈哈。stm32 库函数的GPIO采用结构体实现,洋洋洒洒,让人看不到底。针对库函数和寄存器编程方法的选择,我是这么理解的,如果你想系统学习嵌入式,我劝你放下库函数,拿起寄存器。如果你在快速开发,只是做个应用,那么我劝你用库函数就足够了,本文旨在从零开始,打地基,所以用一用寄存器一砖一瓦吧。本文...
2019-03-12 20:18:07
2444
原创 stm32时钟选择与配置HSL HSE PLL
1. stm32时钟源分析stm32f4有四个时钟源可供选择,分别是:HSE(外部高速),HSI(内部高速), LSE(外部低速), LSL(内部低速)。1.1 外部时钟源一般由外挂晶振产生LSE为32.767KHz晶振输入。HSE为8MHz或16MHz,实验用的是16MHz1.2 内部时钟源一般为内部RC震荡电路LSI 为内部32.767KHz的RC电路HSI 为内部1...
2019-03-07 21:29:37
8339
1
原创 从零单排嵌入式__stm32硬件基础
从零单排嵌入式----stm32硬件基础0.引言 stm32是一款主流的单片机,采用ARM内核设计,由ST公司集成外围器件,设计而成CPU,目前手头有一款stm32f401ret6单片机,后面就使用它来做实验。学习过程主要参考以下三个文档进行: 文档1:Cotex-M4内核原理文档2:stm32f401系列datasheet文档3:stm32f401系列产品...
2019-03-03 17:16:07
602
1
原创 从零单排嵌入式
从零单排嵌入式嵌入式系统是一个广泛而复杂的概念,是一个硬件与软件的综合体。其领域内知识量之丰富,信息量之大可谓林林总总,洋洋洒洒,任何一块内容都能作为一个专题,甚至一个领域来钻研。入门就很难,学精通了就更不容易了。 搞了很久的嵌入式,从单片机裸机,实时操作系统移植应用到linux系统移植应用,犹如爬山,彼山真比此山高,尘埃落定后,蓦然回首还真想把这一路的风景美好记录下来,与后面人共勉。 ...
2019-03-03 11:15:13
207
转载 keil中串口重定向问题
重定向是指用户可以自己重写C语言的库函数,当连接器检查到用户编写了与C语言库函数相同名字的函数时,优先采用用户编写的函数,这样就可以对库函数进行修改了。若要printf( )函数工作,需要把printf( )函数重新定向到串口函数。为了实现重定向 printf( ) 函数,需要重写fputc( )这个C标准库函数,因为printf()在C标准库函数中实质是一个宏,最终是调用了fputc( ...
2018-08-17 09:45:01
1682
转载 docx转doc时,防止公式被转成图片的解决办法
【转载】docx转doc时,防止公式被转成图片的解决办法 编辑社回复需要doc(Word 97-2003)格式的文档,可是将docx(Word 2007+)另存为doc格式时,发现公式被转成了图片。其实,最简单的办法就是,打个电话过去给编辑社:“大爷,拜托您用高版本的Word行吗?” 但是,我是不会这么干的。多番查阅资料,找到原因,并亲身实验找到一个可行的解决办法,也许还有更容易的办法。...
2018-05-04 11:54:14
30176
1
原创 浅析memmove函数之内存重叠
话说上一节说到memcpy函数实现没有考虑内存重叠问题,难道C库函数故意留一个bug吗?当然不是了,memmove函数就弥补了这个不足哦,是不是以前一直觉得这两个函数没啥区别呢,实际上区别大了去了,下面详细道来。 老话常谈,C语言中操作内存的最小单元当属字节,假如100个字节的内存需要搬运,恰巧的是目的内存的100字节中,包含了源地址中的50个,假如依旧按照memcpy方式来的话,保证那
2018-02-07 11:07:44
950
原创 浅析memcpy内存拷贝函数
浅析memcpy函数原型 C语言程序员钟爱memcpy函数,面试时考官总会让你写一个memcpy函数,笔试时候也总有这个题目,那这究竟是为什么呢?要想知道这个答案,还得从头说起。 话说C语言诞生之初,便与硬件有着天然的联系,使我们不得不深入基层,了解内存,操作内存。就如为将者需熟读兵书、通晓天文、地理一样,我们要搞清各种元素的内存形态、位置及相应的操作方法,熟悉内存操
2018-02-06 17:09:28
2711
转载 GCC编译选型,可随时查询
gcc 提供了大量的警告选项,对代码中可能存在的问题提出警 告,通常可以使用-Wall来开启以下警告: -Waddress -Warray-bounds (only with -O2) -Wc++0x-compat -Wchar-subscripts -Wimplicit-int -Wimplicit-function-declarat
2017-02-20 19:54:27
631
转载 Makefile中$$的使用
Makefile中使用$$的使用 2008-07-16 11:24:01分类: Makefile中使用$$的使用 在makefile中,会经常使用shell命令,也经常见到$var 和 $$var的情况,有什么区别呢,区别大了。不要认为在makefile的规则的命令行中使用$var就是将makefile的变量和shel
2017-02-20 19:43:24
363
转载 Makefile中= := += ?=的区别
Makefile 中:= ?= += =的区别在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验新建一个Makefile,内容为:ifdef DEFINE_VRE VRE = “Hello World!”elseendififeq ($(OPT),define) VRE
2017-02-20 19:39:42
230
转载 linux下libusb的安装与测试
linux下libusb的安装与测试2013-05-14 15:06 10016人阅读 评论(1)收藏举报本文章已收录于:分类: Libusb 版权声明:本文为博主原创文章,未经博主允许不得转载。@2013/5/140.libusb的介绍:参考[1]1.环境:vmware_fedora_
2017-02-20 15:14:23
8071
原创 stm32 中断嵌套NVIC的理解
Stm32中断NVIC管理理解 1、中断服务函数入口名称在startup_stm32f10x_hd.s文件中。2、 中断结构参数NVIC_InitStructure.NVIC_IRQChannel的值在stm32f10x.h文件中查找。3、中断服务函数名称必须按照startup_stm32f10x_hd.s文件中中断向量表的名称进行编写,中断服务函数可以放在任意一个文件夹中,与存
2015-03-12 16:45:40
5275
转载 Stm32RS232串口通信——中断接收发送数据
main.c配置:[cpp] view plaincopyprint?/* *说明: *PA0:KEY1;PA1:KEY2; *PA2:LED1;PA3:LED2; *PA9:USART1_TX;PA10:USART1_RX */ #include "stm32f10x.h" #include "stm32
2015-03-12 10:07:43
3695
原创 stm32 GPIO口配置操作
stm32里面最基本的思路就是使用外设相应寄存器之前,必须开启控制对应寄存器的时钟,读者可到技术手册中查询相应的时钟控制的相应的寄存器。 这里首先开启stm32普通io口的时钟。 GPIO 作为通用输入输出口使用时,当有外部中断设置时才需要开启AFIO时钟,否则不需要开启AFIO 时钟。 然后就是进行gpio结构体的初始化设
2015-03-12 09:36:05
1646
转载 stm32 复用时钟开启情况
首先为什么要开启时钟?答:因为要对寄存器进行读写!而在STM32中对寄存器的读写都是要打开寄存器对应的时钟才可以的【就像人一样,有了跳动的脉搏手臂才能有能量才能进行各种动作】。然后就什么时候AFIO时钟开启(所有时钟都是这样)就清楚了:当需要对“AFIO时钟管理的寄存器”进行读写时AFIO时钟打开!当然不对“AFIO时钟管理的寄存器”读写时也可以打开AFIO时钟,此时只是白白增加能耗、写无
2015-03-12 09:23:52
5086
4
转载 STM32时钟系统
STM32时钟系统2014-01-1614:31:02分类:嵌入式众所周知,时钟系统是CPU的脉搏,就像人的心跳一样。所以时钟系统的重要性就不言而喻了。STM32的时钟系统比较复杂,不像简单的51单片机一个系统时钟就可以解决一切。于是有人要问,采用一个系统时钟不是很简单吗?为什么STM32要有多个时钟源呢?因为首先STM32本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高
2015-03-12 09:10:33
840
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人