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**** 2502205 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/665803/ccs-msp430g2553-trying-to-find-the-time-between-max-pulses-so-i-can-caluculate-heart-beats-per-minute

部件号: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
} 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    这是您就同一主题发表的第三篇文章。 请避免发布多个帖子,以避免重复工作。

    此致,
    拉斐尔

    其他员额:
    e2e.ti.com/.../66.5463万
    e2e.ti.com/.../66.4311万
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是什么让您认为该代码将执行您想要执行的操作?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    下面只是骨架,但应该能让你继续前进。

    *初始化计时器并将时钟源设置为已知的值(例如 3.2678万Hz)。
    *清除定时器计数器;
    *循环从此处开始:
    **如果(值> 470){
    ***读取计时器计数器并转换为时间。 这是任意两次心搏之间的周期(从这一点可以很容易地计算BPM)
    ***清除计时器计数器。
    **}
    *回放