工具/软件:Code Composer Studio
您好!
所以我尝试使用一个心跳传感器和一个加速计(MPU-6050)来连接MSP430G2553。
我想合并这两个代码,但我在理解代码时遇到了困难。 我查找了变量名称,描述只是告诉我变量的全名。 是否有地方我可以获得文档来了解这些内容?
加速计必须是WFP 1.6 和WFP 1.7
心跳传感器必须是WFP 1.0 到WFP 1.5
心跳传感器的代码如下所示:
#include "msp430g2253.h"
//变量
int ADC[50]={0};//设置10个整数的数组,值为零
int avg_ADC = 0;
//函数原型
void ADC_Setup();
void ADC_Sam10();
void main()
{
WDTCTL = WDTPW + WDTHOLD;//停止WDT_Setup()
; // ADC_setup的函数调用
,同时(1){
长adctot =0;
ADC_Sam10();//函数调用ADC_SAMP
//将所有采样数据除以10,以找到平均
int I =0;
for (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设置功能c1020
= ADSC0 + ADC102
//采样和保持时间+ ADC10打开+中断启用
ADC10DTC1 = 0x32;// 1000转换
ADC10AE0 |= 0x01;// WFP 1.0 ADC选项选择
}//
ADC样本转换功能
void ADC_Sam10()
{
ADC10CTL0 &=~ENC;//
禁用转换,同时使用(ADC10CTL1 & Busy; //如果ADC10正忙
ADC10SA =(int)ADC;//将数据传输到下一个阵列(DTC自动增量地址)
ADC10CTL0 |= ENC + ADC10SC;//启用转换和转换启动
__bis_sr_register(CPUOFF + GIE);//低功率模式0,ADC10_ISR
},请稍候
到目前为止,这种方法是有效的。 我们针对加速计的代码如下所示:
#ifndef I2C_USI_H
#define I2C_USI_H
// Address
#define MPU6050_address 0x68
#define BQ3.2万_address 0x68
#define DS1307_address 0x68
#define LM92_address 0x48
/********************************************************************** \
*原型*
\********************************************************************** /
void Byte_USI_Init(unsigned char addr);//Init
Write void I2C_USI_Set_Address(unsigned char addr);//更改从属地址char I2C_USI_READ_Byte(unsigned char address);//读取1字节//读取多个unsigned char字节/u2I2C_USCH_Read_Word (unsigned char,unsigned char,unsigned char,unsigned char,dr,u2I2I2I,unsigned char,unsigned char,unsigned char,unsigned char,unsigned char,dr,d
\
*函数*
\********************************************************************** /
void I2C_USI_Init(unsigned char addr)
{
P1SEL |= BIT6 + BIT7;//将I2C引脚分配给USSCI_B0
P1SEL2|= BIT6 + BIT7;//将I2C引脚分配给USSCI_B0
UCB0CTL1 || UCSWRST;//启用SW重置
UCB6 + UCS10+ UCSCR1F; UCSEL_UCSF_UCSR1CST+UCSF0
//使用SMCLK,keep SW reset
UCB0BR0 = 40;// fSCL = SMCLK/40 =~400kHz
UCB0BR1 = 0;
UCB0I2CSA = addr;//设置从属地址
UCB0CTL1 &=~UCSWRST;//清除SW reset,恢复操作
void I2C_UTCS=地址UTCS1= UTCS1UTCH
//设置从属地址
UCB0CTL1 &=~UCSWRST;//清除软件重置,恢复操作
}
unsigned char I2C_USI_READ_Byte (unsigned char地址)
{
while (UCB0CTL1 & UCTXG2);
UCB0CTL1 |= UCTR + UCTXSTT;// CBTX,start
while (!(!(IFSTL1&UCT1CSTL1= UCT1G; UCTXTP= UCT1CTOF= UCTXG= UCTXG; UCTXTP=
UCT0~UCT1G= UCTXCTXSTUCT1G= UCTXSTUCTXSTUCT1))
// I2C restart
IFG2 &=~UCB0TXIFG;
while (UCB0CTL1 & UCTXSTT);
UCB0CTL1 |= UCTXSTP;
return UCB0RXBUF;
}
unsigned char I2C_USI_READ_Word( unsigned char Addr_Data,unsigned char *Data,CBchar
Loop Length ){ CBTI=0; ctrC + UCT1; UCT1CST1; UCT1; UCT1= UCT1; UCTX; UCT1CTCH; UCT1CST1; UCTUCT1C; UCTUTC= UCTU
// I2C TX,启动条件
while (!(IFG2&UCB0TXIFG);
IFG2 &=~UCB0TXIFG;//清除USCI_B0 TX int flag
IF (UCB0STAT & UCNACKIFG)返回UCB0STAT;
UCB0TXUF = ADDR_Data;
while (!(TXI_B0
和UCBI) I2= UCBI
;UCSTUTC0I ~UTCU1= UCBI;UTC0I
~UTCG = UTCUTCU1G;UTCU1G;UCBUTC0I UTCU1= UTCUTC0STAT= UCBI;UCBUCBUTC0I0 UCBUCBI UTC0STAT= UCBI;UCBU // Clear USI_B0 TX int flag
while (UCB0CTL1 & UCTXSTT);//循环直到I2C STT被发送
(i=0;I<(Length-1);I+){
while (!(IFG2&UCB0XBIFG));
IFCBI&=~UCB0STP IFG1;// clear UCTXF=
UTX0I= UCTX2(UCST2; U= USC2= UTC0I=UTC0I=UTC0I=UTC0XF_USCI=~UTC0XF= USTXF_USCI= USCI= USTX0I= USTX0I= USCI= USTXF= USCI= USCI= USTXF=
//第一个TX
数据后的I2C停止条件[Length-1]= UCB0RXBUF;
IFG2 &=~UCB0TXIFG;//清除USIC_B0 TX int标志
返回0;
}
未签名的I2C CHAR_USIC_Write_Byte (未签名的字符地址,未签名的字符数据)
{
while (UCB0CTCBCTR & UCTXST1);UIFUTCF=
UF0CSTUF=
UTC0CSTUF; UCSTUF= UF0CSTUCSTU1UF= UCSTUC0CSTUF= UC0CSTUF= UCSTUF0CSTUF0CSTUF; UCSTUF= UF0
while (!(IFG2&UCB0TXIFG));
IF (UCB0STAT & UCNACKIFG) return UCB0STAT;
UCB0TXBUF = data;
while (!(IFG2&UCB0TXIFG));
IF (UCB0SCI & UCNACKIFG) return UCB0STAT; UCB0TX0STAT= data;
UCB0CTI2= UCB0I2; UCB0I2=
UCB0~UCT0STD= UCT0I2= UCT0I2F= UCT0I2= UCB0I2= UCB0STUCB0I2= U
我想合并这两个代码,但我在理解代码时遇到了困难。 我查找了变量名称,描述只是告诉我变量的全名。 是否有地方我可以获得文档来了解这些内容?
谢谢!
Vidhu Appalaraju