嵌入式
文章平均质量分 52
Where~Where~
这个作者很懒,什么都没留下…
展开
-
用宏来DEBUG的原理
我们可以将这些函数封装成一个宏,同时再定义一个宏作为开启这些宏的开关,比如说DEBUG,只要当我们define了这个DEBUG宏的时候,就可以使用ifdef来条件编译一下之前封装的宏。只要定义了DEBUG这个宏,那么就会进行条件编译之前的函数,如果没有定义的话,那么就不会编译了。现在我们有一个需求,那就是当我们在某一个场景的时候,我们需要执行这个函数,而在另外一个场景的时候,我们则不需要执行这个函数。而宏定义充分的满足了这个条件。首先值得注意的是,我们平时写函数的时候,函数都是直接执行的。原创 2024-01-31 11:23:26 · 524 阅读 · 0 评论 -
ADC多通道使用DMA传输的理由
ADC的多通道的数据只有一个存储的地方,那就是选择了对应的通道的寄存器,比如我们选择了规则通道,那么之后,我们的数据在抓换之后就会放下规则通道的寄存器中。而规则通道的寄存器的位置是有限的,只有16位数。也就是说,当你只使用一个通道进行数据传输的时候,是不用担心数据别覆盖的问题,因为都是测量的同一个通道的数据,只是你改变了外边模拟信号的状态之后,打印出来数字的响应快慢而已。原创 2024-01-25 15:13:24 · 1151 阅读 · 0 评论 -
程序员裁员潮:技术变革下的职业危机
一对来自中国的工程师夫妻在美身亡,疑因谷歌裁员致悲剧发生。在技术变革下,裁员对于程序员的影响到底有多大?今天我来谈谈自己的看法。原创 2024-01-24 21:23:10 · 448 阅读 · 0 评论 -
基本定时器一启动就直接进中断的两种解决方式
【代码】基本定时器一启动就直接进中断的两种解决方式。原创 2024-01-18 16:57:54 · 1187 阅读 · 0 评论 -
中断标志位和中断服务函数的关系
你不得不认为:中断服务函数正是因为硬件自动产生的中断标志位才执行的。换句话说,中断标志位并不是执行中断服务函数同时产生的,而是有一个先后的顺序,是先产生中断标志位,然后中断服务函数再根据中断标志位才进入中断服务函数来执行的。原创 2024-01-17 19:16:58 · 1002 阅读 · 0 评论 -
关于markdown文件插入图片变成相对路径
[](绝对路径)变成下面这种相对路径也就是说每次插入的时候,都得修改一下。原创 2024-01-11 14:59:17 · 1367 阅读 · 0 评论 -
怎么使用EIDE进行调试STM32单片机?
在上述这幅图中,可以看到我使用的是STLINK烧录,其中的gdb server使用的是openocd,其中需要关注的事configFiles中的两个cfg文件,在刚刚生成这个文件的识货,第二个会显示target/.cfg,出现这种情况的话,你就需要去类似这样的路径中。(2)下载好了之后,就需要在插件中扩展中,加上上述文件的地址。复制的时候不要复制错了,其后缀是有一个cfg在的,不要复制名字的也将文件的cfg复制下来了,这样的话就多复制了一个cfg,别像我一样踩坑了.....原创 2024-01-11 14:04:41 · 992 阅读 · 0 评论 -
51小车的电机驱动思路
之后关于速度的任何操作值需要影响这个速度变量就可以影响小车的速度了,这叫做将小车的速度具象化,这是个很重要的思路。就像之前学习的LCD显示一样,其中有显示函数,也有装载了字符串的数组,显示模块永远是不用动的,而影响数据如何,只要对这个字符串数组进行操作就可以了。原创 2024-01-04 00:43:35 · 461 阅读 · 0 评论 -
按键时钟的原理
之前的独立按键是什么原理呢?之前的独立按键是利用时钟中断,不断地返回按键的状态,当按下去的那一刹那就会返回很多次的状态,返回的形式都是一个一个的Bit,当装载这些比特的,字节都是按下去的状态的时候,这个时候就可以判定是按下去了,但是总的来说,这种方式的反应还是很慢的,于是乎我们可以使用下降沿的方式来进行判定,这样的话,只需要一刹那就可以了,这样的话更加灵敏。原创 2024-01-02 21:35:20 · 486 阅读 · 0 评论 -
滚动点阵屏
有了这个函数,连一开始的第一个字节都是滚进去的,就是显示不完全的状态。其中的s_led_buff是一个缓存。原理就是加了一个shift函数。原创 2024-01-02 01:07:18 · 374 阅读 · 0 评论 -
LCD1602
(1)设置光标的时候,非常有讲究,A6是y左边,后面的A3-A0是X的坐标,中间的就默认为0就好了。(2)记得每次写命令和数据的时候,检查一下忙状态,所谓的忙状态就是一种锁。(3)传输数据的时候,直接赋值过去就好了。这个不是串行的,这个是并行的。原创 2024-01-02 00:24:11 · 424 阅读 · 0 评论 -
18B20
(3)里面的函数也是很常见的,写字节函数,和读字节函数,需要注意里面的时序,非常复杂,对于写字节中,其中的时序需要子啊15us及时释放,不要忘记了。(2)其每次发完寄存器指令的时候,都需要初始化一次,也就是说不能连续发两次的寄存器指令。(4)收集完了两个字节之后,就又要进行一次初始化了。这个也是串口的协议,数据的写入也是从低到高的。(1)18B20也是有读时序和写时序的。原创 2024-01-02 00:10:08 · 381 阅读 · 0 评论 -
DS1302N的时钟逻辑
基本的逻辑:这里面也有读时序和写时序,时序里面也有写字节和读字节的函数,不过这里面需要注意写字节和读字节之间的衔接转换。(2)写进去的数字是需要转换成特定的格式,才能写进去的,同时读出来的格式也是需要特定的转换才能变成数字的。(1)里面有很多数据,所以需要定义一个结构体变量,将其中的数据写进去。这个是主函数,其中需要强制转换,同时要分两次写。(3)写数据是从低到高,和IIC是相反的。原创 2024-01-01 23:33:54 · 403 阅读 · 0 评论 -
I2C协议全流程
(2)这个协议中的函数比较少,就是起一个起始信号,终止信号,读时序信号,写时序信号,写字节函数,读字节函数(由于是实时的串口,所以读写都不需要用缓存装着,直接通过信号线就传输过去了)(3)需要注意的是,读时序的话,最后不读了之后发送的是无应答,这个需要记住,这个时候读信号可以将ACK的应答拆分出来就好了。I2C协议其实没有什么,就是一个实时的双线协议,主要是其中的时序比较复杂,但是函数并不复杂,需要记住以下的几个要点。而时钟和18B20都是相反的,都是从低位走高位的。原创 2024-01-01 22:45:31 · 460 阅读 · 0 评论 -
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 · 4166 阅读 · 0 评论 -
硬件串口和软件串口
这里再来说说LCD的问题,LCD需要检测忙的状态,这样也相当于一个锁,不过这个是串口没有关系,主要是由于LCD处理命令和数据的时候是处于忙的状态,只有处理完了上一条指令才可以执行下一条指令,在手册中注明了忙的状态,所以需要考虑,如果有其他部件也需要输入指令,但是手册中没有明确的说明忙的状态,那么也可以忽略不计。在51中的串口传输中,正是使用的是硬件串口,所以才会有一个确定的SBUF来存储传输过来的字节存储其中,然后再对SBUF里面的字节进行一个bit一个bit的传输。原创 2023-12-28 12:58:10 · 1105 阅读 · 0 评论 -
一分钟带你了解LCD1602
一般来说,用锁的地方一般就两种,一个是串口发送的数据的时候是用锁的,,否则再次调用发送函数的话会发生错位。另外一个用锁的地方就是LCD1602,这个用锁的理由和上面的类似,,能够完整的执行命令,也就是有一个忙状态,所以每次向LCD写数据还是写命令的时候,都需要检查一下LCD是否是在处理别的事情,即检查一下是否在忙碌。也就是说,用锁的目的总的来说,是让上个流程能够完整地执行下去才行。原创 2023-12-28 00:22:54 · 379 阅读 · 0 评论 -
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 · 2238 阅读 · 0 评论 -
一位半加法器,一位全加器,四位全加器
我们假设有一个十位上的A,B两个数字相加,然后有一个个位上的进位,C_in,那么首先,A,B先进行一个半加器的想加,输出的是一个十位上的数字,同时还有一个向高位的进位,C_旧,那么由于个位上的进位需要到十位上进行一个计算,所以第一次半加器计算的记过S需要和C-in进行第二次计算,计算出十位上的S和百位上的进位C-新,此时第二次算出来的S才是真正要计算出去的S,因为已经经过了所有十位上的计算,而百位上的进位,有两个,一个是C-旧,一个是C-新,这个时候要根据两个的值最后求出一个最后输出的C-out。原创 2023-12-05 18:39:39 · 624 阅读 · 0 评论 -
关于电气方面的基本常识
频率不能太低的原因:变压器能效率高,电动机可以个头小功率大。频率不能太高的原因:线路和设备可以损耗小,发电机转速不必过高。所以根据经验和习惯,我们的电能就被定在在50或60Hz。(5 封私信 / 1 条消息) 交流电频率为何设定为50HZ?- 知乎 (zhihu.com)在定义上,电流是电荷(通常是电子)单位时间内通过某一横截面的量。这意味着电流与电荷的移动有直接关系。然而,在实际情况下,电流的传播速度并不等于电子的移动速度。电子在导体中的移动速度相对较慢,通常只有每秒几毫米或更少。原创 2023-12-15 00:25:56 · 1219 阅读 · 0 评论 -
一分钟带你了解电容
因为电容中带电量是越来越大的,根据上述公式可以知道。原创 2023-12-15 01:29:21 · 846 阅读 · 0 评论 -
NPN三极管和PNP三极管
第一种的NPN型的三极管,其中发射极中有很多电子,而集电极中很少电子。这个时候向集电极中通正电,能跑通吗?答案是不能!因为这个在半导体内没有电子在移动,发射极的电子移动不到基极中,原创 2023-12-04 19:58:02 · 1457 阅读 · 0 评论