- 博客(161)
- 资源 (7)
- 收藏
- 关注
原创 关于海明码,我悟了
常说的海明码指的是(n,k)=(7,4)海明码,信息为为4,监督位为3,总长7位。海明码的最小码距为3,海明码能够检两位错或者纠正一位错误。海明码默认采用偶校验
2023-03-23 21:55:59 5823 6
原创 SOLID五大原则【图解】
做C语言开发的应该都知道,C是面向过程开发的,而c++是面向对象开发的。而封装、继承与多态是面向对象开发的三大特征。但你可能不知道OOD(Object-Oriented Design)还有五大基本原则,被Bob大叔称为SOLID原则,字母为每个原则的首字母,遵循这些原则能够让你的代码在扩展性、维护性以及重用性提高。而这些不正是我们所追求的吗?......
2022-07-28 22:28:52 5137
原创 C语言结构体struct详解
在实际的开发过程中,一组数据往往具有不同的数据类型,此时数组是不能够满足需求了。因为数组中各元素的类型必须是一致的。为了解决这个需求,C中给出了另一种数据类型-结构体,每一个成员可以是任意一种数据类型...
2022-07-25 22:12:40 3515
原创 两种存储器,三种内存大小,六段段
Flash Memory(闪速存储器)是一种安全、快速的存储体,具有体积小、容量大、成本低、掉电不丢失等一系列优点,已成为嵌入式系统中数据和程序最主要的载体。Flash是,即在物理结构上分成若干个物理块,区块之间相互独立。Flash写操作必须,Flash只能将数据位由1写成0,不能从0写成1,所以在对存储器写之前必须先执行擦除操作,擦操作的最小单位是一个区块,而不是一个字节。RAM(Random Access Memory)又称随机存取存储器,也叫内存,是与CPU直接交换数据的内部存储器。速度很快,断电RA
2022-07-10 10:36:22 213
原创 如何有效取余,非%不可吗?
在编写程序过程中,通常会对对某些数据进行取余操作,这个时候我们通常都会用到%运算符,但是除了%就不能用其它方法吗?答案是有的,而且执行效率也比使用%高,但是使用起来会有一些条件限制。接下来我们就以6对4取余来分析,测试环境为Keil和STM32。下图为使用%求余过程由此可见,除了第一次将初值6赋值为r1寄存器,在对4求余的过程中,使用了MOV、ADD、SUB以及ASR共5次汇编指令。下面也给出了每个汇编指令的表达式,最右侧有注释,有兴趣的可以看下 4: int
2022-04-10 11:27:26 2204
原创 ARM汇编STM&LDM知多少?
前述在日常编写Bug的时候,不知是否经过这样一种情况,我明明只是在函数中多加了一个临时变量,结果程序执行就异常了。我屮艸芔茻...我碰到的一次情况是该函数程序访问数组本来就越界了,但是还能正常工作,就因为加了一个临时变量,栈内容发生了变化,就因为一个变量的偏移,在对数组操作时刚好设置给了LR寄存器,导致子程序返回有误,程序执行逻辑异常。上述的这种问题,常规调试是无法发现的,甚至问题出现在那个地方都定位不到。都说汇编代码时程序员的最后一根救命稻草。接下来就来介绍一下汇编中最常用的STM/LD.
2022-04-07 21:14:41 2417
原创 Keil断点进阶用法,不看后悔
目录1、前序2、断点简介2.1、exp2.2、cnt2.3、cmd3、表达式(exp)3.1、ExecName3.2、Path3.3、Module3.4、Identifier4、命令(cmd)5、 设置断点方式5.1、手动设置断点5.2、观察窗中设置断点5.3、命令窗中设置断点6、文中问题6.1、变量何时改变的?6.2、变量被改变了多少次才出现的问题?6.3、当这个变量被设置成某个数据后,我想让程序暂停下来继续分析...
2022-03-23 19:57:07 5981
原创 vs code安装离线扩展包
在内网中使用vs code,由于内置的应用商店无法连接网络,所以一些扩展包便无法使用,这个时候因该如何解决呢?解决这个问题只需要两个步骤:1、下载离线扩展包首先需要一个联网的电脑到“https://marketplace.visualstudio.com/”网站下载自己所需要的包,再此以Python为例,如下图:点击进入扩展包详细界面,在右下角可以找到Download按钮,文件后缀名为VSIX(Visual Studio Extension Package),如下图:2、安装扩展包在vs c
2021-11-05 21:34:05 2397
原创 git如何使用notapad++作为默认编辑器
git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
2021-06-26 11:28:45 334
原创 SQLite接口与回调
目录1、SQLite接口1.1 open1.2 exec1.3 close2、exec中的回调函数3、例程代码1、SQLite接口1.1 openSQLITE_API int sqlite3_open( const char *filename, /* Database filename (UTF-8) */ sqlite3 **ppDb /* OUT: SQLite db handle */);1.2 execS...
2021-06-26 11:27:28 260
原创 不识烫烫烫屯屯屯,还说是攻城狮?
作为一名码农,想必都知道Hello World,什么,你竟然不知道?哦,那你可能不是码农,抬走,下一个。言归正传,在码农界,存在一首打油诗,我带大家一道欣赏。手持两把锟斤拷,口中疾呼烫烫烫。脚踏千朵屯屯屯,笑看万物锘锘锘。如果非要给一个诗名,我希望是“码到成功”。在此说一下“烫烫烫”以及“屯屯屯”的梗以及原理。在Visual Studio中,未初始化的栈空间默认值是0xcc,未初始化的堆空间默认值是0xcd。而在GB2312编码中,0xCCCC对应的中文是“烫”。0xCD
2021-06-26 11:20:54 683
原创 PSW
PSW即程序状态字(Program Status Word),有些教材也叫当前程序状态寄存器(current program status register),定义如下:注意在开关中断这里,1代表是禁止中断。
2021-05-09 13:41:56 2244
原创 C库函数-printf()
printf为C语言中的库函数,需要包含头文件stdio.h,能够发送格式化输出到标准输出stdout,printf函数的声明如下。int printf(const char *format, ...)printf() 的格式控制字符串组成如下:%[flags][width][.precision][length]specifier%[标志][最小宽度][.精度][长度]说明符,其中[]代表可选的。1、flags(标志)1.1、-在给定的字段宽度内左对齐,默认是右对.
2021-03-27 10:39:15 1542
原创 socket中的connect提示报错:errno = “EINPROGRESS“
socketconnectioctlsocketerror.h#define EINPROGRESS115 /* Operation now in progress */
2021-01-06 21:32:34 4150
原创 WIN10没有照片查看器【已解决】
按快捷键WIN+R调出命令窗口,输入regedit打开注册表 定位到“计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Photo Viewer\Capabilities\FileAssociations”目录 建立和下表相同的配置,就可以在打开方式使用照片查看器打开png、bmp等图片了...
2021-01-05 22:15:15 1109
原创 无法访问 文件目录损坏且无法读取
WIN+R,调出命令行,输入cmd,输入如下命令,自行检查好了盘就能正常用了。最好是使用管理员的身份打开,直接去电脑端cmd目录中找。chkdsk h: /f
2020-09-26 14:37:37 3169 4
原创 remote: HTTP Basic: Access denied
git命令操作时,报错remote: HTTP Basic: Access deniedfatal: Authentication failed for 'http://gitxxxxxxxxxxxxxxxxxxx去控制面板中的Windows管理凭证删除,在重新使用Git命令,根据提示输入账号密码即可。
2020-09-18 09:10:27 216
原创 3.1 嵌入式软件基础
1、嵌入式系统的体系结构1.1、无操作系统的情形循环轮转方式for() {//do something}前后台系统前后台系统是在循环轮转的基础上增加了中断处理功能。中断服务程序(Interrupt Service Routine,ISR)负责处理异步事件,这部分看做前台系统。而后台系统一般是一个无限的循环。2、设备驱动程2.1、版本支持包设备驱动层也叫版本支持包(Board Support Package,BSP),BSP的思想是把所有与硬件相关的代码都封装起来,并向上
2020-09-16 22:12:15 1357 4
原创 2.1 嵌入式微处理器的分类
1、嵌入式硬件系统嵌入式硬件系统一般由嵌入式微处理器、存储器、输入/输出部分组成。嵌入式微处理器是嵌入式硬件的基础,通常由控制单元、算术逻辑单元和寄存器促成。嵌入式系统银监结构 控制单元: 主要负责取址、译码、去操作数等基本动作。包含两个重要的寄存器,程序 计数器(PC)和指令寄存器(IR)。程序计数器用于记录下一条程序指令在内存的位置,以便控制单元能到正确的内存单元取址。指令寄存器负责存放被控制单元所取的指令,通过译码,产生必要的控制信号送到算术逻辑单元进行相关的数据处理。
2020-09-13 13:08:11 1222
原创 1.3 嵌入式系统的硬件基础
1、逻辑电路 1.1、组合逻辑电路 组合逻辑电路不含存储功能,它的输出值仅取决于当前的输入值,组合逻辑电路一般由门电路组成。 1.2、时序逻辑电路 时序逻辑电路含存储功能,它的输出值不仅取决于当前状态的输入值,还取决于存储单元中的值。触发器是构成时序逻辑电路的基础。触发器按时钟控制分类电位触发 边沿触发 主-从触发触发器按功能分类R-S型触发器 J-K型触发器 D型触发器...
2020-09-12 00:00:51 412
原创 1.2 嵌入式微处理器体系结构
目录1、冯*诺依曼与哈佛结构2、CISC与RISC3、流水线技术4、信息存储的字节顺序4.1、小端格式4.2、大端格式4.3、示例1、冯*诺依曼与哈佛结构冯*诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构哈佛结构是一种将程序指令存储和数据存储分开的存储结构2、CISC与RISC微程序控制的CISC计算机、硬件控制的RISC计算机类别 CISC RISC 指令系统 指令数量很多 较少,通常
2020-09-10 22:56:07 1069
原创 第一章 嵌入式系统基础知识
目录1嵌入式系统的定义和组成1.1嵌入式系统的定义:1.2 嵌入式系统的组成1.2.1 硬件层1.2.2 中间层1.2.3 系统软件层1.2.4 应用软件层1嵌入式系统的定义和组成1.1嵌入式系统的定义:以计算机技术为基础,软件硬件可剪裁,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的计算机系统1.2 嵌入式系统的组成嵌入式系统是由应硬件层、中间层、系统软件层以及应用软件层组成。如下图1.2.1 硬件层硬件层中包括嵌入式微处理...
2020-09-10 21:50:55 478
原创 gitee: Incorrect username or password ( access token )
将本地内容推送到远程会报如下错误,是指用户名密码配置不对,在控制面板中“控制面板\用户帐户\凭据管理器”找到gitee的凭证,重新编辑设置好用户名以及密码即可解决。
2020-08-29 17:26:37 512
原创 atof()
https://en.cppreference.com/w/c/string/byte/atof#include <stdlib.h>#include <stdio.h> int main(void){ printf("%g\n", atof(" -0.0000000123junk")); printf("%g\n", atof("0.012")); printf("%g\n", atof("15e16")); printf("%g\.
2020-08-23 22:45:41 216
原创 .\a.exe: file not recognized: File truncated collect2.exe: error: ld returned 1 exit status
在使用vs code编译程序的过程中,就会报如下错误.\a.exe: file not recognized: File truncatedcollect2.exe: error: ld returned 1 exit status这个是因为使用gcc命令导致的,在执行的时候用了gcc .\a.exe就会导致报错,如果直接使用.\a.exe就能正常执行,哈哈...
2020-08-22 17:11:22 1875
原创 SQL如何查询某字段的值为空的记录
sql中字段的默认有NULL和另一种空白的形式如何取查询这两种存在的记录呢?空白值查询:SELECT * FROM Test WHERE Name = ''NULL值查询:SELECT * FROM Test WHERE Name IS NULL这两个语句查询出的结果是不一样的。...
2020-08-18 09:39:09 22769 3
原创 SQL空字段查询
SELECT * FROM Test WHERE Name IS NULLSELECT * FROM Test WHERE Name IS NOT NULL
2020-08-18 08:58:13 302
原创 如何将MySQL卸载干净(卸载重装出错问题)
由于某种原因我要将MySQL卸载重新装,但是装了之后频频报错,到最后一步的时候总是卡死,在start server这一步。其实网上已经有很多教程了,但是哪一个才适合自己,能解决自己的问题才是最重要的,以下记录我的解决步骤1.卸载MySQL,可以到控制面板中卸载MySQL,也可以在找到MySQL的安装包,重新运行,程序会检测是否安装了Mysql,如果安装了。则会出现Remove选项,也可以卸载。2.将MySQL的安装目录删除,我的目录是C:\Program Files\MySQL3.删
2020-08-12 22:13:27 1658
原创 安装了MySQL,如何使用命令窗口
如果安装了MySQL,不再想使用可视化界面,想使用命令行,应该如何操作呢?例如,我安装了MySQL Server 5.5,我要使用黑窗口,在没有配置环境变量的情况下,先复制安装目录下的bin目录WIN+R,输入cmd cdC:\Program Files\MySQL\MySQL Server 5.5\bin mysql -u root -p 输入密码 出现 mysql> 即为进入命令行如何配置环境变量呢,这样就不用每次都要进sql的安装目录了我的电脑->属性->.
2020-08-12 21:57:29 625
ScrToPic,屏幕截图软件
2018-11-17
Bin2C+程序运行效果.exe+Pic.gif+Pic.c+一个源代码
2018-02-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人