请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP430G2553 工具/软件:Code Composer Studio
此代码成功地从脉冲传感器获得10个脉冲读数,但我正在尝试编写代码,以查找最大/峰值脉冲之间的时间,从而可以计算每分钟的心跳数。 有人能帮我写吗
这个代码,因为我真的在挣扎。 当没有人接触传感器时,脉冲传感器会给出大约500的模拟值,但当有人接触传感器时,峰值约为700,这表示心搏。
有人能帮我写这个代码吗?
#include "msp430g2253.h"
//变量
int ADC[50]={0};//设置10个整数的数组,值
为零int avg_adc = 0;
//函数原型
void ADC_Setup();
void ADC_Sam10();
void main()
{
WDTCTL = WDTPW + WDTHOLD; //停止WDT
ADC_Setup(); //为ADC_setup发出的fucnion调用
同时(1)
{
长适配器= 0;
ADC_Sam10 (); // ADC_SAMP的功能调用
//将所有抽样数据相加,然后除以10,得出平均值
INT I = 0;
对于(i = 0;i <= 49;I++){
adctot = adctot + adc[i];
}
AVG_ADC = adctot/50;
}
}//
ADC10中断服务例程
#pragma vector=ADC10_vector
__interrupt void ADC10_ISR(void)
{__BIC_SR_REGISTER_ON_EXIT(CPUOFF);
//从0(SR)清除CPUOFF位
}//
ADC设置函数
void ADC_Setup()
{
ADC10CTL1 = CONSEQ_2 + Inch_0; //重复单通道,A0
ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE;//采样和保持时间+ ADC10开启+中断启用
ADC10DTC1 = 0x32; //1000个转换
ADC10AE0 |= 0x01; // WFP 1.0 ADC选项选择
}//
ADC样本转换函数
void ADC_Sam10()
{
ADC10CTL0 &=~ENC; //禁用转换
当(ADC10CTL1和占线); //如果ADC10正忙,请等待
ADC10SA =(内部) ADC; //将数据传输到下一个阵列(DTC自动递增地址)
ADC10CTL0 |= ENC + ADC10SC; //启用转换和转换开始
__bis_sr_register(CPUOFF + GIE);//低功率模式0,ADC10_ISR
}