This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP430G2553:计算每分钟心搏数

Guru**** 2502065 points
Other Parts Discussed in Thread: MSP430G2253

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/665463/ccs-msp430g2553-calculating-heart-beats-per-minute

部件号:MSP430G2553
主题中讨论的其他部件:MSP430G2253

工具/软件:Code Composer Studio

我有一个代码,从心跳传感器获得10个脉冲,并将它们平均出来。 有人能给我一些示例代码吗/帮助我找到一种计算每分钟心跳数的方法吗(当没有人接触时,您可以假定脉搏传感器的默认值大约为470)。 如果你能给我写一些非常简单的每分钟心跳代码,它会给我很大帮助。 谢谢!

包含"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;//禁用转换
while (ADC10CTL1和BUSY);//如果ADC10正忙,请等待
ADC10SA =(int) ADC;//将数据传输到下一个阵列(DTC自动递增地址)
ADC10CTL0 |= ENC + ADC10SC;//启用转换和转换开始
__bis_sr_register (CPUOFF + GIE);//低功率模式0,ADC10_ISR
}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    
    

    "如果你能给我写一些非常简单的每分钟心跳代码,"

    这就是你所需要的一切

    bpm =心搏/测量持续时间_分钟;//计算bpm 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢,但这就是我已经拥有的。 我正在尝试找到一种计算心跳和持续时间的方法。 我需要找到最大脉冲,因为这些脉冲表示心跳。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    您使用的是什么传感器? 您能否提供有关预期脉冲的更多信息?

    此外,您能否澄清您正在尝试做什么? 您说过您正在寻找每分钟听到的节拍。 为此,正如Danny所说,您只需按持续时间设置脉冲数。

    此致,
    Nathan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我正在使用的脉冲传感器是:  

    预期的脉冲应在700s中有一个模拟值。 当没有人接触脉冲传感器时,模拟值约为500。  

    我尝试测量每分钟的心跳,从传感器获得脉冲,但只有峰代表心跳,所以我需要找出峰值之间的时间,而不仅仅是脉冲。 希望这会有所帮助。 谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    下面只是骨架,但应该能让你继续前进。

    *初始化计时器并将时钟源设置为已知的值(例如 3.2678万Hz)。
    *清除定时器计数器;
    *循环从此处开始:
    **如果(值> 470){
    ***读取计时器计数器并转换为时间。 这是任意两次心搏之间的周期(从这一点可以很容易地计算BPM)
    ***清除计时器计数器。
    **}
    *回放
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    请参阅Mike的示例,但同时请注意,如果您确切知道传感器产生脉冲的速率,则可能不需要使用计时器。 例如,如果您发现每5个脉冲都是一个心跳,那么您就知道两个心跳之间的时间是传感器产生的两个脉冲之间时间的5倍。

    此致,
    Nathan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果输出是脉率的模拟信号原型,您只需要对其进行ADC,就可以了。

    但是,很难对其进行校准。