基于stm32的脉搏血氧仪设计
目录一、设计概述 1二、设计方案 21、设计任务 21.对传感器输出的模拟信号进行AD转换 22.在屏幕显示脉搏波形 23.测量并显示心率与体温 24.可与上位机通过USB接口通信 25.按键与屏幕多级菜单设计进行人机交互 26.自动检测设备连接状态 27.数据通过ESP01S上传到服务器实现远程监测 22、设计思路 2三、 硬件电路设计 3四、 系统程序设计 4五、 传感器简介 81、Pulse sensor 8图四 Pulse Sensor传感器 92、NTC负温度系数热敏电阻 9图五 NTC电阻温度曲线 93、MAX30102血氧模块 9图六 MAX30102模块 10六、成果展示 10图七 总装配图 11图八 脉搏波测量 11七、调试中出现问题的解决 121、调试遇到的问题 122、问题的解决 12八、收获体会 13九、器件明细清单 14参 考 文 献 15二、设计方案1、设计任务1.对传感器输出的模拟信号进行AD转换2.在屏幕显示脉搏波形3.测量并显示心率与体温4.可与上位机通过USB接口通信5.按键与屏幕多级菜单设计进行人机交互按键向上向下返回确定6.自动检测设备连接状态7.数据通过ESP01S上传到服务器实现远程监测2、设计思路1.采用stm32固件库开发2.对脉搏传感器输出的模拟信号进行AD转换采样频率100次每秒3.转化结果采用DMA传输避免频繁进入中断4.开启两个串口USART1用来调试USART2用来发送HTTP报文5.电源采用可充电电池供电6.采用查表法与线性插值法获取温度7.按键与LCD液晶屏多级菜单设计进行人机交互按键采用外部中断向上向下返回确定屏幕显示体温血氧浓度脉搏波波形四、系统程序设计1、程序设计思想毕业设计所需功能较为简单无需操作系统使用裸机编程足够应对需求。故采用裸机编程方式。裸机系统通常分成轮询系统和前后台系统。轮询系统即是在裸机编程的时候先初始化好相关的硬件然后让主程序在一个死循环里面不断循环顺序地做各种事情。轮询系统是一种非常简单的软件结构通常只适用于那些只需要顺序执行代码且不需要外部事件来驱动 的就能完成的事情。例如只是实现 LED 翻转串口输出液晶显示等 这些操作那么使用轮询系统将会非常完美。本文转载自http://www.biyezuopin.vip/onews.asp?id14972但是如果加入了按键操作等需要检测外部 信号的事件用来模拟紧急报警那么整个系统的实时响应能力就不会那么好了。故轮询系统只适合顺序执行的功能代码当有外部事件驱动时实时性就会降低。1 int main(void) 2 { 3 /* 硬件相关初始化 */ 4 HardWareInit(); 5 6 /* 无限循环 */ 7 for (;;) { 8 /* 处理事情 1 */ 9 DoSomething1(); 10 /* 处理事情 2 */ 11 DoSomething2(); 12 /* 处理事情 3 */ 13 DoSomething3(); 14 } 15 }相比轮询系统前后台系统是在轮询系统的基础上加入了中断。外部事件的响应在中断里面完成事件的处理还是回到轮询系统中完成中断在这里我们称为前台main 函数 里面的无限循环我们称为后台在顺序执行后台程序的时候如果有中断来临那么中断会打断后台程序的正常执行流转而去执行中断服务程序在中断服务程序里面标记事件如果事件要处理的事情很简短则可在中断服务程序里面处理如果事件要处理的事情比较多则返回到后台程序里面处理。虽然事件的响应和处理是分开了但是事件的处理还是在后台里面顺序执行的但相比轮询系统前后台系统确保了事件不会丢失再加上中断具有可嵌套的功能这可以大大的提高程序的实时响应能力。在大多数的中小型项目中前后台系统运用的好堪称有操作系统的效果。1 int flag1 0; 2 int flag2 0; 3 4 int main(void) 5 { 6 /* 硬件相关初始化 */ 7 HardWareInit(); 8 9 /* 无限循环 */ 10 for (;;) { 11 if (flag1) { 12 /* 处理事情 1 */ 13 DoSomething1(); 14 } 15 16 if (flag2) { 17 /* 处理事情 2 */ 18 DoSomething2(); 19 } 20 21 } 22 }尽管前后台系统利用中断一定程度上提升了轮询系统的实时性但它并不完美。因为它将所有有可能要做的任务在死循环中无差别循环执行CPU不停歇工作而这些工作很多是不必要的。相比前后台系统中后台顺序执行的程序主体在多任务系统中根据程序的功能我 们把这个程序主体分割成一个个独立的无限循环且不能返回的小程序这个小程序我们 称之为任务。每个任务都是独立的互不干扰的所以相比前后台系统多任务系统的事件响应也是在中断中完成的但是事件的处理是在任务中完成的。在多任务系统中任务跟中断一样也具有优先级优先级高的任务会被优先执行。当一个紧急的事件在中断被标记之后如果事件对应的任务的优先级足够高就会立马得到响应。相比前后台系统多任务系统的实时性又被提高了。1 void DoSomething1(void) 2 { 3 /* 无限循环不能返回 */ 4 for (;;) { 5 / * 任务实体 */ 6 if (flag1) { 7 8 } 9 } 10 } 11 12 void DoSomething2(void) 13 { 14 /* 无限循环不能返回 */ 15 for (;;) { 16 /* 任务实体 */ 17 if (flag2) { 18 19 } 20 } 21 }

相关新闻

基于Dev-C++与SDL的水下迷宫游戏开发:从项目结构到核心机制解析

基于Dev-C++与SDL的水下迷宫游戏开发:从项目结构到核心机制解析

1. 项目概述:从零到一的水下迷宫探险最近在整理硬盘时,翻出了一个多年前用Dev-C和SDL库捣鼓出来的“水下迷宫游戏”项目包。这可不是一个简单的教学Demo,而是一个功能相对完整、包含了地图编辑器、关卡系统、音效和粒子效果的“准产品级”小游…

2026/10/20 16:30:31 阅读更多 →
如何在Windows上免费运行iPhone应用:ipasim跨平台iOS模拟器完整指南

如何在Windows上免费运行iPhone应用:ipasim跨平台iOS模拟器完整指南

如何在Windows上免费运行iPhone应用:ipasim跨平台iOS模拟器完整指南 【免费下载链接】ipasim iOS emulator for Windows 项目地址: https://gitcode.com/gh_mirrors/ip/ipasim 你是否曾经想过在Windows电脑上体验iOS应用?现在,通过ipa…

2026/10/18 4:39:50 阅读更多 →
如何看待 OpenAI Codex:从技术原理到行业影响

如何看待 OpenAI Codex:从技术原理到行业影响

引言:Codex 是什么? OpenAI Codex 是 OpenAI 于 2021 年发布的一个大型语言模型,专门针对代码生成和理解进行训练。它基于 GPT-3 架构,但在海量的公开源代码(如 GitHub 上的项目)上进行了微调,使…

2026/10/17 2:46:18 阅读更多 →

最新新闻

Python+MySQL学生管理系统:可视化界面落地与避坑指南

Python+MySQL学生管理系统:可视化界面落地与避坑指南

简介:这是一套面向Python与数据库初学者的学生管理系统实战项目,采用Python编写客户端逻辑、MySQL负责数据存储,适合正在学习桌面应用开发或需要完成课程设计的学生参考。压缩包共2个文件,包含1个py主程序与1个sql数据库脚本&…

2026/10/20 17:19:49 阅读更多 →
MySQL反斜杠转义全解析:从字符串插入到LIKE查询的避坑指南

MySQL反斜杠转义全解析:从字符串插入到LIKE查询的避坑指南

先交代一个真实翻车现场。有天业务方发来一张截图,某张配置表里的 Windows 路径字段,原本应该是C:\Users\某应用目录\data\config.ini,结果库里存成了C:Users某应用目录dataconfig.ini,所有反斜杠集体失踪。我一开始以为是应用层写…

2026/10/20 17:19:49 阅读更多 →
电商评论情感分析实战:从数据清洗到BERT蒸馏部署全记录

电商评论情感分析实战:从数据清洗到BERT蒸馏部署全记录

这个项目标题一看就是从实战里踩出来的,数据坑、部署、硬核笔记,说明作者真刀真枪跑过完整链路,不是拿公开数据集跑个demo就完事。文本分类和情感分析在NLP里属于入门必练但做好极难的方向,难就难在数据永远是脏的、标签永远是偏的…

2026/10/20 17:19:49 阅读更多 →
TensorFlow工业级AI工程实践:从计算图到TFX流水线

TensorFlow工业级AI工程实践:从计算图到TFX流水线

1. 这不是“学个框架”那么简单:TensorFlow到底在解决什么问题?很多人第一次听说TensorFlow,是在某次技术分享会上听到“谷歌开源的深度学习框架”,或者在招聘JD里看到“熟悉TensorFlow者优先”。但如果你真去翻它的GitHub仓库、读…

2026/10/20 17:19:49 阅读更多 →
双线性插值原理与C语言实现:图像缩放算法详解

双线性插值原理与C语言实现:图像缩放算法详解

简介:这份资源围绕双线性插值方法及实现展开,面向图像处理、计算机图形学与数值计算方向的学习者,尤其适合希望用C语言理解插值数学原理并动手实现的开发者。包内共31个文件,以h头文件、cpp源文件、obj目标文件为主,辅…

2026/10/20 17:19:49 阅读更多 →
Prescan+Simulink+CarSim联仿:多工况自动驾驶避障模型搭建与标定实战

Prescan+Simulink+CarSim联仿:多工况自动驾驶避障模型搭建与标定实战

做自动驾驶避障仿真的人,迟早会跟三个名字绑在一起:Prescan、Simulink、CarSim。标题里那套“不同工况避障模型”,说白了就是让一辆装有虚拟传感器的车,在模拟道路环境里遇到静止车、前车急减速、旁边车道突然切进来、行人横穿这些…

2026/10/20 17:18:48 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

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

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

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

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

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

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/20 9:50:45 阅读更多 →