自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(120)
  • 收藏
  • 关注

原创 to 后接ing形式的情况

He is accustomed to working long hours. (习惯于长时间工作)She admitted to making a mistake. (承认犯了个错误)look forward to seeing you. (期待着见到你)

2023-11-02 18:06:55 136

原创 常见的可数名词和不可数名词

friendships, relationships,

2023-11-02 11:20:45 72

原创 collocations 积累

go out of one's way 不遗余力地 不厌其烦地。

2023-09-26 08:44:37 70

原创 英语好词。

radio是有放射的含义,所以是ra打头。audio是音频,要张大嘴巴说话,所以是au打头。video比较特殊,最后是deo结尾,这个要记住。radio n. 收音机,广播节目。video n. 视频。audio n. 音频。

2023-06-14 18:09:36 147

原创 英语好句。

there is more to a man than what you see from aross + 地点。好事多磨,不经历风雨哪能见彩虹.

2023-06-14 15:17:24 210

原创 what if

what if 其实就是等于 what would happan if .....?就是 倘若....又如何?what if一般用于疑问句。如果中国龙不是龙,那又如何?

2024-02-08 21:57:59 384 1

原创 用宏来DEBUG的原理

我们可以将这些函数封装成一个宏,同时再定义一个宏作为开启这些宏的开关,比如说DEBUG,只要当我们define了这个DEBUG宏的时候,就可以使用ifdef来条件编译一下之前封装的宏。只要定义了DEBUG这个宏,那么就会进行条件编译之前的函数,如果没有定义的话,那么就不会编译了。现在我们有一个需求,那就是当我们在某一个场景的时候,我们需要执行这个函数,而在另外一个场景的时候,我们则不需要执行这个函数。而宏定义充分的满足了这个条件。首先值得注意的是,我们平时写函数的时候,函数都是直接执行的。

2024-01-31 11:23:26 432

原创 ADC多通道使用DMA传输的理由

ADC的多通道的数据只有一个存储的地方,那就是选择了对应的通道的寄存器,比如我们选择了规则通道,那么之后,我们的数据在抓换之后就会放下规则通道的寄存器中。而规则通道的寄存器的位置是有限的,只有16位数。也就是说,当你只使用一个通道进行数据传输的时候,是不用担心数据别覆盖的问题,因为都是测量的同一个通道的数据,只是你改变了外边模拟信号的状态之后,打印出来数字的响应快慢而已。

2024-01-25 15:13:24 933

原创 程序员裁员潮:技术变革下的职业危机

一对来自中国的工程师夫妻在美身亡,疑因谷歌裁员致悲剧发生。在技术变革下,裁员对于程序员的影响到底有多大?今天我来谈谈自己的看法。

2024-01-24 21:23:10 382

原创 基本定时器一启动就直接进中断的两种解决方式

【代码】基本定时器一启动就直接进中断的两种解决方式。

2024-01-18 16:57:54 918

原创 中断标志位和中断服务函数的关系

你不得不认为:中断服务函数正是因为硬件自动产生的中断标志位才执行的。换句话说,中断标志位并不是执行中断服务函数同时产生的,而是有一个先后的顺序,是先产生中断标志位,然后中断服务函数再根据中断标志位才进入中断服务函数来执行的。

2024-01-17 19:16:58 410

原创 字符串和整型转换的那些事儿

总的来说,有两种思路。

2024-01-16 20:00:22 426

原创 关于markdown文件插入图片变成相对路径

[](绝对路径)变成下面这种相对路径也就是说每次插入的时候,都得修改一下。

2024-01-11 14:59:17 719

原创 怎么使用EIDE进行调试STM32单片机?

在上述这幅图中,可以看到我使用的是STLINK烧录,其中的gdb server使用的是openocd,其中需要关注的事configFiles中的两个cfg文件,在刚刚生成这个文件的识货,第二个会显示target/.cfg,出现这种情况的话,你就需要去类似这样的路径中。(2)下载好了之后,就需要在插件中扩展中,加上上述文件的地址。复制的时候不要复制错了,其后缀是有一个cfg在的,不要复制名字的也将文件的cfg复制下来了,这样的话就多复制了一个cfg,别像我一样踩坑了.....

2024-01-11 14:04:41 581

原创 关于按位与和按位或

还有最后一种情况,如果想让你同时让几个连续的位数,赋值成101101,而其余的位数不变,那么再或上一段数字的话,直接或上去就好了,全零使用或的话,不管或的是谁都是全复制。你可以对相同数据的相邻位数按照我们之前的方式进行|1,其余的|0,和& 其余的&1,同理,想让其中的一位变成0的话,其 `余的不变的话,那就&0 和 &1。而其余的位数不变的话,也是同理,让这几位都|1, 其余的都|0就可以了。谁&0的话,那么都为0,用于复制单个0。其中的一位变成1,其余的不变的话,那么就是一个主导,一个不主导,且。

2024-01-10 19:58:56 338

原创 如何脱离keil在vscode上实现STM32单片机编程

(3)编译的过程中可能会出现找不到头文件,那么就需要在包含目录中,将所有可能有头文件的文件路径都写进去,就不会出现头文件报错了。(2)需要将其中的编译器和烧录的文件下载好,并配置好路径,以及支持的芯片包,选择完芯片包之后记得在后面。(1)首先在EDIE上新建一个新项目,而不是从keil里面建立项目。结合一下这两个大佬的博客就是可以实现STM32的编程了。

2024-01-09 20:02:27 866

原创 调用函数错误

当一个函数返回值的时候,需要调用这个函数的返回值的时候,一定要记得给函数写括号!写上括号才是调用啊!

2024-01-05 14:43:59 312

原创 51小车的电机驱动思路

之后关于速度的任何操作值需要影响这个速度变量就可以影响小车的速度了,这叫做将小车的速度具象化,这是个很重要的思路。就像之前学习的LCD显示一样,其中有显示函数,也有装载了字符串的数组,显示模块永远是不用动的,而影响数据如何,只要对这个字符串数组进行操作就可以了。

2024-01-04 00:43:35 400

原创 按键时钟的原理

之前的独立按键是什么原理呢?之前的独立按键是利用时钟中断,不断地返回按键的状态,当按下去的那一刹那就会返回很多次的状态,返回的形式都是一个一个的Bit,当装载这些比特的,字节都是按下去的状态的时候,这个时候就可以判定是按下去了,但是总的来说,这种方式的反应还是很慢的,于是乎我们可以使用下降沿的方式来进行判定,这样的话,只需要一刹那就可以了,这样的话更加灵敏。

2024-01-02 21:35:20 401

原创 滚动点阵屏

有了这个函数,连一开始的第一个字节都是滚进去的,就是显示不完全的状态。其中的s_led_buff是一个缓存。原理就是加了一个shift函数。

2024-01-02 01:07:18 334

原创 LCD1602

(1)设置光标的时候,非常有讲究,A6是y左边,后面的A3-A0是X的坐标,中间的就默认为0就好了。(2)记得每次写命令和数据的时候,检查一下忙状态,所谓的忙状态就是一种锁。(3)传输数据的时候,直接赋值过去就好了。这个不是串行的,这个是并行的。

2024-01-02 00:24:11 390

原创 18B20

(3)里面的函数也是很常见的,写字节函数,和读字节函数,需要注意里面的时序,非常复杂,对于写字节中,其中的时序需要子啊15us及时释放,不要忘记了。(2)其每次发完寄存器指令的时候,都需要初始化一次,也就是说不能连续发两次的寄存器指令。(4)收集完了两个字节之后,就又要进行一次初始化了。这个也是串口的协议,数据的写入也是从低到高的。(1)18B20也是有读时序和写时序的。

2024-01-02 00:10:08 337

原创 DS1302N的时钟逻辑

基本的逻辑:这里面也有读时序和写时序,时序里面也有写字节和读字节的函数,不过这里面需要注意写字节和读字节之间的衔接转换。(2)写进去的数字是需要转换成特定的格式,才能写进去的,同时读出来的格式也是需要特定的转换才能变成数字的。(1)里面有很多数据,所以需要定义一个结构体变量,将其中的数据写进去。这个是主函数,其中需要强制转换,同时要分两次写。(3)写数据是从低到高,和IIC是相反的。

2024-01-01 23:33:54 359

原创 I2C协议全流程

(2)这个协议中的函数比较少,就是起一个起始信号,终止信号,读时序信号,写时序信号,写字节函数,读字节函数(由于是实时的串口,所以读写都不需要用缓存装着,直接通过信号线就传输过去了)(3)需要注意的是,读时序的话,最后不读了之后发送的是无应答,这个需要记住,这个时候读信号可以将ACK的应答拆分出来就好了。I2C协议其实没有什么,就是一个实时的双线协议,主要是其中的时序比较复杂,但是函数并不复杂,需要记住以下的几个要点。而时钟和18B20都是相反的,都是从低位走高位的。

2024-01-01 22:45:31 402

原创 51单片机的串口驱动的代码逻辑

51单片机中,串口通信指的是单片机和其他的机器传递数据的时候是通过一个bit一个bit的形式传输的,值得一提的话,串口通信是硬件串口。什么意思呢?也就是在传递比特的时候,不用软件来模拟比特传输时的时序,由硬件自动传输。那么需要发送的数据怎么告诉硬件让其传输的呢?没有缓存的数组或者是缓存的寄存器。而,内置的寄存器(其实有两个,一个只读,一个只写),作为需要输出和输入的一个中间人,所以所有通过串口输入输出的字节都是需要通过这个SBUF的,所以就会出现上一篇文章讲的SBUF被覆盖的问题,

2024-01-01 18:27:15 501

原创 51单片机中TCON, IE, PCON等寄存器的剖析

IE和TI和RI一样,是中断的一个标志,不过是外部中断的标志,只需要记住TCON中集成的外部中断的中断标志(部分,只有两个),而其中的IT(interrupt type),也是外部中断的控制位,表示的中断类型,IT = 1的时候是下降沿,IT = 0的时候是低电平。TCON中关于外部中断的中的位数的名字非常奇怪,其中一个为IE,和IE寄存器的名字一样,不知道的还以为是总中断的控制位,也有人认为其的缩写是(interrupt enbale),但是其确实一个关于外部中断的标志位,所以名字很奇怪。

2024-01-01 16:49:15 1475

原创 硬件串口和软件串口

这里再来说说LCD的问题,LCD需要检测忙的状态,这样也相当于一个锁,不过这个是串口没有关系,主要是由于LCD处理命令和数据的时候是处于忙的状态,只有处理完了上一条指令才可以执行下一条指令,在手册中注明了忙的状态,所以需要考虑,如果有其他部件也需要输入指令,但是手册中没有明确的说明忙的状态,那么也可以忽略不计。在51中的串口传输中,正是使用的是硬件串口,所以才会有一个确定的SBUF来存储传输过来的字节存储其中,然后再对SBUF里面的字节进行一个bit一个bit的传输。

2023-12-28 12:58:10 531

原创 一分钟带你了解LCD1602

一般来说,用锁的地方一般就两种,一个是串口发送的数据的时候是用锁的,,否则再次调用发送函数的话会发生错位。另外一个用锁的地方就是LCD1602,这个用锁的理由和上面的类似,,能够完整的执行命令,也就是有一个忙状态,所以每次向LCD写数据还是写命令的时候,都需要检查一下LCD是否是在处理别的事情,即检查一下是否在忙碌。也就是说,用锁的目的总的来说,是让上个流程能够完整地执行下去才行。

2023-12-28 00:22:54 313

原创 编码的发展历程

其中GB开头的汉字都是两个字节,在UTF-8中,汉字的字节是三个字节。

2023-12-20 20:49:13 370

原创 一分钟带你了解电容

因为电容中带电量是越来越大的,根据上述公式可以知道。

2023-12-15 01:29:21 562

原创 关于电气方面的基本常识

频率不能太低的原因:变压器能效率高,电动机可以个头小功率大。频率不能太高的原因:线路和设备可以损耗小,发电机转速不必过高。所以根据经验和习惯,我们的电能就被定在在50或60Hz。(5 封私信 / 1 条消息) 交流电频率为何设定为50HZ?- 知乎 (zhihu.com)在定义上,电流是电荷(通常是电子)单位时间内通过某一横截面的量。这意味着电流与电荷的移动有直接关系。然而,在实际情况下,电流的传播速度并不等于电子的移动速度。电子在导体中的移动速度相对较慢,通常只有每秒几毫米或更少。

2023-12-15 00:25:56 1036

原创 一分钟教你弄懂KMP算法

KMP算法主要应用与字符串的比较,有一个主串,有一个子串,我们要通过一种方式来查看子串是否为主串的一部分。我们通常的想法是:主串和子串左对齐,一个字符一个字符进行比较,如果其中有个字符不匹配的话,那么主串不同,子串向右移动一个范围。这样不断循环,直到找到一个完整的匹配的子串。但如果这样做的话,无疑时间复杂度是最高的,时间复杂度是mn。那有没有更快的方式呢?KMP算法的特点就是一个快速,能够在这种情况下快速地找到一个匹配的子串。

2023-12-07 17:30:54 843

原创 SR锁存器—>带EN的SR锁存器—>D锁存器—>边沿触发式D触发器—>寄存器

是有一个过程的,其中R是通过低电平来重置Q的,让其回到非Q的状态,而由于非Q是和Q是相斥的,所以这个时候就得有一条电路进行正反馈,通知Q,要他变为低电平的(这个时候的S是始终都是亮的,因为这个是正常的状态,还没有轮到S来行使功能),这个时候不管R怎么变化,那么其中非Q的值也不会变化,因为其中Q的反馈是低电平的,无论R怎么变化,也达不到两个都是高电平的状态,这个电路设计的非常巧妙,难以用基本的逻辑来从0-1,所以记住即可,因为这个结构会在后面经常使用。而R是控制与其平行的非Q信号的,使用低电平控制。

2023-12-05 21:34:48 1545

原创 一位半加法器,一位全加器,四位全加器

我们假设有一个十位上的A,B两个数字相加,然后有一个个位上的进位,C_in,那么首先,A,B先进行一个半加器的想加,输出的是一个十位上的数字,同时还有一个向高位的进位,C_旧,那么由于个位上的进位需要到十位上进行一个计算,所以第一次半加器计算的记过S需要和C-in进行第二次计算,计算出十位上的S和百位上的进位C-新,此时第二次算出来的S才是真正要计算出去的S,因为已经经过了所有十位上的计算,而百位上的进位,有两个,一个是C-旧,一个是C-新,这个时候要根据两个的值最后求出一个最后输出的C-out。

2023-12-05 18:39:39 459

原创 NPN三极管和PNP三极管

第一种的NPN型的三极管,其中发射极中有很多电子,而集电极中很少电子。这个时候向集电极中通正电,能跑通吗?答案是不能!因为这个在半导体内没有电子在移动,发射极的电子移动不到基极中,

2023-12-04 19:58:02 1016

原创 Day 1 Two Sum

不管是暴力法还是哈希表,都是有第一轮遍历的,但是在遍历的时候,两者做的事情确实不一样的!暴力法是在遍历第一个元素的时候,继续使用遍历,继续看剩下的元素,而哈希表是直接拉着第一轮遍历的元素来哈希表比较,在这个示例中,我们要求和,那么这个时候就要拿着第一轮遍历元素和target的差值来到哈希表中寻找,而哈希表寻找的时间复杂度是O(1),所以这个时候时间复杂度就比第二次遍历的时间复杂度要低很多了,,这样话,到最后,比较的次数是逐次增加的,第一次是1次,第二次是两次,总共是C32,也就是3次。

2023-11-29 17:00:08 380

原创 see之类的动词后面为什么接动词原形

When we have a word that already indicates the past tense or past experience, such as "seen," "watched," "heard," or "noticed," it is not necessary to use a different verb tense in the clause following it.Using the base form of the verb (present tense) aft

2023-11-09 17:02:08 107

原创 关于比较级(内含名词比较级)

因为实际就是借用了 be adj的形式,其中of + n转化成了 adj 然后其中的more 插入其中,就变成了普通的be more adj的形式啦。即,如果我们想表达:你能不能表现得更马屁精一点?这种针对一个具体名词的程度升级怎么表达呢?例如:could you be more of a teacher's pet?在比较级中,修饰形容词一般使用more 或者-er的变体,但是怎么修饰名词呢?这里的teacher's pet 表示是那种顺从老师,甚至溜须拍马的人。老师的马屁你能拍的更响一点嘛?

2023-10-31 15:53:30 55

原创 三种不同主语的常见句型(含定语从句用法,动词+人的用法)

(2)人作主语,那么修饰的就是定语从句。或者说,当修饰的对象是主语(或者是宾语的时候)那么这个时候使用定语从句。当修饰的成分作主语或者是宾语的时候,这个时候又需要修饰他们的时候,这个时候就可以使用定语从句,务必要做到熟练。总结一些心得:(1)动名词做主语,宾语一般是人。1. 年轻人出国学习可以获得很多好处。2. 人们开车去上班可以节省很多时间。(补充:什么时候使用定语从句?(3)it is 的形式主语。(1)动名词(动作)作主语。

2023-10-31 01:18:05 149

原创 not to mention 和let alone的用法

在这个例子中,"let alone" 后面接了一个由 "that" 引导的从句 "that she can dive into the deep end",用于进一步强调她连在浅水区游泳都不会这一事实,更不用说她能够跳进深水区。在这个例子中,"not to mention" 后面接了一个由 "that" 引导的从句 "that I have a meeting in the afternoon",用于进一步强调下午还有一个会议这一事实。这是因为它们引导的是一个补充说明或强调的内容,而不是一个进行性的动作。

2023-10-17 11:34:18 1621

空空如也

空空如也

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

TA关注的人

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