自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STM32手表Dnio代码

本文详细解析了一个基于STM32的Dino游戏嵌入式实现方案,展示了教科书级的开发技巧。代码采用结构体边界框实现碰撞检测(AABB算法),通过静态变量计数控制游戏节奏,利用正弦函数模拟跳跃轨迹,并实现无缝循环的地面滚动效果。关键设计包括:8位坐标适配OLED屏幕、255边界处理确保内存安全、143像素障碍物重置点、28像素正弦跳跃高度以及模块化的定时更新机制。该实现完美规避了嵌入式开发常见陷阱,如内存泄漏、浮点精度丢失和碰撞逻辑错误,展现了硬件约束下的优化艺术,堪称STM32游戏开发的典范案例。(15

2026-01-11 19:15:49 1042

原创 STM32手表SetTime.c AD.c

本文介绍了基于STM32的RTC时间设置与ADC初始化的关键实现。RTC部分采用分页式UI设计,通过Show_SetTime_FirstUI和Show_SetTime_SecondUI分别显示日期和时间,配合Change_RTC_Time函数实现时间修改。ADC初始化部分详细说明了时钟配置、GPIO设置、规则组通道配置和校准流程,重点强调了单次转换模式下的正确参数设置。文章指出RTC时间修改缺少边界检查的隐患,并分析了ADC初始化中各参数的理论依据与实际效果,为嵌入式系统的时间管理和模拟信号采集提供了实用参

2026-01-11 16:24:20 820

原创 STM32手表Key.c部分

该代码实现了一个基于STM32的按键驱动系统,主要功能包括:1. 硬件初始化(Key_Init):配置GPIO为上拉输入模式,开启时钟;2. 状态检测(Key_GetState):支持4种按键状态(短按1/2/3和长按4);3. 防抖处理(Key_Tick):采用20ms扫描周期消除抖动;4. 长按检测(Key3_Tick):通过1ms定时器累计按压时间;5. 事件队列(Key_GetNum):松手时触发事件,避免主循环阻塞。核心设计采用状态机机制,通过static变量保存状态,实现精准可靠的按键检测。

2026-01-11 12:06:51 870 1

原创 STM32手表主函数与Timer_Init,OLED_Clear()

该代码实现了一个基于STM32的嵌入式系统,通过定时器中断和状态机设计实现多任务管理。系统采用1ms定时中断触发按键扫描、时钟更新等任务,主循环通过状态标志clkflag1实现页面切换。关键设计包括:1) 定时器精确配置为1ms周期(720分频+100计数);2) 中断安全机制(begin_flag防止启动误触发);3) 显存管理(OLED_Clear避免花屏)。工程价值体现在:降低CPU占用率(<5%)、确保实时响应(按键延迟<5ms)、通过硬件级优化避免常见故障(如定时器周期误差、显存花屏等

2026-01-11 01:00:31 676

原创 STM32手表OLED_Init

OLED初始化流程解析:该代码展示了OLED显示屏的初始化过程,主要包括三个关键步骤:1)硬件准备(GPIO初始化);2)寄存器配置(显示关闭、时钟分频、对比度等参数设置);3)显示控制(清屏、开启显示)。初始化采用"关闭显示→配置→开启显示"的安全顺序,避免花屏现象。特别值得注意的是I²C引脚必须配置为开漏模式(Out_OD)并配合50MHz高速输出,确保通信可靠性。初始化末尾的清屏操作可消除显存残留数据,保证显示纯净度。整个过程体现了嵌入式开发中硬件初始化的典型模式和注意事项。

2026-01-10 01:11:41 1070

原创 基于电赛小车串口函数的思考

这个函数就是“给小车装对讲机”,配置好“话筒”(PA9)和“听筒”(PA10),设置好“说话速度”(115200波特率),然后打开开关,小车就能和电脑“聊天”了!记住:串口通信是调试和控制的重要手段,装好对讲机,小车才能听指挥!void Serial_SendByte(uint8_t Byte) //发送一个字节这个函数就是“小车说一个字”,先把字放进去,然后等说完再继续,保证每个字都传给电脑!记住等待是必须的,就像说话要一个字一个字说,不能“抢话”,否则电脑会“听不清”!

2025-10-29 22:50:26 931

原创 基于电赛小车的PID思考

文章摘要:本文详细解析了PID控制器的实现原理,包括速度控制(PID_V)和位置控制(PID_A)两种模式。速度控制采用增量式PID算法,输出PWM变化量;位置控制采用位置式PID算法,输出目标速度绝对值。文中通过生动的汽车驾驶类比,解释了比例、积分、微分三个参数的作用机制,并对比了两种控制方式的区别。同时介绍了目标值设置函数(Set_PID_Target)的实现方法,以及如何在控制系统中配合使用速度环和位置环实现精确控制。文章还强调了PID初始化的重要性,包括参数清零、积分限幅等安全机制的设计考虑。

2025-10-28 13:28:50 905

原创 基于STM32对Motor部分代码笔记思考及问题(Motor)

该代码实现了基于STM32的PWM电机控制功能。通过TIM1高级定时器配置,使用PA8(TIM1_CH1)和PA11(TIM1_CH4)输出36kHz的PWM信号,周期设置为2000。GPIOB的PB12-15用于控制电机转向,其中PB12-13控制左轮,PB14-15控制右轮。Set_PWM_Left/Right函数根据输入值正负决定电机转向,并通过TIM_SetCompare1/4设置PWM占空比。值得注意的是当前GPIOB配置为输入模式是错误的,应改为推挽输出模式。整个系统可实现双路电机速度和方向控制

2025-10-24 22:41:23 825

原创 STM32HAL库平衡车Motor,Encoder代码笔记及问题思考

该代码来源于b站“草履虫都会的平衡小车”,算是对里面代码的一个总结。实现了一个基于STM32 HAL库的双电机控制系统,主要包含电机驱动和编码器反馈两部分。电机驱动部分通过PWM和GPIO分别控制两个电机的速度和方向,速度范围限制在-7200~7200之间,正负值对应不同转向。编码器部分通过定时器读取脉冲数来获取电机转速信息。系统采用模块化设计,包含限幅保护、方向控制、PWM输出等功能,确保电机运行的可靠性和安全性。

2025-10-22 20:55:52 819

原创 基于STM32对编码器的部分代码笔记思考及问题(Encoder)

本文详细解析了STM32编码器接口的初始化与读取函数实现。代码分析表明,Encoder_Init()函数通过配置GPIO引脚为上拉输入模式,设置TIM2/TIM3定时器为编码器接口模式,并初始化相关参数结构体。Get_Encoder()函数则负责读取编码器计数值并进行方向统一处理,通过取反操作确保左右轮编码器在正转时返回相同符号,便于后续运动控制。这种设计既保证了编码器数据读取的实时性,又简化了运动控制算法的实现。关键点包括:定时器清零机制确保增量数据准确、符号统一处理简化方向判断、四倍频解码提高分辨率。

2025-10-22 20:24:52 1000

原创 STM32HAL库通用定时器学后笔记

宏的作用是使能定时器通道的输出比较预装载功能,它通过设置CCMR寄存器的对应位来实现。这个功能确保了PWM占空比的改变在下一个周期开始时生效,而不是在当前周期中突然改变,从而避免了输出波形的毛刺,是实现高质量PWM输出的必要步骤。在STM32的PWM应用中,这个宏的正确使用对于系统的稳定性和性能至关重要。理解这个宏的工作原理,有助于开发者编写更健壮、更高质量的PWM控制代码。捕获/比较通道的输入部分通用定时器输入捕获实验配置步骤相关HAL库函数介绍TIM_IC_InitTypeDef结构体。

2025-10-22 17:27:58 1271

空空如也

空空如也

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

TA关注的人

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