自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

码农练功房的博客

编程好文推荐,最佳实践分享,开源代码走读

  • 博客(13)
  • 资源 (7)
  • 问答 (1)
  • 收藏
  • 关注

原创 一个死锁问题分析

为什么会死锁呢?一起来看看!!!

2022-12-05 17:57:45 548

转载 第一颗子弹

软件不软的一个主要原因,是其经常处于变化之中。所以,当策略分离不同的变化方向被提出后,一个随之而来的问题也就产生了:何时分离? 尽管一个软件已经满足了当前所有需求,作为富有经验,伤痕累累的程序员,我们却毫无喜悦,因为我们很清楚,事情还远未结束:用不了多久,新需求就会再次排山倒海般涌来。而当前设计能否顶得住下一波的冲击,没有人心里有底。 怀着不安的心情,我们打开IDE,调出代码,翻页跳转,试图从字里行间揣测未来变化的可能性。可深究起来,几乎每一行代码,每一项知识都似乎存在变化的可能性。但如果把每一种可能的变化

2022-03-04 15:08:28 198

原创 ch2 gpio应用:Buzzer封装

Buzzer封装: 蜂鸣器是GPIO的一个典型应用,下面我们利用C++语言的继承机制完成对Buzzer类的封装,Buzzer类继承自CGpio类,CGpio类的具体实现参考:ch1 gpio封装 亮一张蜂鸣器的电路吧O(∩_∩)O! [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mmeQExFJ-1645750489034)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRA

2022-02-25 08:55:21 1345

原创 ch1 gpio封装

一起封装gpio吧! ​ 学会使用gpio是学习单片机的第一步,网上的大多数单片机学习教程都是从gpio开始的,对于gpio的典型应用非常的多,有流水灯、蜂鸣器等等。 今天我们就来对gpio进行封装。先来看看封装的效果吧! CGpio调用效果: int main(){ CBsp bsp; bsp.Init(); CGpio output(PORT_A,PIN_0);//构造一个io对象,给定PORT和PIN,默认配置为输出口; ou

2022-02-25 08:50:24 402

原创 ch0 CBsp类的实现

为什么用C++开发单片机程序 ​ 在以微处理器为核心的嵌入式系统中,大部分采用C语言来进行程序设计,但是随着系统规模的增大,程序越来越复杂,维护也越发困难。而使用C++进行开发有以下好处(前提是编译器必须支持C++,否则都是空谈): 减少了参数传递。在C++中可以将用到的数据作为数据成员,这样可以避免函数的参数传递过程,能够提高执行速度和效率。 更加安全。C++对数据和方法进行了封装,这样可以隐藏类实现的细节,避免内部数据结构暴露。 可以减少命名的冲突。C语言没有命名空间的概念,这样容易导致

2022-02-25 08:40:51 740

原创 单片机延时函数实现

在编写单片机程序时,我们经常要用到延时函数,记得我们在学51单片机时,第一个延时是通过软件延时来实现的,代码如下: void delay(volatile uint32_t cnt) { volatile uint32_t i = 0; volatile uint32_t j = 0; for(i = 0;i<cnt;i++) for(j = 0;j<1000;j++); } 软件延时的优点是方便,然而却不能提供很精确的延时,而且占用CPU资源

2022-02-25 08:23:57 5764

原创 类成员指针

指向类的数据成员的指针: 指向数据成员的指针格式如下: <类型说明符><类名>::*<指针名> 例如,设有如下一个类A: class A { public: int fun (int b) { return a * c + b; } A(int i) { a = i; } int c; private: int a; }; 定义一个指向类A的数据成员c的指针pc,其格式如下: int A:: *pc = &A::c; 再定义一个指

2022-02-24 08:55:15 851 2

原创 时间管理总结

#背景 windows FILETIME时间从1601/01/01 零时零分零秒开始计时,windows每个时钟滴答将计数加一,每个时钟滴答的间隔是100 nanoseconds(纳秒,1秒=10的九次方纳秒),即每个时钟滴答= 10 (-7)秒。 unix、linux时间是从1970/01/01零时零分零秒开始计数,每秒计数加1。 1970/01/01与1601/01/01的时间间隔是11644473600秒。 #结构体 FILETIME 结构体表示自1601年1月1日以100纳秒为基准的时间间隔。FIL

2022-02-24 08:53:05 380

原创 windows动态库和静态库

梳理下项目中常用的动态库、静态库使用方式。 静态库 静态库工程生成一个静态库lib文件。 参考文献6制作lib后,有三种方式去使用: 使用comment 显式调用,这样不用在visual studio 链接器->输入->附件依赖库里面配置依赖库,由于没有指定依赖库路径所有需要显示填写路径。 使用comment 显式调用,同时需要在链接器->常规->附加库目录中配置依赖库路径。由于使用了comment所以不用在visual studio 链接器->输入->附件依赖库里面配

2022-02-24 08:51:27 1965

原创 linux随记

shell: shell第一行为#!/bin/bash或#!/bin/sh 如果想要打印shell脚本中的每条命令的执行情况可以这样写,其中-x是用来调试用的: #!/bin/sh -x \r,\n与\r\n区别: Unix换行:\n (0x0A) MAC回车:\r (0x0D) Win回车换行:\r\n (0x0D,0x0A) 抓包: tcpdump -i any -s 0 host 172.16.119.145 -v -w /tmp/test001.pcap tcpdump dst port

2022-02-24 08:50:53 461

原创 静态变量初始化

静态变量的初始化分为两个过程,一个是静态初始化,一个是动态初始化。 静态初始化在系统加载后执行第一条语句之前就已经完成。所以,可以认为所有的静态初始化过程是同步完成的。 动态初始化,则在main函数之前完成,对于同一个编译单元内的静态变量,动态初始化顺序等同于定义顺序,而对于跨编译单元的静态变量,初始化顺序未定义。 静态数据有两种:已初始化数据和未初始化数据。 在映像文件里,它们分别被放入 data 段和 bss段。只有 data 段的已初始化的数据才会真正被放入映像文件。 int a=5;//data 段

2022-02-24 08:49:27 5073

原创 一次正交设计之旅

文章来自于刘光聪,实践了一把,觉得在代码设计上自己有如下收益: 多级容器封装; 分离变化方向; 依赖于稳定; C++私有继承堪称C++的必杀技之一。 原文章里面代码有编译错误,这里重新整理了一下,方便大家看。重构的思路可以看原文章:一次正交设计之旅 重构前的代码: static vector<vector<int>> getFlaggedCells(vector<vector<int>>& board) { vector<vector&lt

2022-02-24 08:40:41 240

转载 DDD,微服务,容器

微服务大概是这个意思:传统的大块软件要划分成比较小的、可独立运行的模块;每个服务模块可以用不同的语言去实现(polyglot);模块之间仅仅通过服务接口和消息队列互相耦合,其他对接方式基本没有;它们很容易被替代(Design for    replacement),因而有利于整体系统的持续演化;杜绝微服务之间共享数据库,各管各的数据,传统应用中动不动就是几十、上百张的表,是不能接受的;每个微服务模...

2018-08-08 13:40:09 514

内存分区介绍

本文档主要介绍了内存分区模型、大小端和字节对齐的问题

2016-02-25

实现模式,软件设计方法论经典,有追求的人可以看看。

实现模式,软件设计方法论经典,有追求的人可以看看。

2022-03-08

STM32F1系列 C++工程模板

STM32F1系列 C++工程模板;建议用MDK520打开

2016-06-03

STM8L例程之串口

本压缩包提供的是STM8L的IAR工程模板,程序实现的功能是实现MCU与PC的交互。

2016-03-01

STM32L工程模板

本压缩包提供的是STM32L的工程模板;开发工具为MDK

2016-03-01

STM32L1 C++工程模板

STM32L1 C++工程模板;尽量用高版本的keil打开

2016-05-31

单片机面向对象程序设计

单片机面向对象程序设计

2017-06-13

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

TA关注的人

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