工具/软件:Code Composer Studio
您好!
我正在实施一个程序、每15分钟将模拟值记录到 SD 卡中、在理想的时间内、DCO 浪费大量电能、而不执行任何操作(不能使用 VLO、因为它太不准确、无法跟踪时间)。 我的逻辑是在15分钟间隔内显著降低 DCO 速度、然后将其增加到默认的 DCO 值。 DCO 时钟速度正在降低(我可以通过寄存器值和低电流消耗来补偿)、但它不会恢复到原始 DCO 配置。 任何人都能提供建议。
DCOCTL 和 BCSCTL1设置为0x0、但它们不会混响回原始配置、即 DCOCTL = 0xA0和 BCSCTL1 = 0x8F
(下面粘贴的代码和寄存器值)
#include "msp430g2553.h"
#include
#ifndef TIMER0_A1_VECTOR
#define TIMER0_A1_VECTOR TIMER1_VECTOR
#define TIMER0_A0_VECTOR TIMER0_VECTOR
#endif
#include
#include
#include
#include "spi.h"
#include "pfatfs.h"
#define cs_pin 8. //芯片选择引脚
#define READ_BUFFER 128 //读取缓冲
区的大小(以字节为单位) unsigned short int bw、br;
char buffer[read_buffer];
int rc;
DIR dir; /*目录对象*/
FILINFO fno; /*文件信息对象*/
uint32_t sensor1;
uint32_t sensor2;
uint32_t sensor3;
uint32_t Sensor4;
uint8_t StringLength = 0;
char buf[50];
uint32_t counter = 0;
uint32_t AccStringLength = 0;uint32_t
t2 = 0;t int32_t t2 =
0;uint2 = 0;t int32_t t2 = 0;t int2 = 0;t int2 = t int2 = 0;t int32
void setup()
{
analogReference (INTERNAL2V5);
引脚模式(9、输出);
PinMode (10、输出);
FatFs.begin(cs_pin);
digitalWrite (10、高电平);
delay (200);
digitalWrite (10、低电平);
delay (200);
}
void loop ()
{
digitalWrite (9、HIGH);
sensor1 = analogRead (2);
delay (5);
t1 = sensor1;
sensor2 = analogRead (3);
延迟(5);
T2 = sensor2;
sensor3 = analogRead (5);
延迟(5);
T3 = sensor3;
Sensor4 = analogRead (6);
delay (5);
T4 = Sensor4;
digitalWrite (9、low);
RC = FatFs.open ("log.TXT");
delay (5);
bw=0;
sprintf (buf、"%lu 输出为%lu、%lu、%lu、%lu\r\n"、counter、t1、t2、t3、t4);
counter++;
FatingLength = strlen (buf);
RC = FatingStr.lseek (AccStringLength);
Acc&StringLength =
0、twrite = tf (rc);FatFs = 0、tf (rc = tft.rc = tf)、tf (twrite = tf);
//关闭文件
BCSCTL1 = 0x0;//设置范围
DCOCTL = 0x0;
延迟(1000);
BCSCTL1 = 0xA0;//设置范围
DCOCTL = 0x8F;
}
1)初始时钟寄存器值( DCOCTL = 0xA0和 BCSCTL1 = 0x8F)
2) 2)代码运行时的时钟寄存器值(DCOCTL 和 BCSCTL1已变为0x0、但它们不会混响回原始配置、即 DCOCTL = 0xA0;和 BCSCTL1 = 0x8F)