首先說說問題, 感覺這個Code Compose Studio 比較奇怪
#include "TFT\TFT_Driver.h"
找不到檔案, 無法打開
沒有include 僅在同一工程下就可以使用函數
每次運作程式結果不同
下面給出一個使用ADC的執行個體:
ADC初始化函數:
void ConfigureAdcTempSensor(void)
{
/* Configure ADC Temp Sensor Channel */
ADC10CTL1 = INCH_10 + ADC10DIV_0 + CONSEQ_2; // Temp Sensor ADC10CLK/4
ADC10CTL0 = SREF_1 + ADC10SHT_3 + MSC + REFON + ADC10ON + ADC10IE;
// __delay_cycles(1000); // Wait for ADC Ref to settle
ADC10DTC1=0xfe;
ADC10CTL0&=~ENC;
while(ADC10CTL1&BUSY);
ADC10SA=0x0200; //(unsigned int)tempMeasured;
//data buffer start
ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
__bis_SR_register(CPUOFF + GIE); // LPM0 with interrupts enabled
tempAverage = tempMeasured[0];
tempCalibrated= tempAverage;
}
對于ADC10CTL1的配置, 如果你隻采集一個那麼就是CONSEQ_2, 使用内部測溫就是INCH_10
想要知道更多的操作寄存器的DEFINE 你需要在 MSP430G25XX.h 裡面 以及 User Guide 中進行對照
DTC 某種程度上可以控制采樣速度
ADC10SA 是start Address , 我使用0x0200 是因為我知道我采集資料的起始位址是它,
在你的loop中需要加入這兩行代碼使得模拟值持續更新
ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
__bis_SR_register(CPUOFF + GIE); // LPM0 with interrupts enabled
第二句話是指, 讓系統進入休眠狀态, 降低功耗, 這時候我們的CPU是停止工作的, 進入中斷
中斷函數:
// ADC10 interrupt service routine
#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR (void)
{
__bic_SR_register_on_exit(CPUOFF); // Return to active mode
}
這裡面隻有一句話, 它的意思是結束休眠狀态, 進入工作