- 博客(44)
- 收藏
- 关注
原创 STM32F103芯片IO口的8大输入输出模式
引脚配置为复用功能,用于连接外设(如UART、SPI、I2C等)。可以配置为浮空输入(无上拉/下拉电阻)或带上拉/下拉电阻的输入。输出低电平时,引脚驱动低电平。输出高电平时,引脚为高阻态。引脚配置为模拟输入或输出,用于连接ADC或DAC。输入模式下,引脚内部的上拉/下拉电阻被禁用。开漏输出需要外部上拉电阻才能输出高电平。引脚内部连接上拉电阻,默认状态为高电平。引脚内部连接下拉电阻,默认状态为低电平。引脚配置为输入,用于读取外部信号。引脚配置为输出,用于驱动外部设备。需要外部上拉电阻,驱动能力较弱。
2025-03-11 16:55:27
858
原创 【追根溯源】在数电中脉冲波形的产生和整形电路
施密特触发器:用于波形整形和噪声过滤,具有滞回特性。单稳态触发器:用于生成固定宽度的脉冲信号,常用于定时和延时。多谐振荡器:用于生成方波信号,对称式和非对称式分别适用于不同占空比需求。环形振荡器:用于生成高频时钟信号,电路简单但频率高。555定时器:功能强大,可配置为施密特触发器、单稳态触发器和多谐振荡器,广泛应用于定时、波形生成和电平检测。
2025-03-10 21:21:05
755
2
原创 【追根溯源】数电中常见的组合逻辑芯片
编码器:74HC148译码器:74HC138码制转换器:74HC43数据选择器:74HC151、74HC153算术运算器:74HC283比较器:74HC85计数器:74HC161、74HC163、74HC160作用:将8个输入信号编码为3位二进制输出。它具有优先级功能,即当多个输入信号同时有效时,优先级最高的输入会被编码。分类:编码器。典型应用:键盘扫描电路(用于检测按键输入)。中断优先级控制(在微处理器系统中处理多个中断信号)。作用:将3位二进制输入转换为8位输出之一。每个输入组合对应一个唯一的输出。分类
2025-03-10 14:58:05
422
原创 Ubuntu下的QT无法输入中文问题
跟着某原子的教程在Ubuntu下学习QT,在QT配置中文输入的环节,因为我自己的QT版本和某原子的不一样,所以在跟着它教程配置的时候无法成功,随后我上网查找解决办法,借鉴一个博主的解决办法最终解决:【原文】解决Ubuntu系统下QT无法输入中文问题,以及一点输入法的高级知识_ubuntu qt无法输入中文-优快云博客我的Ubuntu版本是Ubuntu 20.04.4,QT版本是5.15.0在语言设置界面首先配置成下图:(1)执行以下命令安装拼音输入法(2)输入以下命令,打开 ibus 设置窗口
2025-03-10 09:48:03
437
原创 解决Ubuntu安装QT:From 6.5.0, xcb-cursor0 or libxcb-cursor0 is needed to load the Qt xcb platform plugin.
2、需要安装xcb-cursor0 库。3、最后重新点击QT就能成功启动了。
2025-03-09 23:04:24
273
原创 Linux基本操作指令3
这是一个用于从网络上下载文件的命令行工具。它支持 HTTP、HTTPS 和 FTP 协议。7、运行的命令需要管理员权限,可以在命令前加上。3、安装五笔输入法&安装拼音输入法。8、如何查看版本,以fcitx为例。6、运行以下命令来执行脚本。5、克隆 Git 仓库。
2025-03-09 22:47:53
287
原创 C++基础,知识点总结
代码的“分区工具”,防止名字冲突。:类是“设计图”,对象是按图造出的“实物”。:关注“做什么”,不关心“怎么做”。:“同一操作,不同结果”。比如“动物叫”,猫是“喵”,狗是“汪”。:对象的“临终遗言”,负责清理资源(比如停车后关发动机)。:“儿子继承爸爸的财产”,子类自动拥有父类的属性和方法。:多个类有共同特征时(如“猫”和“狗”都是“动物”)。:对象的“出生仪式”,负责初始化(比如给新车加油)。:对象的“身份证”,在成员函数中代表“我自己”。:强制子类实现的“空头支票”,父类只声明不实现。
2025-03-09 09:31:47
582
原创 轻量级 Transformer 架构&多模态预训练框架
轻量级 Transformer 架构通常是指针对Transformer模型进行了一些优化或简化,使得模型在保持较高性能的情况下具有更小的模型参数量和计算量。这种框架通常包含多个网络结构,每个网络专门处理一种数据模态的输入,然后将不同模态的特征信息融合在一起,进行联合训练或者交替训练,以获得更加全面和有效的表示。传统的预训练模型通常只使用单一数据模态的信息进行学习,而多模态预训练框架则可以同时利用多种数据模态的信息,从而提高模型的泛化能力和性能。
2025-03-08 23:15:34
324
原创 关于C++析构函数和构造函数
当对象超出其定义的作用域时,会自动销毁。全局对象和静态对象在程序结束时销毁。,就会调用一次构造函数。,就会调用一次析构函数。
2025-03-07 20:45:58
209
原创 Linux基本操作指令1
7.编辑 cpp 文件(以文件01_hello_world为例)4.查看安装的 gcc 和 g++的版本。6.从当前目录进入创建的 C++目录。5.当前目录下创建一个 C++目录。9.使用 g++编译。
2025-03-06 22:24:51
613
原创 在Ubuntu安装搜狗输入法
sudo dpkg -i sogoupinyin_版本号_amd64.deb。移除不需要的输入法(如键盘 - English)。下载适用于 Ubuntu 的。重启系统或注销后重新登录。
2025-03-06 17:51:25
183
原创 linux指令学习--sudo apt-get install vim
Vim 是大多数 Linux 服务器的默认编辑器,掌握 Vim 对运维工作非常重要。:Vim 是一个功能强大的文本编辑器,常用于编程、配置文件编辑等任务。Vim 是 Linux 系统中非常实用的工具,建议掌握其基本用法。:Vim 支持语法高亮、代码折叠、插件扩展等功能,适合编写代码。输入用户密码(输入时不会显示字符),按回车确认。会自动安装 Vim 及其依赖的其他软件包。是安装 Vim 编辑器的标准命令。命令学习 Vim 的基本操作。键,输入搜索内容,按回车。安装完成后,可以通过。
2025-03-06 15:57:47
490
原创 智能老年照护终端系统方案设计
define FSR_THRESHOLD 200 // ADC阈值(根据实测调整) void Check_Pressure() { uint16_t adc_val = ADC_GetValue(FSR_ADC);
2025-03-05 11:12:16
870
原创 家庭绿植灌溉系统方案设计
pump_time = (40% - soil_humidity) * 2 # 线性调节。// 通过MQTT上传数据。// 初始化串口(ESP8266通信)// 初始化ADC(土壤湿度、液位)// 初始化定时器(流量脉冲计数)check_app_command();土壤传感器:干/湿状态标定(0% = 完全干燥,100% = 饱和)// 初始化继电器、LED。:LM2596(12V→5V/3.3V,供主控和传感器):实时数据仪表盘(湿度、水位、流量曲线)
2025-03-05 10:58:43
908
原创 【追根溯源】在数字电路中,扇出是什么?扇出主要用于判断什么?什么时候需要计算扇出?静态功耗和动态功耗是什么?什么情况下会产生,它们的计算方式是什么?
其中,VDD为电源电压,Ileakage为漏电流。扇出是指一个逻辑门的输出能够驱动的同类逻辑门的最大数量。在设计数字电路时,需综合考虑扇出、静态功耗和动态功耗,以实现性能与功耗的平衡。:在设计数字电路时,需确保每个逻辑门的扇出不超过其额定值。:信号切换瞬间,PMOS和NMOS同时导通产生的短路电流。:在高速或高负载电路中,需计算扇出以优化信号传输和功耗。:信号切换时的功耗,与负载电容、频率和电压相关。:电路在稳定状态下(无信号切换)消耗的功率。:稳定状态下的功耗,主要由漏电流引起。CLCL为负载电容,
2025-02-26 22:03:42
543
原创 【追根溯源】进制中出现了原码和反码,为什么还会出现补码,补码出现的是为了解决什么问题?而补码的出现是为了解决原码和反码的什么问题?
最高位表示符号(0 为正,1 为负),其余位表示数值的绝对值。
2025-02-25 10:59:54
386
原创 在freertos中,事件组的用途,相比与信号量有什么优势,事件组适合应用于什么场合,而这种场合却是信号量无法实现的
任务可以等待多个事件的组合(如“事件 A 和事件 B”或“事件 A 或事件 B”),而信号量无法实现这种功能。事件组可以表示系统的复杂状态(如多个任务的完成状态),而信号量只能表示简单的资源可用性或事件发生。任务可以同时等待多个事件的组合(如“事件 A 和事件 B”或“事件 A 或事件 B”)。任务需要等待多个事件的发生(如“事件 A 和事件 B”或“事件 A 或事件 B”)。任务需要等待多个事件的组合(如“事件 A 和事件 B”或“事件 A 或事件 B”)。一个任务需要通知多个任务某个事件的发生。
2025-02-12 15:21:51
534
原创 在freertos中,互斥量和二值信号量我们该如何使用,它们之间有什么优势,附代码解释
当高优先级任务等待互斥量时,持有互斥量的低优先级任务会临时提升到高优先级,避免优先级反转问题。:用于保护共享资源,确保同一时间只有一个任务可以访问该资源。任务间同步(如任务 A 等待任务 B 完成某项工作)。用于保护共享资源,支持优先级继承,适合临界区保护。用于任务间同步或事件通知,适合简单的同步场景。事件通知(如中断通知任务处理数据)。当需要事件通知时(如中断通知任务)。:必须由获取互斥量的任务释放。:用于任务间同步或事件通知。当需要避免优先级反转问题时。:可以由任意任务释放。当需要任务间同步时。
2025-02-12 11:24:49
288
原创 在freertos中,中断优先级和任务优先级之间的关系和使用方法
中断优先级不同中断中该用多高的优先级?- 任务调度器运行时,可能会暂时屏蔽某些中断(如通过`taskENTER_CRITICAL()`和`taskEXIT_CRITICAL()`)。- 使用`taskDISABLE_INTERRUPTS()`和`taskENABLE_INTERRUPTS()`完全禁用和启用中断。- **任务优先级**:FreeRTOS中的任务优先级是一个整数值,数值越大,优先级越高。- **中断优先级**:中断优先级由硬件的中断控制器(如NVIC)管理,数值越小,优先级越高。
2025-02-11 19:18:47
637
原创 在Freertos中,一些可以触发任务调度的函数
任务阻塞 | `vTaskDelay()`, `vTaskDelayUntil()`, `xQueueReceive()`, `xSemaphoreTake()` || 任务同步 | `xQueueSend()`, `xSemaphoreGive()`, `xEventGroupSetBits()` |vTaskDelayUntil(&xLastWakeTime, pdMS_TO_TICKS(100));// 设置任务优先级。
2025-02-10 21:47:27
513
原创 在freertos中,中断及其ISR程序设计原则是什么?
**解释**:中断服务程序(ISR)就像是一个“急救医生”,它的任务是快速处理紧急情况(比如读取数据、清除中断标志),然后马上离开,不能在里面做太多复杂的事情(比如处理大量数据或等待其他事件)。- **解释**:如果一个中断正在执行时,另一个更高优先级的中断来了,系统会暂停当前中断去处理新的中断,这就是中断嵌套。- **解释**:不同的中断有不同的紧急程度,比如硬件定时器中断可能比按键中断更重要,因此需要给它们设置不同的优先级。- **怎么做**:尽量减少中断嵌套的深度,确保每个ISR都能快速完成。
2025-02-10 20:56:42
632
原创 在freertos中,临界区和互斥量是什么关系,它们的使用场景,优劣势有什么
**互斥量**:适合保护较长的操作,灵活性高,支持任务间同步,但开销较大,不能在 ISR 中使用。- **简单高效**:临界区的实现通常是通过关闭中断或调度器,开销非常小,适合保护非常短的操作。- **实时性要求高**:临界区关闭中断或调度器,可以保证代码的实时性,适合对时间敏感的操作。- **实时性强**:关闭中断后,当前任务的执行不会被任何中断打断,适合对实时性要求高的场景。- **临界区**:适合保护非常短的操作,实时性强,但会影响系统响应,不能长时间使用。
2025-02-06 17:55:16
505
原创 freertos临界区的概念,什么时候开启临界区,什么时候关闭,什么情况下需要使用临界区,临界区的作用是什么
**共享资源访问**:当多个任务或中断需要访问同一资源(如全局变量、硬件寄存器等)时,使用临界区防止冲突。- **开启临界区**:当你需要访问或修改共享资源时,开启临界区,确保在执行过程中不会被其他任务或中断干扰。- **关闭临界区**:在完成对共享资源的操作后,关闭临界区,允许其他任务或中断继续执行。- **数据一致性**:确保在修改数据时不会被其他任务或中断打断,避免数据不一致。- **确保原子操作**:保证一段代码在执行时不会被中断,确保操作的完整性。### 什么时候开启和关闭临界区?
2025-02-06 17:47:10
262
原创 freertos中,队列和环形缓冲区有什么关系,该如何使用它们,使用队列必须使用环形缓冲区吗
**队列基于环形缓冲区实现**:FreeRTOS的队列底层使用了环形缓冲区的思想,但队列是一个更高层次的抽象,提供了线程安全和阻塞操作。// 缓冲区满,覆盖旧数据。- **队列已经封装了环形缓冲区的功能**:FreeRTOS队列内部使用了类似环形缓冲区的机制来存储数据,但用户无需手动实现。在FreeRTOS中,**队列**和**环形缓冲区**是两种不同的数据存储和传递机制,它们有各自的用途和特点。- **队列是线程安全的**:FreeRTOS队列内置了同步机制,适合任务之间的数据传递。
2025-02-05 20:23:15
443
原创 在FREERTOS中,什么时候使用队列,什么时候使用二值信号量,什么时候使用计数型信号量,互斥量属于信号量吗
在FreeRTOS中,**队列**、**二值信号量**、**计数型信号量**和**互斥量**是常用的同步和通信机制。| **互斥量** | 保护共享资源 | 不支持 | 不支持 | 支持 | 支持 || **计数型信号量** | 资源管理或事件计数 | 不支持 | 支持 | 无 | 无 |信号量没有所有权,任何任务或中断都可以释放信号量。- **需要管理多个资源或事件计数**:使用**计数型信号量**。
2025-02-05 18:11:20
373
原创 学习FREERTOS,报错显示创建计数信号量的函数未定义问题.Error: L6218E: Undefined symbol xQueueCreateCountingSemaphore
只需要把红框内的定义置1,该定义在FreeRtos.h文件下。报错说没有定义,ctrl+f查找一下,置为1便可编译通过了。
2025-02-05 17:57:03
334
原创 AD18绘制PCB--正片层和负片层
绿色的部分就是负片层,刚刚铺的铜,如果我们要连接网络怎么办,通过绘制线条,分割铜片,独立的铜片区域可以连接相同的网络,如下:此时铜片被分割成了两个区域。选择需要连接的网络,此时该区域内所有与你选择连接的网络连在了一起,我这里选择的GND,可以看到该区域内所有GND都连上了。点击设计->层叠管理器->add layer->add internal plane->ok。点击设计->层叠管理器->add layer->add layer。选中一条边,然后按tab选中所有边框。
2024-10-06 20:03:56
1544
原创 AD画PCB--如何查看其它三维视图
1、除了菜单栏默认出现的视图模式(二维视图和三维视图),我们还可以打开其它视图以便观察层与层之间的关系。下面是菜单栏默认可选择视图。2、使用快捷键L,调出面板如下:选择view options。3、点击下拉框,可以选择各种视图查看PCB。
2024-09-24 23:34:34
1151
原创 AD画PCB--创建集成库
3、然后加入自己绘制的原理图库或者导入开源的原理图库(注意原理图和封装要一一对应)然后就可以进行修改--->保存--->编译--->OK。4、然后点击保存,一一保存即可。这里选择刚刚生成的集成库。
2024-09-22 00:28:09
1155
原创 AD画PCB--设置过孔盖油和过孔开窗
如果提供PCB文件给生产厂家,则只需要在工艺中说明过孔盖油就可以。如果是提供的GERBER文件,则需要我们在PCB文件中将过孔设置成盖油,然后再导出gerber文件才可以。因为gerber文件是无法修改的,所以工厂会严格按照Gerber文件进行生产,过孔盖油的工艺说明就无效了。如果需要过孔开窗的,只需要将Tented前的勾去掉即可。有疑问可以在下方留言。对于过孔一般有两种处理方式:过孔盖油(塞油)和过孔开窗。过孔开窗:过孔表面裸露,铜皮或者喷锡,表面导电。过孔盖油:过孔表面有绿油覆盖,表面绝缘。
2024-09-17 23:53:27
1969
原创 AD18画PCB--修改过孔大小遇到的问题
今天绘制四层板放置过孔修改完过孔大小,我发现出现了下图这种绿色的环,网上找个很办法解决,最后发现是因为绘制多层板,而这个绿色通常是GND负片层,这圈绿色指该过孔与中间的负片层不连接,绿圈的宽度表示和负片层的距离。办法二:就是在规则里面修改,规则里面的 Plan-PlaneClearance这个位置调,下图是适应我的过孔调的。最后这个绿色的环也就是消失了。办法一:就是改为两层板;
2024-09-03 00:20:46
1139
原创 AD18画PCB--如何设置线距
为了保证线与线之间的距离足够大,当线与线中心间距不少于3倍线宽(如下图),如果线中心距不少于3倍线宽时,则可保持70%的线间电场不互相干扰,称为3W规则。在芯片的引脚布线时,如果线距过大,会导致线不能引出,这里就需要改线距大小,点击设计->规则->Design Rules,建议新建一个规则,应用对象可以自己修改,以应对不同层不同网络需要不同的规则。所以在时钟走线、差分线、视频、音频,复位线,以及其他系统关键电路等,多个高速信号线长距离走线的时,为了减少线与线之间的串扰,必须强制使用3W原则。
2024-08-29 23:30:17
1774
原创 AD18画PCB--如何设置导线跟随
经过上述操作后,再移动元器件,元器件上连接的导线就可以跟随移动了。注意:如果经过上述操作发现导线没有跟随移动,那是因为导线并没有连接上,尽管导线上的网络显示是同一网络,但是应该是线头没有和器件连接上,这个时候使用“P”-“T”命令绘制导线,再进行移动,导线就可以跟随了。3、选中要拖动的器件,右键点击器件,在弹出的菜单中选择“器件操作(E)”,然后选择“移动器件(M)”。画PCB时,如何移动器件同时导线跟随。2、选择PCB editor。1、首先,点击右上角星号。
2024-08-28 22:54:30
2285
原创 利用AD18画pcb遇到的一个小问题
我今天绘制板子的时候,可能是ad18在电脑上长时间挂着的原因,导致我走线出现了点问题,使用走线连接两个网络,一是走线不是与焊盘垂直方向引出的,360度各种角度都可以拉,和设置的规则相违背,二是发现走线似乎也连上了两个点(网络线消失了),但拖动发现并没连上,网上各种查阅资料也未能解决,最终抱着试一下重启软件的心态看一下能不能解决,最终您猜怎么着,它好了!咱也不知道为什么,可能是电脑原因吧。
2024-08-28 00:52:43
220
原创 AD18画PCB--如何画四层板
这时,就可以通过放置线条 把要连起来的电源或者GND框起来,(要围成一个封闭的图形),之后选择要连接的网络即可。新建的plane一般是负片,所以默认是全覆铜的,因此放置线条就是把铜分割开,分割后的每一块,可以用来连接不同的网络。当我们遇到很复杂的电路时,尤其是电源类型比较多,比如VCC、VDD等,GND比较多时,我们可以用中间层来专门做GND和电源,顶层和底层只用来布信号线,这样就可以很方便了。首先要理解两个概念,layer一般走信号线,是正片,plane一般是电源层,是负片。这样新建的内电层就设置好啦!
2024-08-28 00:13:32
835
原创 AD18画PCB--如何使用DRC检查错误
以上这些是日常设计时容易出错的几个地方,建议把这些检查内容设置为“严重警告”或“致命错误”,以便让AD帮我们自动识别这些易错点。例如MCU上有一个引脚引出的电气线标注了网络标号I2C1_SCL,但在图中仅此一个标号,一般这种是人疏忽忘记连接对应的元件了,建议检查。也即多个元件编号相同,例如两个电容在原理图中都被命名为C2,显然肯定是无法生成PCB的。1、右击目录树中的工程,选择工程参数,如下图。然后AD会把检查的结果,按照上一步骤的设置,给报告出来。2、把下图的检查项改成“致命错误”。
2024-08-27 00:33:55
1733
原创 AD18画PCB--如何导入图片
导入刚才保存的BMP格式的LOGO源文件后,选择LOGO所要印在电路板上的层,一般我们选择丝印层(Top Overlay),然后点击Convert按钮,生成一个丝印层的LOGO了。因为印在电路板只能印出单色图案,所以先得将LOGO转化为单色图片。首先使用电脑上自带的画图软件将LOGO图片打开,然后点击菜单:文件->另存为->BMP图片。3、首先打开AD软件,点击:文件->运行脚本->浏览->打开LOGO CREATOR插件所在文件夹。最后,复制LOGO,将LOGO粘贴在所在的电路板上。
2024-08-27 00:05:32
880
RTThread基于STM32F103ZET6上传温度数据至阿里云,SSD1306屏幕显示数据
2025-02-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人