STM32 PulseSensor心跳传感器驱动代码

STM32CubeMX中准备工作:

1、设置AD 通道,我采用的是DMA传输,格式:halfword,半字节即uint_16

2、设置一个定时器中断,间隔时间2ms,我这里采用的是定时器7

3、代码优化01

PulseSensor.c文件

#include "main.h"
#include "PulseSensor/PulseSensor.h"

/******************外设部分用变量*********************/
//定时器间隔时间:2ms
volatile  uint8_t DelayPulseSensor_Output=0;  //500ms   
//AD采样值
volatile  uint16_t ADPulseSensor;            // ADC转换值,设置为halfword 半字节格式 采样时间为239.5周期

/******************心率算法采集部分*********************/
_Bool ReadHeartRateFlag = 0;				        //读取到正确心率标志位

uint16_t BPM;                   		    //脉搏率==就是心率
uint16_t Signal;               		    //传入的原始数据。
uint16_t IBI = 600;            		    //节拍间隔,两次节拍之间的时间(ms)。计算:60/IBI(s)=心率(BPM)
_Bool Pulse = false;     //脉冲高低标志。当脉波高时为真,低时为假。
_Bool QS = false;        //当发现一个节拍时,就变成了真实
uint16_t rate[10];                    //数组保存最后10个IBI值。
uint32_t sampleCounter = 0; //用于确定脉冲定时。
uint32_t lastBeatTime = 0;  //用于查找IBI
uint16_t P =512;                      //用于在脉冲波中寻找峰值
uint16_t T = 512;                     //用于在脉冲波中寻找波谷
uint16_t thresh = 512;                //用来寻找瞬间的心跳
uint16_t amp = 100;                   //用于保持脉冲波形的振幅
uint16_t Num;
_Bool firstBeat = true;  //第一个脉冲节拍
_Bool secondBeat = false;//
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

河湾边的一亩三分地

来点实在的鼓励吧。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值