桌面宠物项目复盘
前语该项目适合学完stm32标准库之后进行的复习大部分都是模块的堆叠。不过作为练手项目还是挺不错的。项目来自嘉立创开源广场Sngels_wyh成品展示一.首先是电路图复盘完整电路图如上图所示先来看一下整体思路1.舵机需要pwm信号进行驱动所以定时器2的4个通道包括定时器3的通道1全部用于发送pwm信号驱动舵机此外舵机还需要5V电压进行供电。此桌面宠物还有LED呼吸灯所以定时器3的通道34输出pwm给LED供电并串联电阻进行限流。3.OLED屏幕为4引脚需要使用I2C进行通信软件模拟I2C,无需使用硬件I2C语音模块和蓝牙模块则需使用串口通信可以参考下图辅助理解4.PA4引脚为AD通道4引脚可以用于检测电压R9,R10,R11为分压电阻R12为采样电阻PA4检测的带电压就是R12分到的电压由于语音模块对电源稳定性要求较高所以还需对流入模块电源进行滤波所以电路图加了两个电容还有一个pai型滤波。其余部分都比较简单就不多阐述二.软件部分大致流程动起来-能控制-配置OLED屏幕-进行功能整合现在从0开始重新敲桌面宠物的代码创建项目的流程我就不多阐述了第一步是配置PWM因为有五个舵机和4个LED所以需要使用两个定时器这里我们使用定时器2和定时器3定时器2的所有通道和定时器3的通道1分别给5个舵机提供PWM信号定时器3的通道34分别给4个LED供电1.PWM配置流程开启时钟-配置GPIO口-配置定时器-定时器通道配置-使能定时器为了缓解软件压力LED呼吸灯这种重复简单的操作就交给定时器中断实现所以上述流程还需加一个开启定时器3的中断。5960行写错了改为TIM_OC3Init(TIM3,TIM_OCInitStructure);//开启TIM3通道3 TIM_OC4Init(TIM3,TIM_OCInitStructure);//开启TIM3通道4上面是完整代码定时器频率的计算公式为频率 主频 / 分频1 / 重装值1目前的频率为72000000 / 72 / 20000 50Hz20ms注意中断开启后一定要写中断函数不然程序会跑飞暂时不想写可以把TIM3中断部分注释掉TIM3的定时中断放在主函数存放后面写完LED呼吸灯的时候再添加之后再写6个用于设置CRR的函数方便外部调用和辨别对于CRR不清楚的可以去看手册之后再.h文件声明一下就可以进行下一步了2.舵机控制这个就是将PWM的函数进行包装方便我们进行使用右前右后的角度反向是为了与左边舵机的角度统一方便我们写代码舵机的驱动依赖PWM信号的占空比在周期为20ms的信号中高电平宽度0.5ms~2.5ms对应舵机的0~180°。定时器设置的周期就是20ms也就是说在给CCR寄存器的数字500~2500中对应着舵机的0~180°而且是线性分布。这就是上面算式的由来3.蓝牙通信我们用的这个蓝牙模块本质上就是蓝牙转串口至于蓝牙是怎么接收到手机发的信号的你别管。配置这个模块的流程跟配置串口通信的流程是一样的因为语音模块也是使用串口通信在这里就一起配置了。流程开启时钟-配置GPIO-配置串口-开启串口中断-配置中断-开启中断与时钟然后再加上两个外部中断函数然后就可以测试一下之前写的功能了蓝牙调试器可以去Sngels_wyh博主分享的电子狗资料包里面找最好每做完一个功能都要测试一下方便及时更改错误4.动作的设置与执行重新建一个文件里面用于包装动作与动作的执行因为中断里要尽量避免耗时操作所以动作的执行不能放在中断里面。除此之外还需要一个变量来确认执行什么动作所以还需创建一个文件来放置可供别的文件调用的变量且方便链接各个模块。目前只加上了基础动作其他动作可以自己研究加入最下面的是动作执行判断代码直接放在main的循环里面持续判断即可对于蓝牙控制部分蓝牙通过改变Action_Mode的值来控制电子狗的动作这个文件用来创建可供外部调用的变量可以通过这些变量来链接各个文件就比如蓝牙模块通过改变Action_Mode的值来控制PecAction的动作执行同时也方便我们对某项值的更改就例如运动速度的更改。到这里我们的电子宠物就能动起来了5.LED呼吸灯配置因为LED的初始化已经在PWM.c里面写好了这里只需要写驱动就行了如果注释了TIM3的定时中断记得去取消注释这部分也是比较简单的后续可以将这些变量也加入蓝牙中断当中从而实现控制LED呼吸灯由于步骤和上面的一样我就不一一演示了。6.OLED屏幕部分这个是直接使用了B站江协科技老师的代码因内容过多具体请看江协科技老师的视频这里只展示表情切换部分表情的像素数据存放在OLED_Data.c里面将Face_Config()放进mian函数的while循环里面之后再往蓝牙和语音模块的中断里面补控制表情的代码就搞定了。7.电量检测这个功能需要用到ADC功能所以需要配置AD流程开启时钟-配置串口-配置AD-开启AD-校准AD知识点复习分频器有2468分频主频为72MHz,但ADCCLK最大为14MHz所以只能使用68分频其他分频都会超过ADCCLK的最大限制。AD包装和电量显示部分注电量处理部分CurBattery120中120给的太大了实际测试中电压达不到120所以给110就可以了之后将电量显示的开关也加到蓝牙中断和语音中断里面就大功告成了补个变量表所有控制都是通过这些变量实现的8.结语到这里整个桌面宠物项目的核心功能已经全部跑通。回顾整个实现流程大致可以概括为先完成电路图复盘理清舵机、LED、OLED、语音和蓝牙等模块的供电与通信关系再进入软件部分从 PWM 配置开始逐步完成舵机控制、蓝牙通信、动作设置与执行、LED 呼吸灯、OLED 表情显示以及电量检测最后通过变量表把各个模块串联起来实现一个能听指令、会做动作、能显示表情的桌面宠物。总的来说这个项目虽然不算复杂但麻雀虽小五脏俱全通过它可以把 STM32 的定时器、PWM、串口、I2C、ADC、中断等常用外设都复习一遍非常适合作为学完标准库之后的练手项目。

相关新闻

Qucs-S电路仿真器:开源SPICE仿真内核的图形化前端与工程实践指南

Qucs-S电路仿真器:开源SPICE仿真内核的图形化前端与工程实践指南

简介:本资源是开源电路仿真平台Qucs-S的完整源码与配套文件包,面向电子工程专业师生、电路设计爱好者及嵌入式开发者,解决多内核电路仿真缺乏统一可视化界面的痛点。资源共1784个文件,涵盖362个C核心源码(cpp&#xff…

2026/11/9 10:19:55 阅读更多 →
STM32温湿度报警系统:DHT11与DS18B20传感器驱动与项目实战

STM32温湿度报警系统:DHT11与DS18B20传感器驱动与项目实战

简介:这是一套基于STM32F1系列单片机的嵌入式温湿度采集与报警系统完整软件工程,面向嵌入式初学者、课程设计学生及电子竞赛备赛者,解决多传感器协同采集、数据转换、阈值报警与LCD界面显示等典型实践问题。资源包共203个文件,涵盖…

2026/11/11 5:13:13 阅读更多 →
Java内容安全风控实战:基于规则引擎与语义模型识别隐晦违规文本

Java内容安全风控实战:基于规则引擎与语义模型识别隐晦违规文本

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/10 16:10:03 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/13 5:13:25 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/13 5:13:25 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/13 5:13:25 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/12 18:22:26 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/12 18:22:25 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/13 5:13:25 阅读更多 →

日新闻

周新闻

月新闻