#include "msp430x22x4.h"
#include "Hardware_board.h"
#include "Delay.h"
#include "TF.h"
#include "Adc10.h"
#include "Init.h"
#define MAXBLOCKNO 1890000 //可以以10ms的采样周期保存连续7整天(24小时)的数据到SD卡中
#define RING_BUF_LEN 890
#define BLOCK_SZ 512
#define BLOCK_SZ1 506
#define BLOCK_SZ11 6
//SD卡操作变量定义
unsigned char buffer[RING_BUF_LEN],buffer1[6];
unsigned long Block_index;//Start_Block,
int iRIndex = 0;
int iWIndex = 0;
int iBuf2Index = 0;
//AD采样变量定义
unsigned char ad_value[6],ad_value1[6],ad_value2[6];
unsigned char ucSleepF;//,f3 =0
//时钟变量定义
unsigned char ucYear,ucMonth,ucDay,ucHour,ucMinute,ucSecond, ucTimeCnt,ucAdjTF;
volatile unsigned int uiPwrTimeCnt,uiADtemp;//计时到,没信号,关采集,关写卡,置看门狗处理标志,进入低功耗;采到信号时清零
//串口变量定义
unsigned char ucADStartF,ucUpLoadF,ucJiaoShiF;
unsigned int uart_rec_data;
void vdRealClk(void);
int main(void)
{
unsigned int buffer_index;
unsigned long ulCurrentBlock;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
SetSysClock();
Port_Init();
Var_Init();
SPI_Init();
while(TF_Init() != TF_RESPONSE_NO_ERROR)
{
delay_nus(0xFFFF);
}
Adc10_Init();
Uart_Init();
TimeA_Init();
WatchDog_Init();
_EINT();//打开全局中断
//////////////////////////////////////////////////////
//一睡眠就置睡眠标志,关SD卡加速度垫子电源,进入睡眠状态
ucSleepF=1;
ucADStartF = 0;
P2OUT &= ~BIT0; //P2.2 TPS76333电源关闭
P2OUT &= ~BIT2; //P2.0 加速度芯片电源关闭
__bis_SR_register(LPM3_bits + GIE);
/////////////////////////////////////////////////////
while(1)
{
if(ucADStartF)
{
if(iWIndex - iRIndex >= BLOCK_SZ1)
{
TF_WriteBlock2(&buffer[iRIndex],BLOCK_SZ1,&buffer1[0], BLOCK_SZ11, Block_index*BLOCK_SZ);
iRIndex += BLOCK_SZ1;
if(iRIndex >= RING_BUF_LEN)iRIndex -= RING_BUF_LEN;
if(Block_index<MAXBLOCKNO)Block_index++;
if(ucSleepF)
{
P1IE |= BIT7; // P1.7 中断使能
P1IES |= BIT7; // P1.7 下降沿触发中断
P1IFG &= ~BIT7; // 清P1.7中断标志
//////////////////////////////////////////////////////
//一睡眠就置睡眠标志,关SD卡加速度垫子电源,进入睡眠状态
ucADStartF=0;
P2OUT &= ~BIT0; //P2.0 加速度芯片电源关闭
P2OUT &= ~BIT2; //P2.2 TPS76333电源关闭
__bis_SR_register(LPM3_bits + GIE);
//////////////////////////////////////////////////////
}
}
else if(iWIndex - iRIndex < 0)
{
if(iWIndex - iRIndex + RING_BUF_LEN >= BLOCK_SZ1)
{
iBuf2Index = BLOCK_SZ1 - (RING_BUF_LEN - iRIndex) - 1;
if(iBuf2Index >= 0)TF_WriteBlock3(&buffer[iRIndex], RING_BUF_LEN - iRIndex, &buffer[0], BLOCK_SZ1 - (RING_BUF_LEN - iRIndex),&buffer1[0], BLOCK_SZ11, Block_index*BLOCK_SZ);
else TF_WriteBlock2(&buffer[iRIndex],BLOCK_SZ1,&buffer1[0], BLOCK_SZ11, Block_index*BLOCK_SZ);
iRIndex += BLOCK_SZ1;
if(iRIndex >= RING_BUF_LEN)iRIndex -= RING_BUF_LEN;
if(Block_index<MAXBLOCKNO)Block_index++;
}
if(ucSleepF)
{
P1IE |= BIT7; // P1.7 中断使能
P1IES |= BIT7; // P1.7 下降沿触发中断
P1IFG &= ~BIT7; // 清P1.7中断标志
////////////////////////////////////////////////////////
//一睡眠就置睡眠标志,关SD卡加速度垫子电源,进入睡眠状态
ucADStartF=0;
P2OUT &= ~BIT0; //P2.0 加速度芯片电源关闭
P2OUT &= ~BIT2; //P2.2 TPS76333电源关闭
__bis_SR_register(LPM3_bits + GIE);
///////////////////////////////////////////////////////
}
}
}
if(ucUpLoadF)
{
_DINT();
//上传之前初始化SD卡
P2OUT &= ~BIT0; //P2.0 加速度芯片电源关闭
P2OUT &= ~BIT2; //P2.2 TPS76333电源关闭
uiPwrTimeCnt=0;
iRIndex = 0;
iWIndex = 0;
ucTimeCnt=0;
ucSleepF =0;
delay_nus(0x1FF);
P2OUT |= BIT2; //P2.2 TPS76333电源使能
SPI_Init();
while(TF_Init() != TF_RESPONSE_NO_ERROR)
{
delay_nus(0xFFFF);
}
////////////////////////////////////////////////////////////
buffer[0]=0xaa;
buffer[1]=0x55;
buffer[2] = (unsigned char)((Block_index & 0xFF000000) >> 24);
buffer[3] = (unsigned char)((Block_index & 0x00FF0000) >> 16);
buffer[4] = (unsigned char)((Block_index & 0x0000FF00) >> 8);
buffer[5] = (unsigned char)(Block_index & 0xFF);
buffer[6]=0xaa;
buffer[7]=0x55;
buffer[8] = buffer[2];
buffer[9] = buffer[3];
buffer[10] = buffer[4];
buffer[11] = buffer[5];
for(buffer_index =0;buffer_index < 512;buffer_index++)
{
while (!(IFG2 & UCA0TXIFG));
UCA0TXBUF = buffer[buffer_index];
}
for(ulCurrentBlock=0;ulCurrentBlock< Block_index;ulCurrentBlock++)
{
TF_ReadBlock(buffer,ulCurrentBlock*512,512);
for(buffer_index =0;buffer_index < 512;buffer_index++)
{
while (!(IFG2 & UCA0TXIFG));
UCA0TXBUF = buffer[buffer_index];
}
}
ucUpLoadF=0;
P1IE |= BIT7; // P1.7 中断使能
P1IES |= BIT7; // P1.7 下降沿触发中断
P1IFG &= ~BIT7; // 清P1.7中断标志
ucADStartF=0;
_EINT();
////////////////////////////////////////////////////////
//一睡眠就置睡眠标志,关SD卡加速度垫子电源,进入睡眠状态
ucSleepF=1;
ucADStartF=0;
P2OUT &= ~BIT0; //P2.0 加速度芯片电源关闭
P2OUT &= ~BIT2; //P2.2 TPS76333电源关闭
__bis_SR_register(LPM3_bits + GIE);
///////////////////////////////////////////////////////
}
}
}
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
uart_rec_data=UCA0RXBUF;
if(ucJiaoShiF)
{
ucAdjTF ++;
if(ucAdjTF == 1)
{
ucYear = UCA0RXBUF;
}
else if(ucAdjTF == 2)
{
ucMonth = UCA0RXBUF;
}
else if(ucAdjTF == 3)
{
ucDay = UCA0RXBUF;
}
else if(ucAdjTF == 4)
{
ucHour = UCA0RXBUF;
}
else if(ucAdjTF == 5)
{
ucMinute = UCA0RXBUF;
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
430-TF_Final.rar (44个子文件)
底层程序
AD6字节(关SD电源).rar 129KB
AD6字节(关SD电源)
main1.c 14KB
main.c 14KB
settings
2272-Full Version.wsdt 4KB
2272-Full Version.dni 1KB
2272-Full Version.cspy.bat 3KB
2272-Full Version.dbgdt 7KB
TF.h 2KB
Init.h 325B
TF.c 7KB
2272-Full Version.dep 6KB
Adc10.h 206B
2272-Full Version.ewp 47KB
Delay.c 105B
Debug
Obj
Init.r43 8KB
main1.r43 8KB
2272-Full Version.pbd 568B
Adc10.r43 27KB
Delay.r43 1KB
main.r43 100KB
TF.r43 36KB
msp430x22x4_uscia0_uart_01_115k.r43 5KB
List
msp430x22x4_uscia0_uart_01_115k.lst 11KB
Delay.s43 4KB
Init.s43 16KB
main.s43 50KB
main1.lst 20KB
msp430x22x4_uscia0_uart_01_115k.s43 11KB
Init.lst 18KB
Adc10.lst 28KB
main.lst 63KB
TF.lst 43KB
2272-Full Version.map 33KB
TF.s43 38KB
main1.s43 15KB
Adc10.s43 22KB
Delay.lst 3KB
Exe
2272-Full Version.d43 39KB
Delay.h 31B
hardware_board.h 475B
Adc10.c 7KB
Init.c 5KB
2272-Full Version.eww 171B
2272-Full Version.ewd 17KB
共 44 条
- 1
iim_2011
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页