主题中讨论的其他部件: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
}
