自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 介绍几个LDO低压差线性稳压器(AMS1117、AP2112、BL1117)

最近翻了翻开源平台上面的一些设计,收集了一些LDO的电路设计,这边分享记录一下。

2024-09-19 23:48:36 370

原创 你说你不会KMP,只会看(K)猫(M)片(P)?

我们再观察观察目标字符串,可以发现它是由两个“ABC”拼接连起来的(当然了,实际情况不会这么巧,这边只是举个例子),那么就是说既然我们只是第二个“ABC”的‘C’不匹配而已,那么我完全可以把索引回退到2的位置,因为索引2的前两个字符串是“AB”,而索引5的前两个字符串也是“AB”,是相同的,并且主字符的前两个字符串也一定会是“AB”(因为都已经匹配到索引5了,所以主字符串的前五个字符一定等于目标字符串的前五个字符),所以可以跳过前两个字符的匹配。最长相同的前后缀长度为1。. - 备战技术面试?

2024-09-19 23:21:29 1027

原创 【ESP-IDF FreeRTOS】流缓冲区

虽然数据的大小没有限制了,但是如果两个数据同时(不会真的同时,而是时间非常接近)塞进了流缓冲区,我们就很难从一堆数据中区分成两个数据了(同一个数据不会被拆开,假设一个数据是“aaa”,另一个数据是“bbb”,那么“同时”被塞进流缓冲区之后,流缓冲区中的数据会是“aaabbb”或者是“bbbaaa”,而不会是“ababab”之类的)。这边有个小问题我没找到原因,那就是流缓冲区设置了5个字节才能接收,但是第一次接收的时候只接收了一个,修改了接收字节的设置之后,第一次接收也还是只接收一个。

2024-09-15 17:58:42 391

原创 【硬件模块】SHT20温湿度传感器

我们要获取温湿度的话,首先先发送从机地址+写,接着我们发送触发测量的命令,等待测量完毕之后再发送从机地址+读,等到SHT20给我们了ACK回应之后,我们接收3个byte,分别是数据的高8位,数据的低8位,CRC校验码。另外在数据的低8位中的最后两位,是状态位,如果是“00”,那么表示这个数据是温度,如果是“10”则表示这个数据是湿度,但是这个其实没啥用,因为读出啥数据取决于我们之前发送的测量命令,我们要做的就是将最后两位清零,因为最大分辨率为14bit。

2024-09-15 17:57:48 984

原创 【ESP-IDF FreeRTOS】事件组

参数俩,一个是事件组句柄,另一个是我们要给事件组置1的位,比如说我要给位一置1,那么传的参数是0x01(0000 0001b),位二就是0x02(0000 0010b),并且可以同时给多个位置1,可以直接传0xFF(1111 1111),把低八位全部置1。编程指南的解释有点绕(反正一开始我误解了,也可能是翻译的问题),我以为返回值是解除阻塞之后的事件组的值,因此只需要判断返回值中我们等待的位是否被置0即可(这是错误的!创建完之后我们的操作基本就俩,设置事件组的位,等待获取事件组的位。

2024-09-13 10:31:12 758

原创 【ESP-IDF FreeRTOS】软件定时器

官方是说定时器的ID可以在定时器的回调函数里区分具体是哪个定时器,因为多个定时器可以共用同一个回调函数。除了ESP-IDF中的软硬件定时器,我们还可以使用FreeRTOS中的软件定时器,它是基于Tick的定时器。上面俩可以用来调试,也可以用于区分使用同一个回调函数的不同的定时器,因为定时器的回调函数的参数只有一个定时器句柄,通过定时器句柄可以使用上面俩函数获取到定时器的信息。示例很简单,就是开俩定时器,一个周期的,一个一次性的,周期定时器打印一段话,一次性定时器关闭周期定时器。

2024-09-13 10:30:50 336

原创 你真的了解电阻吗

举个简单的小例子,在单片机有个梗就是点灯大师,意思就是我们无论学习哪款单片机,第一件要做的就是点亮个LED,在我其他单片机系列教程中,第一个教大家的也是点灯,然而我的做法是错误的,因为我点灯的时候是直接把LED接到单片机的GPIO口和高电平上的,正确的做法是需要串联一个电阻的,不然很有可能烧掉的。说到采样,就不得不提一下一些特殊的电阻了,常见的有光敏电阻,热敏电阻,压敏电阻(这边的压,是电压的压,我之前还以为是气压的压和压力的压),气敏电阻等。在立创的ESP32R8B8开发板的原理图中就有0欧电阻的身影。

2024-09-11 16:47:26 862

原创 【硬件模块】DS18B20温度传感器

DS18B20是只需要一根通讯线的温度传感器。首先先看看它的通信时序,一共就仨,初始化时序,写时序,读时序。第一个,初始化时序,我们(MCU)先拉低总线最少480us,然后释放总线(拉高)。DS18B20收到上升沿之后会在15~60us之后把总线拉低,拉低60~240us之后再释放总线。这样一套流程下来我们就算是初始化DS18B20了。那我们要做的就是先把MCU用于和DS18B20通信的那个引脚设置为输出模式。然后拉低480us(可以稍微久一点,但是我试过了,480us是没问题的)后,再拉高。

2024-09-11 16:46:54 1145

原创 【ESP-IDF FreeRTOS】信号量

那我们想象一个场景,我们创建了很多优先级不一样的任务,优先级高的任务更容易拿到时间片,也就更容易执行,如果高优先级任务和低优先级任务共用一个核心资源,并且我们使用二进制信号量来控制,当低优先级任务使用核心资源的时候,将信号量减一,高优先级任务想要使用这个核心资源的时候就只能等着,但是由于低优先级任务执行的概率比较低,因此尽管高优先级的优先级比较高,但还是得不到执行,这就导致了“饥饿”现象。在应用层上我们有个规定,那就是谁上锁谁开锁,而不能任务A上锁,然后让任务B开锁,这也是互斥锁和信号量的差别。

2024-08-31 09:03:03 993

原创 【ESP-IDF FreeRTOS】队列管理

因为队列是有容量的,如果队列满,那么数据是塞不进去的,因此有个等待时间,如果等待时间内队列被取了数据,也就是有位置空出来了,那还是可以成功塞东西进去的,如果超过了等待时间还是无法塞,那么调用失败,返回pdFALSE(等价于False,反之成功是pdTRUE)在中断里也是一样的,因为中断函数中不能执行太多的内容,那么我可以让中断函数就执行一个操作,那就是往队列里塞东西,然后再其他地方不断地尝试从队列中取数据,若是从队列里取出东西了,那么表示中断触发过了,就可以在中断函数之外执行中断处理的逻辑了。

2024-08-31 09:02:16 1159

原创 【ESP-IDF FreeRTOS】任务管理

首先我们通过ESP-IDF FreeRTOS可以创建多个任务,正常情况下任务是“并行”的(看起来是并行的,实际上是通过分割时间片来轮流运行,因为太快了所以在我们看来就是并行的),但严格说来,在一个时间点上,CPU只能执行一个任务(多核除外,多核是每个核都可以执行一个任务),那么正在执行的任务就处在运行状态,而其他没执行的,在等待执行的任务就处在就绪状态。且这个函数的返回值是任务的句柄,而我们动态分配的函数的任务句柄是通过最后一个传出参数给我们的,也就是说静态分配比动态分配要多出两个参数。

2024-08-22 16:54:42 1077

原创 【ESP-IDF FreeRTOS】概括介绍&API命名规则&延时函数

举个例子吧,比如说我第一个参数给它传入8点,第二个参数给它传入俩小时,那么不管我在几点的时候调用它,我都会延时到8+2 = 10点,如果我八点调用,那么就是延时俩小时,如果我九点调用,那么我还是延时到10点,也就是延时一小时。我们一般买的开发板是ESP32型号的(没错,有个型号就叫ESP32,所以我在上一段强调了一下ESP32的这种说法,大家根据语境自行判断ESP32是指特定型号还是泛指这类芯片),基本是支持双核的,但还是有个版本是单核的。最终我们可以看到,它的值就是我们一开始设置的值。

2024-08-22 16:54:36 1001

原创 【ESP-IDF】看门狗定时器

不过这不意味着我们只能使用任务看门狗,因为中断看门狗是默认就开启的,这也是为什么我们不能在中断里执行太久,否则就会重启的原因。,它其实不叫外部晶振看门狗定时器,编程指南里是叫它XTAL32K看门狗定时器的,因为它使用的时钟源是32K的外部晶振,所以我觉得这么叫比较好理解才这么叫的)。看门狗定时器的中断执行函数就是给我们的程序重启,因此我们需要在它中断之前把计数器的值清零(喂狗),否则就会不断重启。任务看门狗定时器是基于定时器组0的看门狗定时构建的,而中断看门狗定时器用的是定时器组1里的。

2024-08-06 14:56:06 829 1

原创 【ESP-IDF】ESP32获取真随机数

我翻了好几个型号的ESP32的编程指南,都有相关的函数,应该是大部分型号都有,具体有没有还需要对照一下自己手上的ESP32型号。另外产生真随机数的条件就是有噪声作为随机数发生器的随机数种子,因此我们再调用上面函数获取随机数之前还需要保证有随机数种子。我们可以从从随机数发生器的寄存器 RNG_DATA_REG 中读取随机数,每个读到的 32 位随机数都是真随机数。我们一开始就看了随机数发生器的寄存器,它就是32位,那么我们是怎么获取到除了32位之外位数的随机数呢?那么ESP32是怎么做到真随机数的呢?

2024-08-06 14:55:05 542

原创 【快速上手ESP32(ESP-IDF)】ADC数模转换(含单次转换和连续转换以及校准)

这篇为重置版。因为准备录制视频了,然后回过头看看之前讲ADC的文章发现有不少错误的地方(但是代码是可以用的),而且讲的也不全面,因此决定写下这个重置版。这边提供三种使用ADC的方法,第一种是老方法,我就直接把之前的文章给复制过来并进行部分修正。看过的小伙伴可以跳过,直接看单次转换模式和连续转换模式。

2024-07-29 08:04:40 1439

原创 如何在ESP-IDF中使用C++

简单来说,如果是C调用C++的函数,那么这个函数的声明和定义都需要用extern "C"来链接一下,而如果是C++调用C的函数,则只需要用extern "C"声明。ESP-IDF是支持C++的,虽然默认是C语言,我们平时用的也是C语言,文档里提供的API也是C语言的,但是实际上我们是可以使用C++来编写的。毕竟C++基本上是可以兼容C语言的,所以我们在C++里使用C语言的API是没有问题的。如果我们需要C和C++混用,那么就会出现C调用C++函数或者是C++调用C函数。可以正常使用C++的语法以及STL。

2024-07-29 08:04:07 709

原创 VCC、VDD、VSS、VEE电源符号傻傻分不清楚?

电路中的VCC可以概括为电路的供电电压或电源电压。在数字电路、模拟电路、微控制器和集成电路等场景中,VCC都扮演着关键角色,为电路中的各个元件提供必要的电能。因此,在电路设计和应用中,需要合理选择VCC的电压值,并确保其稳定性,以保证电路的正常工作。在电路中主要指的是源极到源极的电压或特定于某些集成电路(如CMOS)的接地电压。VSS在电路中为电流提供回流的路径,确保电路中的电流能够正常循环,从而使电路能够稳定工作。而VDD配VSS,属于是电路中某特定的集成电路内部的电源正负极。接下来再分享几个电源符号。

2024-07-13 16:33:02 3284 1

原创 【硬件模块】SGP30气体传感器

这是SGP30官方文档里开头的介绍,简单来说就是SGP30是一个数字多像素气体传感器,然后具有长期稳定性和低漂移。这些我们都不用管,我们只需要知道SGP30是通过I2C来通信的,并且可以采集的数据有CO2和TVOC的含量。TVOC是“Total Volatile Organic Compounds”,意思是总挥发性有机化合物。可以来看一下它的参数。TVOC的输出范围是0~60000ppb,而CO2的范围是400~60000ppm。一开始没注意范围,我看CO2一直都在400以上还以为出了啥问题。

2024-07-03 10:48:34 1456

原创 【硬件模块】PN532 NFC读卡串口通信

PN532是一款功能丰富的非接触式通讯收发模块,其基于8051单片机核心,集成了多种通信接口和工作模式,以满足不同应用场景的需求。综上所述,PN532是一款功能强大、高度集成的非接触式通讯收发模块,具有多种通信接口、工作模式、高度兼容性和灵活的配置方式。这些功能使得PN532能够广泛应用于各种需要非接触式通信的场合,如物联网、移动支付、智能门禁等。以上介绍来自文心一言。今天我们就来玩玩这个NFC模块,其实买来好久了,一直懒得动,最近有点懈怠了就硬着头皮拿来玩玩,就是下面这个东西。

2024-07-03 10:43:20 2702

原创 一文入门CMake

我们前几篇文章已经入门了gcc和Makefile,现在可以来玩玩CMake了。CMake和Makefile是差不多的,基本上是可以相互替换使用的。CMAke可以生成Makefile,所以本质上我们还是用的Makefile,只不过用了CMake就不用再写Makefile了,会更简单一些。一般来说小项目我们直接写Makefile,大项目我们就用CMake。CMake是跨平台的,写起来也比Makefile简单,所以我们还是很有必要学学CMake的。可以参考官方文档首先我们先来安装一下CMake。

2024-06-27 22:09:08 834

原创 【GD32】08 - IIC(以SHT20为例)

接下来是设置IIC通信的模式与地址,模式我们自然是选择I2C模式的,而地址可以选择7位或者是10位的(10位的参数截图没截上,因为卡在手册的下一页了),这个根据我们通信的模块的从机地址而定。今天来了解一下GD32中的硬件IIC,其实我个人是觉得软件IIC比较方便的,不过之前文章里用的都是软件IIC,今天就算是走出自己的舒适圈,我们来了解了解GD32中的硬件IIC。关于IIC以及本文中演示的SHT20,在之前的文章里都有,并且也不是本文的重点,因此这里就不介绍了,不了解且感兴趣的小伙伴可以去看看之前的文章。

2024-06-27 22:08:32 1179

原创 【GD32】07 - UART串口通信

根据之前STM32串口的经验,我们可以将printf重定向到串口上,在STM32中我们直接重写fputc,然后在Keil的设置中勾选Use MicroLlB就行了,但是在GD32F407中勾选Use MicroLlB在编译后会有两个错误。发送数据,注意这边参数的取值范围,发送数据的范围居然是0~0x1FF,类型是uint32_t。今天我用的型号是GD32F407,用其他型号的小伙伴在使用UART的时候注意一下自己手上板子的资源就行,我们使用固件库就算是不同型号其实也是没有什么太大差别的。

2024-06-25 21:48:59 2116

原创 一文入门Makefile

这是因为上面的%可以看成是任意的东西(类似于通配符中的*),当我们的目标的依赖不存在的时候,Makefile就会在规则中寻找是否目标的依赖和哪个规则的目标一致,找到就会执行这个规则中的命令。上面例子把目标文件直接赋值给了变量targetFile,我们在规则中可以使用$(targetFile)的方式取出test的这个值去使用,当然了上面只是简单地做个示范,我们还可以拿变量去装一些更复杂的东西,比如说一堆的文件(没错,一个变量能装的可不止一个文件,用空格隔开可以装多个)那么Makefile到底是做什么的呢?

2024-06-25 21:48:00 1037

原创 apt和apt-get有什么区别?内含常用命令以及软件源配置

比如说如果我们要安装软件包A,而安装软件包A需要先有软件包B,我们使用apt命令安装A的时候,会自动帮我们把依赖的B也装上,而使用apt-get就不会了,但是也有解决方案,就是输入。有时候我们上网找与Linux相关的资料的时候,经常会需要安装一些软件包,找到的一些文章会贴出命令我们直接去命令行里执行就能一键下载安装,然后这些命令中逃不开的就是apt和apt-get。除了依赖方面的差别,还有用户体验方面的差别,但是其实无所谓,就是apt比apt-get多了进度条,可升级软件包数量之类的提示。

2024-06-15 21:14:00 984

原创 一文入门gcc

这个会用的多一点。-D后接我们要在编译时候注册的宏。我现在修改一下我们之前的test.c文件。然后我们直接编译,运行的结果是这样的。当我们使用了-D选项,则是下面这样的效果。通过这样的小例子,相信大家就对-D有了简单的认识了。今天在这边就介绍到这边了,对于我们后续学习Makefile来说是足够的。感觉不过瘾,想更深入了解gcc的小伙伴可以直接man gcc也可以去查官方文档。t=N7T8。

2024-06-15 21:11:20 955

原创 【硬件模块】SSD1306 OLED屏幕(含GD32&ESP32驱动代码)

最近在写GD32的文章,之前STM32有OLED屏幕来展示数据,ESP32可以直接打印到电脑屏幕上,GD32的话手上就没有办法了。虽然是可以直接把STM32的OLED屏幕的驱动代码改改移植到GD32上面,不过想了想干脆写一个文章来说说如何驱动,也当是锻炼一下看文档的能力了。没错,SSD1306也是只有英文文档,找网站直接翻译中文的效果不太好,不过我还是把译文结合原文再看看江科大的STM32的OLED驱动代码给啃了啃,因此这很考验我的耐心。

2024-06-14 19:39:35 1942 1

原创 一文入门vim

这个很简单,我们直接在命令行输入vim+文件路径就会自动使用vim打开编辑这个文件,这个文件可以不存在,如果不存在的话vim会帮我们创建,所以我基本不使用touch去创建文件,直接用vim就好了。在输入模式下,我们很有可能是敲代码的,那自然是少不了代码补全的,在vim中我们可以通过下载安装插件的方式来实现,但是这里就不细说了,直接说一个最简单的,在输入模式下直接。一开始我们可能会不适应,但是一旦适应之后,我们编写文件的效率就会大幅提升,因为我们的手几乎可以不移动,并且使用vim是可以不使用鼠标的!

2024-06-11 09:28:02 890

原创 基于Keil5移植LVGL,懂得原理之后什么开发板都可以移植

我们之前说过I2C,那么我们就拿I2C和SPI做个对比。而我们常用的STM32C8T6是不符合要求的,GD32E230也是不符合要求的(虽然网上好像有移植成功的案例,但是作为初学者我们尽量还是拉高配置吧,省的不必要的麻烦),我这边用的是GD32F407VET6,配置上是足够的,包括ESP32-S3什么的也是满足要求的。其中函数的形参area是个结构体,一共有四个成员,分别是x1,x2,y1,y2,表示打点的范围,color_p是像素点的数组,我们一般是要强转一下类型再给我们的打点函数。

2024-06-05 19:07:17 991 1

原创 【硬件模块】ST7735S(1.8寸TFT-LCD)

SPI,英文全称Serial Peripheral Interface,即串行外围设备接口,是一种高速、全双工、同步的串行通信总线。我们之前说过I2C,那么我们就拿I2C和SPI做个对比。SPI和I2C对比,优势在于SPI的传输速率比I2C快得多,劣势在于SPI需要用的通信线比较多。SCK(Serial Clock):串行时钟线,由主设备产生,用于同步数据传输。MOSI(Master Output Slave Input):主机输出从机输入线,主设备通过这条线发送数据给从设备。

2024-06-04 17:42:23 2234

原创 【GD32】06 - SPI (含ST7735S TFT-LCD屏幕驱动)

接下来我们要开启引脚复用,SPI一共是四个引脚,MISO,MOSI,SS,SCK,其中SS一般来说我们不让他硬件控制,通常我们会另外软件控制,因为硬件SPI的SS是固定死的,这样可能会和我们其他要用的引脚冲突,而且使用硬件SPI就是为了速度更快,而SS软件另外控制并不会影响多少速度,因此我们就算使用硬件SPI,也会让SS引脚使用软件控制。有了SPI,我们就可以直接封装ST7735S的驱动了,具体ST7735S的指令什么的我就不在这边啰嗦了,之前的文章有小小地介绍一下,文章链接在本文的开头。

2024-06-03 21:10:47 1583

原创 【GD32】05 - PWM 脉冲宽度调制

PWM (Pulse Width Modulation) 是一种模拟信号电平的方法,它通过使用数字信号(通常是方波)来近似地表示模拟信号。在PWM中,信号的占空比(即高电平时间占整个周期的比例)被用来控制平均输出电压或电流。PWM在许多应用中都非常重要,特别是那些需要精确控制模拟信号的应用,如电机控制、LED亮度调节、音频放大器等。在电机控制中,PWM通常用于控制电机的速度和方向。通过改变PWM信号的占空比,可以精确地控制电机的平均电压,从而控制电机的速度和扭矩。在LED亮度调节中,PWM也被广泛使用。

2024-05-31 19:12:21 1497

原创 【GD32】04 - Timer定时器

GD32E230中有七个定时器,六种类型,其中通用的L4版本有两个,其他类型的各一个。那我们就以通用L4这个类型来敲代码,其他流程是通用的。

2024-05-31 19:12:01 1467

原创 【备战软考】刷题篇——C语言高频考点

宏定义是直接替换的。然后a的值是273,因此完整的32位的值应该是0x00 00 01 11,然后是按端存储的,因此0xC008这个地方的值是0x11。我们按照顺序数下来,a是int,占32位4个字节,b是char,占8位一个字节(虽然题目没说,但是根据编程的常识可以推断出),但是题目说是按数据双字节对齐,我们先稍微了解一下双字节对齐是什么意思。“china”的长度是5,因为j是5,而sizeof(a)返回的会是7,因为a本质上是char类型的数组,这个数组的长度是7,每个char占一个字节,因此i是7。

2024-05-18 13:36:53 512

原创 【备战软考】刷题篇——选择题中的计算题

计算系统平均访问时间,已知cache的命中率是98%,如果cache没命中,那么需要访问主存,花费的时间是200ns,如果命中,那么只需要访问cache,花费200/4=50ns,因此我们只需要把各自的概率乘上各自花费的时间即可,就是0.98*50+0.02*200=53ns。因为补码是在反码的基础上+1的(正数的补码,反码,原码是一样的,只有负数才需要操作),因此我们把这个机器码-1,再当成反码计算即可,也就是当它是1 1110的反码,翻转回源码就是1 0001,对应到十进制就是-1。

2024-05-18 13:36:29 371

原创 【备战软考】刷题篇——计算机指令系统

也就是说简单一点的指令可能短点,而复杂一点的指令可能会更长点,而RISC的指令是固定长度的,这也是RISC执行速度更快一些的原因之一。没那么简单,我们真的把图画一下就知道,指令的数量越多,那么执行完一条指令的平均时间就越接近执行时间最久的那个操作的时间,但是二者不可能相等,因为执行操作有先后顺序,就算大多数情况下时间最长的操作可以“盖住”其他时间短的操作,但是总有“盖不住”的操作。不好理解的小伙伴可以画一下流水线的图,只要指令的数量越多,那么执行完一条指令的平均时间就越接近执行时间最久的那个操作的时间。

2024-05-17 18:20:26 777

原创 【备战软考】刷题篇——计算机主要部件基本工作原理

C和D合一起讲,因为说的都是程序状态字。三线菊花链使用3根控制线:总线请求BR、总线允许BG(BuSGrant)和总线忙BB,各模块通过OC(集电极开路)门在请求线BR和忙线BB上分别'线或(负逻辑),各个模块的BR(或BB)线连在一起,当有一个为低电平时,输入到仲裁器的BR(或BB)即为低电平,这种“负或“的关系若从正逻辑来看则为“正与”,因此也有叫“线与”的。首先A是正确的,这个应该没什么争议,回想一下我们编写单片机程序的时候,不就是软硬件结合的嘛,硬件触发中断,然后交给我们写好的中断函数处理。

2024-05-17 16:39:23 891

原创 【备战软考】刷题篇——数字电路基础

在我们数字电路中,使用逻辑‘1’和逻辑‘0’来表示高电平和低电平,也就是两种状态,这也是计算机中普遍(之前苏联搞过三进制计算机)用的是二进制,因为我们的电路只有高低电平两种状态,我们可以使用高电平来表示二进制里的1,低电平表示二进制里的0。COMS电路是电压控制器件,它的输入总抗很大,对干扰信号的捕捉能力很强。我们知道触发器可以用来存放一个bit的数据,寄存器也是由触发器组成的,N位寄存器也就是N个bit也就是N个触发器,因此A和C是对的,B也是对的,一位寄存器可不就是来移位用的嘛,因此答案选D。

2024-05-16 17:53:47 855

原创 【备战软考】刷题篇——计算机组成基础

我们顺着d看,d指向c,而我们知道d是PC,PC存放的是下一条要执行的指令的地址,CPU执行完一个命令就需要从PC中拿出当前需要执行的指令,然后PC再自动+1,因此c存放的是当前要执行的指令的地址,对应到寄存器中就是AR(地址寄存器),所以我们又得知了c就是AR。再回到题目里,咋一看挺乱的,但我们可以逐个击破,比如说d,被一个箭头指着+1,而我们知道PC(程序计数器)它的特性就是指向下一条指令的地址,会自动+1,因此我们可以直接断定d就是PC,而答案里就一个d是PC的,我们直接选A。

2024-05-16 17:53:26 682

原创 【GD32】03 - EXTI外部中断

EXTI,全称External Interrupt/Event Controller,即外部中断/事件控制器,是微控制器中的一个重要组成部分。它主要用于管理来自外部设备的中断和事件请求。总的来说,EXTI是微控制器中一个重要的外部中断/事件控制器,它可以实现对外部设备的中断和事件请求的管理和处理。在物联网和嵌入式系统等领域中,EXTI具有广泛的应用前景和重要的价值。以上介绍来自文心一言。

2024-05-13 22:12:58 1484

原创 本来还挺喜欢……

不管是哪一款开发板,我们只是画个底座的话就是固定的简单套路,我们用排母来放置开发板,再把开发板的每个引脚用导线引出来,再用排针或是排母作为拓展引脚就可以了。打板子下单的时候也要注意选择彩色丝印工艺这样打出来的板子才会有上面预览的效果,打印彩色丝印的要求是阻焊为白色,并且要选择沉金工艺。画PCB也简单,就连个线就好了,要注意的就是两组引脚之间的距离,不对的话我们的板子是插不进去的。上面的LED灯是可以删去的,包括最上面的三个1*5的排母也是可以不要的。正常我们是要拿标签来做个注释的,但是自己用的就无所谓了。

2024-05-13 22:12:32 1853

200行C++代码写一个qt串口助手

200行C++代码写一个qt串口助手

2024-01-11

200行C++代码写一个Qt俄罗斯方块

200行C++代码写一个Qt俄罗斯方块

2023-09-20

200行c++代码写一个扫雷小游戏

200行c++代码写一个扫雷小游戏

2023-08-12

150行代码写一个Qt井字棋小游戏

150行代码写一个Qt井字棋小游戏.完整的VS工程文件,以及自己绘制的图片

2023-07-31

200行代码写一个简易的Qt界面贪吃蛇

200行代码写一个简易的Qt界面贪吃蛇

2023-07-30

100行代码写一个简易Qt点名程序

100行代码写一个简易Qt点名程序

2023-07-30

51单片机红绿灯 仿真+代码

protues+keil 完整仿真工程文件+c源代码 可作课设,使用51单片机完成的简易红绿灯. 使用定时器,外部中断.

2023-07-19

C++简易小黑窗贪吃蛇(200行代码)

适合C++初学者巩固语法练习的简易小黑窗贪吃蛇. 使用VS2019,不是用VS的也可以直接复制cpp和h文件.

2023-07-19

空空如也

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

TA关注的人

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