#include<msp430.h>
int main(void)
{
WDTCTL = WDTPW | WDTHOLD; // Stop WDT
// GPIO Setup
P1OUT &= ~(BIT4 |BIT5); // Clear LED to start
P1DIR |= (BIT4 | BIT5); // P1.4/5 output
//1.采樣引腳配置
///配置為AD功能,P1.0~3(A0~3)、P9.4~7(A12~15)均可以復用為AD采樣功能
P1SEL1 |= BIT3;
P1SEL0 |= BIT3; /// Configure P1.3 for ADC:
// Disable the GPIO power-on default high-impedance mode to activate
// previously configured port settings
PM5CTL0 &= ~LOCKLPM5;
//2.參考電壓配置
// By default, REFMSTR=1 => REFCTL is used to configure the internal reference
while(REFCTL0 & REFGENBUSY); // If ref generator busy, WAIT
REFCTL0 |= REFVSEL_1 | REFON; // Select internal ref = 2.0V
// Internal Reference ON
//詳見《user's guide》24.3.1
///3.ADC相關寄存器配置
// Configure ADC12
//ADC12CTL0~2控制寄存器
ADC12CTL0 = ADC12SHT0_2 | ADC12ON; // 采樣保持時間16ADCCLK;啟動AD(在ADC12ENC=0的情況下,修改啟動或關閉AD)
ADC12CTL1 = ADC12SHP; // ADCCLK = MODOSC; sampling timer : 從采樣保持器中獲取信號
ADC12CTL2 |= ADC12RES_2; // 12-bit conversion results分辨率
ADC12CTL3 |=ADC12CSTARTADD_5; //選擇ADC12MCTL5控制
ADC12IER0 |= ADC12IE5; // Enable ADC conv complete interrupt(ADC12MEM5)
//////////////////////////////////////////////////////////////////////////////
//AD使用總結:
//詳見《user's guide》Figure 25-1 ADC12_B模塊圖
//AD有32個獨立采樣通道A0~A31,即ADC12INCH_x選擇哪個通道,這個通道與IO引腳對應,詳見《datasheet》Table 4-1. Pin Attributes
//P1.3引腳對應A3,所以這里使用ADC12INCH_3
//ADC12MCTL0~31對應32個通道管理寄存器,管理響應的AD轉換結果保存寄存器ADC12MEM0~31,使用哪個寄存器保存結果用ADC12CSTARTADD_x設置
//例:ADC12CTL3 |=ADC12CSTARTADD_5;//選擇ADC12MCTL5控制ADC12MEM5保存AD轉換結果
//ADC12IER0 |= ADC12IE5;中斷與響應寄存器對應
//注:ADC12MEM0~31與AD有32個獨立采樣通道A0~A31不需要一一對應使用
//本例中A3通道使用的就是ADC12MEM5,即:ADC12MEMx可以任意分配給不同的通道,詳見Figure 25-1
//////////////////////////////////////////////////////////////////////////////
ADC12MCTL5 |= ADC12INCH_3 | ADC12VRSEL_1; //ADC12INCH_3 : 通道3 //// ADC12VRSEL_1 :內部參考電壓
//4.等待參考電壓配置完成
while(!(REFCTL0 & REFGENRDY)); // Wait for reference generator to settle
while(1)
{
//5.Ad采樣并獲得結果 注:AD采樣是需要時間的,加上延時
__delay_cycles(5000); // Delay between conversions
ADC12CTL0 |= ADC12ENC | ADC12SC; // Sampling and conversion start
__bis_SR_register(LPM0_bits + GIE); // LPM0, ADC10_ISR will force exit
__no_operation(); // For debug only
}
}
///中斷處理函數
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector = ADC12_VECTOR
__interrupt void ADC12_ISR(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(ADC12_VECTOR))) ADC12_ISR (void)
#else
#error Compiler not supported!
#endif
{
switch (__even_in_range(ADC12IV, ADC12IV_ADC12RDYIFG))
{
case ADC12IV_NONE: break; // Vector 0: No interrupt
case ADC12IV_ADC12OVIFG: break; // Vector 2: ADC12MEMx Overflow
case ADC12IV_ADC12TOVIFG: break; // Vector 4: Conversion time overflow
case ADC12IV_ADC12HIIFG: break; // Vector 6: ADC12BHI
case ADC12IV_ADC12LOIFG: break; // Vector 8: ADC12BLO
case ADC12IV_ADC12INIFG: break; // Vector 10: ADC12BIN
case ADC12IV_ADC12IFG0: // Vector 12: ADC12MEM0 Interrupt
case ADC12IV_ADC12IFG1: break; // Vector 14: ADC12MEM1
case ADC12IV_ADC12IFG2: break; // Vector 16: ADC12MEM2
case ADC12IV_ADC12IFG3: break;
case ADC12IV_ADC12IFG4: break; // Vector 20: ADC12MEM4
///使用哪個ADC12MEMx存儲AD結果,轉換完成后就會觸發響應寄存器的完成中斷,標注位為ADC12IV_ADC12IFGx
///前提:ADC12IER0 |= ADC12IE5; //設置AD完成中斷
case ADC12IV_ADC12IFG5: //break; // Vector 22: ADC12MEM5
if (ADC12MEM5 >= 0x6B4) // ADC12MEM = A1 > 0.5V?
P1OUT |= BIT5; // P1.4 = 1
else
P1OUT &= ~BIT5; // P1.4 = 0
__bic_SR_register_on_exit(LPM0_bits); // Exit active CPU
break; // Clear CPUOFF bit from 0(SR)
case ADC12IV_ADC12IFG6: break; // Vector 24: ADC12MEM6
case ADC12IV_ADC12IFG7: break; // Vector 26: ADC12MEM7
case ADC12IV_ADC12IFG8: break; // Vector 28: ADC12MEM8
case ADC12IV_ADC12IFG9: break; // Vector 30: ADC12MEM9
case ADC12IV_ADC12IFG10: break; // Vector 32: ADC12MEM10
case ADC12IV_ADC12IFG11: break; // Vector 34: ADC12MEM11
case ADC12IV_ADC12IFG12: break; // Vector 36: ADC12MEM12
case ADC12IV_ADC12IFG13: break; // Vector 38: ADC12MEM13
case ADC12IV_ADC12IFG14: break; // Vector 40: ADC12MEM14
case ADC12IV_ADC12IFG15: break; // Vector 42: ADC12MEM15
case ADC12IV_ADC12IFG16: break; // Vector 44: ADC12MEM16
case ADC12IV_ADC12IFG17: break; // Vector 46: ADC12MEM17
case ADC12IV_ADC12IFG18: break; // Vector 48: ADC12MEM18
case ADC12IV_ADC12IFG19: break; // Vector 50: ADC12MEM19
case ADC12IV_ADC12IFG20: break; // Vector 52: ADC12MEM20
case ADC12IV_ADC12IFG21: break; // Vector 54: ADC12MEM21
case ADC12IV_ADC12IFG22: break; // Vector 56: ADC12MEM22
case ADC12IV_ADC12IFG23: break; // Vector 58: ADC12MEM23
case ADC12IV_ADC12IFG24: break; // Vector 60: ADC12MEM24
case ADC12IV_ADC12IFG25: break; // Vector 62: ADC12MEM25
case ADC12IV_ADC12IFG26: break; // Vector 64: ADC12MEM26
case ADC12IV_ADC12IFG27: break; // Vector 66: ADC12MEM27
case ADC12IV_ADC12IFG28: break; // Vector 68: ADC12MEM28
case ADC12IV_ADC12IFG29: break; // Vector 70: ADC12MEM29
case ADC12IV_ADC12IFG30: break; // Vector 72: ADC12MEM30
case ADC12IV_ADC12IFG31: break; // Vector 74: ADC12MEM31
case ADC12IV_ADC12RDYIFG: break; // Vector 76: ADC12RDY
default: break;
}
}
上一篇:MSP430F1232針對ADC10(使用DTC+SA)的內存中采樣結果讀取
下一篇:MSP430時鐘倍頻設置
推薦閱讀
史海拾趣
隨著技術的不斷進步,Concurrent Logic成功開發出了一款具有革命性的并行計算芯片。這款芯片在市場上引起了巨大的反響,因其出色的并行處理能力和高效的邏輯運算,很快得到了眾多電子設備和數據中心的青睞。這一技術的突破不僅為公司帶來了可觀的收入,更讓Concurrent Logic在電子行業中嶄露頭角。
隨著全球半導體行業向中國市場的轉移,明微公司意識到拓展海外市場的重要性。為了加快海外市場拓展步伐,公司積極加強與國際知名企業的合作與交流,引進先進的技術和管理經驗。同時,公司還積極參加國際展會和論壇等活動,提升品牌影響力。這些舉措使明微公司在國際市場上逐漸樹立起良好的口碑和形象。
為了進一步擴大市場份額,Advance Tapes公司開始積極參與國際展會和交流活動,向全球客戶展示其優質的產品和技術實力。同時,公司還加大了對品牌建設的投入,通過廣告宣傳、贊助活動等方式提升品牌知名度和美譽度。這些努力使得Advance Tapes的膠帶產品逐漸在國際市場上占據了一席之地。
在產品質量和技術水平得到市場認可后,Auctor Corp公司開始積極拓展市場。公司通過與國內外知名企業建立合作關系,成功將產品打入多個國家和地區的市場。同時,公司還注重品牌塑造,通過參加國際電子展會、舉辦產品發布會等方式,提升品牌知名度和影響力。這些舉措使得Auctor Corp在電子行業中的地位逐漸提升。
Boyd Corporation在追求經濟效益的同時,也積極履行社會責任。公司注重環保和可持續發展,通過采用環保材料和節能技術,減少生產過程中的環境污染和資源消耗。此外,Boyd Corporation還積極參與公益事業和慈善活動,回饋社會。這些舉措使得Boyd Corporation在社會上樹立了良好的企業形象,也贏得了更多客戶的信任和支持。
為了進一步擴大市場份額,BCD Semi(Diodes)公司積極尋求與國際知名企業的合作。通過與國際合作伙伴的共同努力,公司成功打入了多個海外市場,并在全球范圍內建立了穩定的銷售渠道。同時,公司還與國際同行開展技術交流與合作,共同推動模擬半導體技術的發展。
我寫了一個模塊,已經編譯通過,運行沒有問題 可是我希望進一步再模塊中使用Glib庫的API的時候,加入 #include <glib.h> 編譯模塊的時候怎么樣都找不到glib.h 我知道模塊編譯的時候是在系統空間編譯的, 我在用戶空間引用glib.h就沒有問 ...… 查看全部問答∨ |
如下所示,EBOOT已經把NK調度到內存,并且已經跳到NK去執行。為什么NK還要初始化FLASH,并且要花十幾秒的時間去讀FLASH? Windows CE Kernel for ARM (Thumb Enabled) Built on Feb 8 2007 at 23:36:51 ProcessorType=0920 &nbs ...… 查看全部問答∨ |
目前開發完一個針對philips saa7130的視頻采集驅動,安裝完后,系統提示出現“未知設備”,但卡的驅動已經成功裝上。分析后發現“未知設備”是saa7130芯片支持的TV tuner,但目前我們的用戶不需要該功能,所以想在裝上驅動后,不再出現提示用戶安裝 ...… 查看全部問答∨ |
|
我想學單片機,現在準備買設備。大家幫忙推薦幾個好點的東西。 編程器我想買多功能編程器,不知道有哪些?還有其他的配件大家也幫幫忙推薦一下,我現在對這方面還不懂。 我學過c,8086匯編,模擬電路,數字電路 微機原理 verilog等課程。歡迎大 ...… 查看全部問答∨ |
uCOS-II在STM32的移植,我做了N天了,可是uCOS就是在我的板子上運行不起來,實在讓我很糾結!在此發帖,希望有人幫幫我。 前幾天開始uCOS在STM32的移植,剛開始移植編譯老是不通過,找了五天,看了官方的移植例子,實在看不懂,又去 ...… 查看全部問答∨ |
我有個nxp p89lpc9221芯片,用來控制7段數碼管顯示,用ICP口編程。 我現在設置p0.0,p0.1,p0.2為開漏輸出;P0M1 |= 0x07; P0M2 |= 0x07; 三個腳都上拉到3.3v; 然后設置三個腳輸出為0: sbit p00 = P0 ^ 0; sbit p01 = P0 ^ 1; sbit ...… 查看全部問答∨ |
本人有幸成為這次DIY活動的參與者,得到了論壇的大力支持,論壇寄給我一塊RL78/G14開發板,我當我拿到這個開發板的時候很喜歡它,迫不及待的想學習它,于是我焊了一個電源模塊,用萬用表測得時候還很好,用電源模塊給開發板供電的時候卻把開發板燒 ...… 查看全部問答∨ |