自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 复刻 Python 实现的小智语音客户端项目py-xiaozhi日记

摘要:学习日记记录了语音助手GUI开发中的关键发现与调试过程。主要内容包括:1) 通过分析GuiDisplay类理解了PyQt5界面构建机制,发现图片资源格式从PNG更新为GIF的历史遗留问题;2) 对比了静态PNG与动态GIF的实现差异,采用QMovie优化动画显示;3) 成功开发Jarvis风格科幻动画和二次元表情扩展,为形象切换功能奠定基础。调试中解决了路径匹配、资源格式兼容等问题,下一步计划完善多格式支持和场景化形象切换功能。

2025-09-02 22:49:18 1237

原创 pyside6小项目:进制转换器

本文介绍了一个使用PySide6实现的单位转换器程序的代码分析与修正。原始代码存在三个主要问题:1)控件访问方式不一致,部分代码直接访问控件而非通过self.ui;2)bind()方法未被调用导致信号槽未连接;3)控件名称拼写错误。修正后的代码统一通过self.ui访问控件,正确调用bind()方法,并修正了拼写错误。程序实现了长度和重量单位之间的转换功能,包含数据字典初始化、UI控件设置和信号绑定等核心部分。关键修正包括统一控件访问路径、确保信号连接及名称拼写准确,最终使单位转换功能正常运行。

2025-09-01 23:18:08 451

原创 STL中的容器,迭代器

STL容器实现了常用数据结构(数组、链表、树等),分为序列式容器(元素有序)和关联式容器(二叉树结构)。迭代器作为容器与算法的桥梁,提供统一访问接口而不暴露内部细节。迭代器分为5类(输入/输出/前向/双向/随机访问),支持不同操作(如++、--、解引用等)。通过begin()/end()获取迭代器范围,使用统一语法遍历容器。迭代器的核心优势是提供与容器无关的一致接口,增强了代码复用性。例如vector<int>::iterator可遍历vector,类似指针操作(*it获取元素)。

2025-08-30 22:19:32 765

原创 Lambda 表达式在 PyQt/PySide 中的应用

在 PyQt/PySide 中,当信号(如clicked)与槽函数连接时,信号会自带一些参数。例如,clicked信号会传递一个布尔值表示按钮的选中状态。如果你直接这样连接:python那么当按钮被点击时,addNumber方法会接收到clicked信号的参数(一个布尔值),而不是你想要的数字 '1'。

2025-08-30 00:00:01 494

原创 QT鼠标事件中的QMouseEvent :e

该代码片段展示了Qt框架中鼠标事件处理机制。在mousePressEvent方法中,参数e是Qt框架自动创建的QMouseEvent类实例,当检测到鼠标左键按下时,框架会调用此方法并传入事件对象。开发者只需重写事件处理方法定义响应逻辑,无需自行创建事件对象或调用事件方法。这体现了Qt的事件驱动编程模型,框架负责事件检测和分发,开发者只需处理感兴趣的事件。

2025-08-27 21:10:52 493

原创 python命名规则(PEP 8 速查表),以及自定义属性

本文介绍了Python的命名规则和自定义属性的使用。主要内容包括:1)PEP 8命名规范(变量小写下划线、常量全大写、类驼峰式等);2)类实例可动态添加自定义属性(如dog.age=3);3)自定义属性的常见应用场景(GUI控件存储业务数据、临时缓存等);4)注意事项:拼写错误不会报错、可使用__slots__限制属性。文章通过代码示例展示了如何灵活使用自定义属性,同时提醒开发者注意潜在问题。

2025-08-26 20:29:37 232

原创 类型签名,位置参数,关键字参数

文章摘要: Python函数参数传递方式包括类型签名、位置参数和关键字参数。类型签名用于IDE提示和静态检查,位置参数必须按顺序传递,关键字参数需指定参数名。混合使用示例展示了如何通过"/"和"*"限定参数传递方式:/前为纯位置参数,*后为纯关键字参数,中间参数可混合传递。这些机制提高了代码可读性和调用灵活性。

2025-08-26 20:15:12 283

原创 PyCharm注释详解:TODO、文档注释、注释

PyCharm提供了三种实用的代码注释方式:1)TODO注释用于标记待完成任务(#TODO:内容),可通过TODO窗口集中管理;2)文档注释(三引号)自动生成函数说明框架,包含参数、返回值等结构化信息;3)块注释通过快捷键(Ctrl/Cmd+Shift+/)快速注释多行代码。这些功能分别对应代码任务管理、文档编写和调试注释场景,支持在设置中自定义自动生成行为,显著提升开发效率。

2025-08-26 11:08:37 1009

原创 在pycharmIDE中如何快速掌握一个新模块的使用方法

本文介绍了PyCharm中高效阅读和理解代码的实用技巧。主要包含四方面内容:1)文档查询方法,如悬停提示、快速文档、跳转定义等;2)交互式探索工具,包括Python Console和help()函数的使用;3)调试学习技巧,如断点调试、变量查看和structure视图;4)专属效率快捷键,如快速文档、跳转定义、表达式计算等。核心技巧是多用悬停文档(Ctrl+Q)、多跳源码(Ctrl+左键)以及善用调试器探索对象结构。这些方法能帮助开发者快速掌握代码结构和功能实现。

2025-08-21 14:03:01 732

原创 通用同步/异步收发器USART串口

摘要:STM32的USART(通用同步异步收发器)是一种全双工串行通信接口,支持异步(UART)和同步模式。其核心特性包括可编程波特率(最高4.5Mbps)、多种数据格式(5-9位数据位、校验位可选)、硬件流控(CTS/RTS)以及DMA支持。异步通信采用标准帧格式(起始位+数据位+校验位+停止位),通过TX/RX引脚实现数据传输。USART支持中断驱动和DMA传输,适用于调试输出、PC通信(需电平转换)以及连接各类串行设备模块。关键注意事项包括波特率匹配、错误处理和电平转换(连接RS-232设备需MAX3

2025-08-12 22:02:09 1342

原创 DMA直接存储器存储原理

摘要:DMA(直接内存访问)通过硬件控制器自动完成外设与内存间的数据搬运,解放CPU资源。其核心流程包括配置、触发、搬运和完成中断4个步骤,涉及源/目的地址、计数器等关键寄存器。STM32中DMA通过多通道管理不同外设请求,支持外设-内存、内存-内存等传输方向,提供单次/循环/双缓冲三种模式。典型应用包括ADC采集、UART通信等大数据传输场景。使用时需注意内存一致性、总线冲突等问题,合理配置通道和中断。DMA能显著提升系统效率,实现CPU与外设并行工作。(150字)

2025-08-10 20:02:39 1123

原创 ADC模数转换器和DAC数模转换器基础

本文介绍了模数转换(A/D)和数模转换(D/A)的基本原理与实现过程。A/D转换包含采样、量化和编码三个步骤,关键参数包括采样定理、量化台阶和编码位数;D/A转换则逆向进行解码、保持和平滑三个步骤。文章详细对比了A/D和D/A在分辨率、转换速率和误差源等方面的差异,并重点阐述了STM32 ADC的关键特性,包括分辨率、参考电压、通道配置、转换时间、触发源、工作模式等参数。最后提供了STM32 ADC的典型配置流程和常见应用场景,如传感器读取、电池监测和音频采集等。通过表格和公式直观展示了转换原理,为嵌入式系

2025-08-08 22:11:58 1319

原创 TIM编码器接口模式基础

STM32定时器(TIM)的编码器接口模块是专为增量式正交编码器设计的硬件功能,可自动跟踪编码器位置和方向。通过A相和B相信号的相位差判断转向,并支持4倍频计数提高分辨率。配置时需设置GPIO为输入模式,初始化TIM时基和编码器接口结构,特别注意溢出处理。硬件自动解码减轻CPU负担,适用于电机控制、机器人角度测量等高精度应用。关键优势包括实时性强、方向自动识别和4倍频精度,典型应用涵盖伺服电机、数控机床等旋转检测场景。

2025-08-06 21:29:58 1463

原创 TIM输入捕获和输出比较

本文介绍了STM32定时器(TIM)的两种常用模式:输入捕获和输出比较。输入捕获模式用于记录外部信号跳变的时间戳,通过捕获寄存器CCRn存储计数器值,可测量脉冲宽度、频率等参数。输出比较模式则是在计数器达到比较值CCRn时触发预设动作(如翻转/置位),用于生成精确延时、PWM或脉冲信号。文章对比了两种模式的工作方向、触发源和典型应用,并提供了配置代码示例,包括GPIO初始化、定时器时基设置和输出比较参数配置。输入捕获适用于信号测量,输出比较则用于信号生成。

2025-08-05 08:00:00 685

原创 PWM基础和高频通断电会导致的后果

摘要:PWM(脉冲宽度调制)通过调节占空比控制平均电压,广泛应用于电机调速、LED调光等场景。STM32利用定时器(TIM)硬件生成PWM信号,支持多通道输出,相比软件实现具有频率高、CPU占用低的优势。PWM核心参数包括频率、占空比和分辨率,由自动重装载值(ARR)和捕获比较寄存器(CCRx)控制。高频PWM可能导致电压尖峰等问题,可通过优化续流电路、PCB布局及选用耐压器件解决。

2025-08-03 20:41:18 4972

原创 STM32中的TIM (定时器)、RCC (复位和时钟控制) 以及外部时钟关系和作用

本文介绍了STM32微控制器的RCC(复位和时钟控制)、外部时钟源和定时器(TIM)的关键使用要点。首先强调RCC使能是定时器工作的前提条件,必须配置NVIC中断优先级和使能才能响应中断。在中断服务程序(ISR)中必须清除中断标志位以避免重复中断。使用外部时钟源时,计数频率由外部信号决定,但中断机制与内部时钟相同。文中建议理解底层寄存器操作有助深入开发,但使用STM32CubeMX和HAL/LL库可以简化配置过程,减少错误。

2025-08-01 18:30:00 561

原创 编程中双下划线(__)语法

C语言双下划线标识符使用规范摘要 C语言中双下划线(__)开头的标识符为编译器保留标识符,包括所有以双下划线开头/结尾或单下划线加大写字母的命名。这些标识符主要用于编译器内置宏(如__FILE__、__LINE__)、扩展属性(如__attribute__)和标准库内部实现,开发者应避免自定义此类标识符。正确使用场景包括条件编译(如头文件保护宏)、硬件特性访问和编写可移植代码时封装编译器扩展。核心准则是:应用开发者只读取不定义双下划线标识符,系统开发者谨慎使用,优先采用标准特性,并对编译器扩展进行明确文档说

2025-07-31 16:20:54 1205

原创 单片机零碎知识:电源符号,电源符号,volatile关键字,GPIO的四种输入模式

本文介绍了电子电路设计与嵌入式开发中的几个关键概念:1) 电源符号含义,包括VCC、VDD、VSS等不同电压标识的区别;2) 上拉/下拉电阻的作用机制,解释其如何通过电流注入/输出来稳定电路电平;3) volatile关键字的用途,说明其防止编译器优化的特性;4) GPIO的四种输入模式(浮空、上拉、下拉、模拟)及其适用场景。这些内容涵盖了数字电路设计的基础知识要点,对嵌入式系统开发具有重要参考价值。(149字)

2025-07-27 20:51:18 493

原创 c语言位操作符使用,源码补码理解

本文介绍了计算机中整数的二进制编码方式和位操作。源码、反码和补码是存储有符号整数的三种方式,其中补码是计算机实际使用的标准编码。正数的三种编码相同,而负数的补码等于反码加1。C语言中的位操作(与、或、异或、取反、移位等)都是基于补码进行的。文章还提供了几个典型位操作示例,如检查/设置/清除特定位、无临时变量交换数值等技巧。掌握补码和位操作有助于实现底层优化,但需注意避免对有符号数进行依赖符号位的操作。

2025-07-26 22:11:56 444

原创 STM32:GPIO点灯,流水灯学习

本文介绍了GPIO的四种工作模式:推挽输出(适合驱动LED/蜂鸣器)、开漏输出(用于I²C总线)、上拉输入(默认高电平)和下拉输入(默认低电平)。重点展示了LED初始化的步骤代码,强调时钟使能(RCC)是配置前提。通过LED闪烁和流水灯两个示例,演示了GPIO输出控制的基本应用,其中流水灯采用位操作依次点亮多个LED。代码注释详细说明了关键配置点,为嵌入式GPIO开发提供了实用参考。

2025-07-25 21:01:37 349

原创 STM32:GPIO基础理论

这段代码展示了STM32 GPIO端口的配置及操作过程。首先将GPIOA的5号引脚设置为推挽输出模式(01),并选择高速(50MHz)工作模式。通过GPIOx_BSRR寄存器进行原子操作,使用BS5位设置高电平点亮LED,BR5位设置低电平熄灭LED。这种操作方式避免了中断干扰,确保了电平变化的可靠性。代码清晰地演示了STM32中GPIO的基本配置方法和电平控制技巧。

2025-07-23 20:51:38 393

原创 51单片机IIC通信基础了解

本文介绍了I2C总线通信的时序实现方法,重点说明了START条件和1位数据传输的代码实现。发送START条件时,需先置高SDA和SCL,延迟后拉低SDA产生起始信号;数据传输时,先将数据位准备好,通过SCL上升沿触发从机采样,并保持足够的高电平时间。代码中通过I2C_Delay()函数确保满足时序要求,包括起始信号建立时间(t_SU_STA)和保持时间(t_HD_STA)等关键参数。

2025-07-21 21:41:13 249

原创 51单片机WIFI通信模块基础

本文介绍了ESP8266 WiFi模块的基础配置与TCP通信实现方法。主要包括:1) 基础配置流程(模块重启、STA模式设置、路由器连接);2) 数据收发机制(TCP客户端连接、数据发送格式、接收数据解析);3) 关键代码实现,包括AT指令发送函数和TCP通信初始化函数。文章重点说明了透传模式的使用方法,可直接发送数据而不需指定长度,适用于需要稳定可靠传输的应用场景。代码示例展示了如何建立TCP连接并通过串口发送数据,为物联网设备开发提供了基础通信框架。

2025-07-19 20:08:22 344

原创 51单片机串口通信基础

本文介绍了51单片机串口通信的实现方法。通过初始化定时器1设置波特率(9600@11.0592MHz),配置串口为模式1(8位UART)并启用接收功能。程序包含发送单字节和字符串的函数,以及串口中断服务程序实现数据接收与回传功能。关键点包括波特率设置、中断使能以及发送/接收标志位的处理。该实现可用于单片机与上位机的基本串口通信。

2025-07-18 20:52:13 214

原创 定时器基础理论

【代码】定时器基础理论。

2025-07-16 22:35:21 127

原创 51单片机外部中断控制理论基础

【代码】51单片机外部中断控制理论基础。

2025-07-15 22:26:02 348

原创 零基础学习单片机的预备知识

零基础学单片机预备知识。

2025-07-13 21:44:07 102

原创 51单片机闪烁led灯实验中关键字sbit的初步理解

本文介绍了8051单片机控制LED闪烁的代码实现。通过sbit关键字将P1.0和P1.2引脚分别定义为LED1和LED3,方便直接控制引脚电平。主程序采用while循环,交替设置LED1和LED3的电平状态(1/0),配合延时函数实现两LED的交替闪烁效果。代码简洁地展示了如何使用特殊功能位控制I/O端口实现基本外设驱动。

2025-07-12 18:04:59 366

空空如也

空空如也

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

TA关注的人

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