版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、launchpad 官方例程(無(wú)修改)一切皆為2012ti杯電子設(shè)計(jì)大賽1./*/ launchpad lab2 - software toggle p1.0, 軟件切換的p1.0,/ msp430g2xx2/ -/ /| xin|-/ | | |/ -|rst xout|-/ | |/ | p1.0|-led/*#include void main(void)wdtctl = wdtpw + wdthold; /停止看門狗定時(shí)器if (calbc1_1mhz = 0xff | caldco_1mhz = 0xff)while(1);/如果校準(zhǔn)常數(shù)擦除,捕獲的cpu!/ configure b
2、asic clockbcsctl1 = calbc1_1mhz; /設(shè)置范圍dcoctl = caldco_1mhz;/集檢查官步+調(diào)制bcsctl3 |= lfxt1s_2;/ 設(shè)置lfxt1p1dir = bit6; /p1.6輸出(綠色led)p1out = 0; / led 關(guān)ifg1 &= ofifg; /清除oscfault標(biāo)志bcsctl2 |=selm_1 + divm_0; /設(shè)置的mclkfor(;)p1out = bit6; / p1.6輸出(綠色led)_delay_cycles(100);p1out = 0; /綠色led關(guān)閉_delay_cycles(5000);2
3、./*/ launchpad lab3 - software port interrupt service軟件端口的中斷服務(wù)/ msp430g2xx2/ -/ /| xin|-/ | | |/ -|rst xout|-/ /| | |/ -o-|p1.3 p1.0|-led/ |/*#include void main(void)wdtctl = wdtpw + wdthold; /停止看門狗定時(shí)器 p1dir |= bit0; /設(shè)定的p1.0輸出方向p1ies |= bit3; / p1.3可高/低邊p1ifg &= bit3; / p1.3 ifg 清除p1ie |= bit3; / p
4、1.3可中斷啟用_bis_sr(lpm4_bits + gie); /進(jìn)入lpm4中斷/ port 1 interrupt service routine端口1中斷服務(wù)程序#pragma vector=port1_vector_interrupt void port_1(void)if (p1ifg & bit3)p1out = bit0; / p1.0切換p1ifg &= bit3; / p1.3 ifg清除3./*/ launchpad lab5 - adc10, sample a10 temp and convert to oc and of adc10,樣品a10的溫度和轉(zhuǎn)換/ msp
5、430g2452/ -/ /| xin|-/ | | |/ -|rst xout|-/ | |/ |a10 |/*#include msp430g2553.hlong temp;long intdegf;long intdegc;void main(void) wdtctl = wdtpw + wdthold; / stop wdt /configure adc10 adc10ctl1 = inch_10 + adc10div_3; / 選擇adc通道溫度傳感器 adc10ctl0 = sref_1 + adc10sht_3 + refon + adc10on + adc10ie;/選擇adc
6、號(hào)源 _enable_interrupt(); /使能中斷。 taccr0 = 30; / delay to allow ref to settle延遲讓價(jià)解決 tacctl0 |= ccie; /比較模式中斷。 tactl = tassel_2 | mc_1; / taclk= smclk,最多的模式。 lpm0; /等待延遲。 tacctl0 &= ccie; /禁用定時(shí)器中斷 _disable_interrupt(); while(1) adc10ctl0 |= enc + adc10sc; /采樣和轉(zhuǎn)換啟動(dòng) _bis_sr_register(lpm0_bits + gie); / lp
7、m0與中斷功能 / of = (a10/1024)*1500mv)-923mv)*1/1.97mv = a10*761/1024 - 468 temp = adc10mem; intdegf = (temp - 630) * 761) / 1024; / oc = (a10/1024)*1500mv)-986mv)*1/3.55mv = a10*423/1024 - 278 temp = adc10mem; intdegc = (temp - 673) * 423) / 1024; _no_operation(); / set breakpoint here此設(shè)置斷點(diǎn) / adc10 inte
8、rrupt service routine#pragma vector=adc10_vector_interrupt void adc10_isr (void) _bic_sr_register_on_exit(lpm0_bits); /明確cpuoff位從0(sr)#pragma vector=timer0_a0_vector_interrupt void ta0_isr(void) tactl = 0; _bic_sr_register_on_exit(lpm0_bits); /明確cpuoff位從0(sr)4./*/ msp430f20xx演示 - 基本時(shí)鐘,輸出緩沖smclk,aclk
9、和mclk/10/ /說(shuō)明:緩沖區(qū)aclk從p2.0,p1.4腳和mclk/10默認(rèn)smclk(dco)/ / p1.5的。/ aclk= lfxt1= vlo的,個(gè)mclk= smclk=默認(rèn)的dco/ / / /*安裝辛xout之間的外部晶體需要aclk* / / msp430f20xx/ -/ /| xin|-/ | | | / -|rst xout|-/ | |/ | p1.4/smclk|-smclk = default dco/ | p1.5|-mclk/10 = dco/10/ | p1.0/aclk|-aclk = vlo/*#include unsigned char s;v
10、oid main(void) wdtctl = wdtpw +wdthold; / 關(guān)閉看門狗 bcsctl3 |= lfxt1s_2; / lfxt1 = vlo /dcoctl = 0; /bcsctl1 = calbc1_16mhz; /dcoctl = calbc1_16mhz; p1dir |= 0x31; / p1.0,和p1.4輸出 p1sel |= 0x11; / p1.0,4 aclk/ vlo的,smclk/ dco輸出 /smclk sub-system main clk, aclk和smclk可以通過(guò)復(fù)用引腳輸出,mclk不能直接輸出體現(xiàn), mclk可以配置為vlo或者
11、dco while(1) p1out |= 0x20; / p1.5 = 1, 通過(guò)開(kāi)關(guān)p1.5來(lái)體現(xiàn)mclk,這兩條指令的周期大概為smclk的1/10 p1out &= 0x20;/20; 5./*/ msp430xg46x演示 - fll的內(nèi)部運(yùn)行,在8mhz檢查官/說(shuō)明:此程序演示設(shè)置內(nèi)部dco運(yùn)行/ /為8mhz由fll+自動(dòng)校準(zhǔn)。/ aclk= lfxt1=32768hz的,個(gè)mclk= smclk=檢查官=(121+1)2aclk=7995392hz/ / / /*辛與xout之間的外部鐘晶振需要aclk* / / msp430xg461x/ -/ /| xin|-/ | | |
12、 32khz/ -|rst xout|-/ | |/ | p1.1|- mclk = 8mhz/ | |/ | p1.5|- aclk = 32khz/ | |/*#include void main(void) wdtctl = wdtpw + wdthold; /停止看門狗定時(shí)器 fll_ctl0 |= dcoplus + xcap18pf; / dco+ set, 頻率 = xtal x d x n+1 scfi0 |= fn_4; / x2 dco freq, 8mhz nominal dco scfqctl = 121; / (121+1) x 32768 x 2 = 7.99 mh
13、z p1dir = 0x22; / p1.1口和p1.5的輸出方向 p1sel = 0x22; / p1.1口和p1.5的輸出mclk和aclk while(1); /循環(huán)到此6./*/ msp430xg46x演示 - flash在系統(tǒng)編程,復(fù)制世嘉segb/ / /說(shuō)明:此程序首先擦除閃爍賽格a,那么它的增量/ /賽格一個(gè)值,然后擦除賽格b,然后復(fù)制賽格一個(gè)賽格b。/假設(shè)的mclk的550khz - 900khz的。/ / / /* nop指令集在主循環(huán)中斷點(diǎn),以避免強(qiáng)調(diào)的flash */ msp430xg461x/ -/ /| xin|-/ | | |/ -|rst xout|-/ | |
14、/*#include char value; / 8位值寫段/ function prototypesvoid write_sega (char value);void copy_a2b (void);void main(void) wdtctl = wdtpw + wdthold; /停止看門狗定時(shí)器 fctl2 = fwkey + fssel0 + fn0; /的mclk/2閃存時(shí)序發(fā)生器 value = 0; /初始化值 while(1) /永遠(yuǎn)重復(fù) write_sega(value+); /寫段,增量值 copy_a2b(); / 復(fù)制段a到b _nop(); /此設(shè)置斷點(diǎn) void
15、write_sega (char value) char *flash_ptr; /閃存的指針 unsigned int i; flash_ptr = (char *) 0x1080; /初始化閃存的指針 fctl1 = fwkey + erase; /設(shè)置擦除位 fctl3 = fwkey; /清除鎖定位 *flash_ptr = 0; /空寫,擦除閃存段 fctl1 = fwkey + wrt; /為寫操作的wrt位 for (i=0; i128; i+) *flash_ptr+ = value; /寫入值閃爍 fctl1 = fwkey; /清除wrt的位 fctl3 = fwkey +
16、 lock; /設(shè)置鎖定位void copy_a2b (void) char *flash_ptra; /段指針 char *flash_ptrb; / b段指針 unsigned int i; flash_ptra = (char *) 0x1080; /初始化閃存段a指針 flash_ptrb = (char *) 0x1000; /初始化閃存段b指針 fctl1 = fwkey + erase; /設(shè)置擦除位 fctl3 = fwkey; /清除鎖定位 *flash_ptrb = 0; /空寫,擦除閃存段b fctl1 = fwkey + wrt; /為寫操作的wrt位 for (i=0
17、; iled/ |/*#include void main(void) wdtctl = wdtpw + wdthold; /停止看門狗 fll_ctl0 |= xcap14pf; /配置負(fù)載帽 p2dir = bit1; /設(shè)置p2.1為輸出方向 p1ies = bit0; / h-l過(guò)渡 p1ie = bit0; /使能中斷 _bis_sr(lpm4_bits + gie); / lpm4,使中斷/ port 1 interrupt service routine端口1中斷服務(wù)程序#pragma vector=port1_vector_interrupt void port1_isr (v
18、oid) unsigned volatile int i; for (i=10000; i0; i-); /防抖動(dòng)延時(shí) p1ifg &= bit0; /清除p1ifg if (p1in & 0x01) = 0) p2out = 0x02; /使用專用或切換p2.18./*/ msp430xg46x演示 - 軟件p1.0口從lpm4中斷/ / /說(shuō)明:p1.0的高/低的過(guò)渡會(huì)引發(fā)p1_isr/ /切換p2.1。正常模式lpm40.1ua。 lpm4電流可測(cè)/ /與led刪除所有未使用的p1.x/p2.x配置為輸出或輸入/ /拉高或低,確保p2.0的中斷輸入不浮動(dòng)。/ aclk=32.768khz
19、的,個(gè)mclk= smclk=默認(rèn)的dco/ msp430xg461x/ -/ /| |/ | | |/ -|rst |/ /| | |/ -o-|p1.0 p2.1|-led/ |/*#include void main(void) wdtctl = wdtpw + wdthold; /停止看門狗 fll_ctl0 |= xcap14pf; /配置負(fù)載帽 p2dir = bit1; /設(shè)置p2.1為輸出方向 p1ies = bit0; / h-l過(guò)渡 p1ie = bit0; /使能中斷 _bis_sr(lpm4_bits + gie); / lpm4,使中斷/ port 1 interru
20、pt service routine端口1中斷服務(wù)程序#pragma vector=port1_vector_interrupt void port1_isr (void) unsigned volatile int i; for (i=10000; i0; i-); /防抖動(dòng)延時(shí) p1ifg &= bit0; /清除p1ifg if (p1in & 0x01) = 0) p2out = 0x02; /使用專用或切換p2.19./*/ msp430xg46x演示 - usci_a0,uart isr的回聲,檢查官smclk115200/ /(修改后的代碼示例“msp430xg46x_uscia
21、0_uart_01_115k.c”)/ /說(shuō)明:回聲一個(gè)接收到的字符,接收的isr使用。正常模式lpm0。/ / usci_a0 rx中斷觸發(fā)的tx回聲。(01h009h)/1048576hz= 1048576/115200=9.1波特率分頻器/ aclk= lfxt1=32768hz的,個(gè)mclk= smclk=默認(rèn)的dco=32aclk=1048576hz/ / / /*辛與xout之間的外部鐘晶振需要aclk* / / msp430fg4619/ -/ /| xin|-/ | | | 32khz/ -|rst xout|-/ | |/ | p2.5/uca0rxd|/*#include
22、msp430xg46x.hvoid main(void) volatile unsigned int i; wdtctl = wdtpw+wdthold; /停止看門狗 fll_ctl0 |= xcap14pf; /配置負(fù)載帽 do ifg1 &= ofifg; /清除oscfault標(biāo)志 for (i = 0x47ff; i 0; i-); /標(biāo)志設(shè)置時(shí)間 while (ifg1 & ofifg); / oscfault flag still set? p2sel |= 0x030; / p2.4,5 = usci_a0 rxd/txd uca0ctl1 |= ucssel_2; / smc
23、lk uca0br0 = 18;0x09; / 1mhz 115200 uca0br1 = 0;0x00; / 1mhz 115200 uca0mctl = 0;0x02; /調(diào)制 uca0ctl1 &= ucswrst; / *初始化usci狀態(tài)機(jī)* ie2 |= uca0rxie; /啟用usci_a0 rx中斷 _bis_sr(lpm0_bits + gie); /進(jìn)入lpm0,啟用中斷/ 回顯rxed字符,確認(rèn)tx緩沖區(qū)是準(zhǔn)備先#pragma vector=usciab0rx_vector_interrupt void uscia0rx_isr (void) while(!(ifg2&
24、uca0txifg); uca0txbuf = uca0rxbuf; / tx - rxed character10./* msp-exp430g2-launchpad軟件用戶的應(yīng)用體驗(yàn)* 1。設(shè)備開(kāi)始在lpm3模式+閃爍的led顯示設(shè)備是活著*后的第一個(gè)按鈕記者,設(shè)備過(guò)渡到應(yīng)用模式* 2。應(yīng)用模式*+連續(xù)采樣adc的溫度傳感器通道,比較的結(jié)果,對(duì)*初始值*+設(shè)為pwm基于測(cè)量adc偏移:紅色的led積極偏移,綠* led為負(fù)偏移*通過(guò)timera的uart發(fā)送溫度值到pc*+按鈕按下 - 校準(zhǔn)使用當(dāng)前溫度*發(fā)送字符“,通知pc機(jī)通過(guò)uart* #include msp430g2553.h#d
25、efine led0 bit0#define led1 bit6#define led_dir p1dir#define led_out p1out #define button bit3#define button_out p1out#define button_dir p1dir#define button_in p1in#define button_ie p1ie#define button_ies p1ies#define button_ifg p1ifg#define button_ren p1ren#define txd bit1 / p1.2上的txd#define rxd bi
26、t2 /p1.2上的rxd#define app_standby_mode 0#define app_application_mode 1#define timer_pwm_mode 0 #define timer_uart_mode 1#define timer_pwm_period 2000 #define timer_pwm_offset 20#define temp_same 0#define temp_hot 1#define temp_cold 2#define temp_threshold 5 / conditions for 9600/4=2400 baud sw uart,
27、smclk = 1mhz#define bitime_5 0x05*4 / 0.5位長(zhǎng)度+小調(diào)整#define bitime 13*4/0x0d #define uart_update_interval 1000unsigned char bitcnt;unsigned char applicationmode = app_standby_mode;unsigned char timermode = timer_pwm_mode;unsigned char tempmode;unsigned char calibrateupdate = 0;unsigned char temppolarity
28、 = temp_same;unsigned int txbyte; /*使用8值,采樣adc值的移動(dòng)平均濾波器*/ long tempmeasured8;unsigned char tempmeasuredposition=0;long tempaverage;long tempcalibrated, tempdifference; void initializeleds(void);void initializebutton(void);void preapplicationmode(void); /閃爍的led,等待按下按鈕void configureadctempsensor(void)
29、;void configuretimerpwm(void);void configuretimeruart(void); void transmit(void);void initializeclocks(void);void main(void) unsigned int uartupdatetimer = uart_update_interval; unsigned char i; wdtctl = wdtpw + wdthold; /停止看門狗 initializeclocks(); initializebutton(); initializeleds(); preapplication
30、mode(); /閃爍發(fā)光二極管,等待按下按鈕 /* application mode begins */ applicationmode = app_application_mode; configureadctempsensor(); configuretimerpwm(); _enable_interrupt(); /使能中斷。 /* main application loop */ while(1) adc10ctl0 |= enc + adc10sc; /采樣和轉(zhuǎn)換啟動(dòng) _bis_sr_register(cpuoff + gie); / lpm0與中斷功能 /* 8個(gè)值的移動(dòng)平均濾波
31、器,有些穩(wěn)定采樣的adc */ tempmeasuredtempmeasuredposition+ = adc10mem; if (tempmeasuredposition = 8) tempmeasuredposition = 0; tempaverage = 0; for (i = 0; i = 3; /除以8得到的平均 if (-uartupdatetimer = 0) | calibrateupdate ) configuretimeruart(); if (calibrateupdate) txbyte = 248; /具有高價(jià)值以外的字符 of temp range transmi
32、t(); calibrateupdate = 0; txbyte = (unsigned char)( (tempaverage - 630) * 761) / 1024 ); transmit(); uartupdatetimer = uart_update_interval; configuretimerpwm(); tempdifference = tempaverage - tempcalibrated; if (tempdifference temp_threshold) temppolarity = temp_hot; led_out &= led0; else temppolar
33、ity = temp_same; tacctl0 &= ccie; tacctl1 &= ccie; led_out &= (led0 + led1); if (temppolarity != temp_same) tempdifference = 3; tempdifference += timer_pwm_offset; taccr1 = ( (tempdifference) (timer_pwm_period-1) ? (tempdifference) : (timer_pwm_period-1) ); tacctl0 |= ccie; tacctl1 |= ccie; void preapplicationmode(void) led_dir |= led0 + led1;
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 冀少版八年級(jí)生物上冊(cè)第三、四、五章整合練課件
- 企業(yè)商務(wù)接待規(guī)范指南
- 人力資源合規(guī)風(fēng)險(xiǎn)防范成本分析
- 北京市禮品合同
- 智能化印刷生產(chǎn)施工合同
- 電力系統(tǒng)升級(jí)施工合同范本
- 畜牧業(yè)用地租賃合同
- 社區(qū)義工活動(dòng)策劃與實(shí)施
- 交響樂(lè)團(tuán)指揮聘任合同
- 教育信息化項(xiàng)目投標(biāo)保證金辦法
- 四川省成都市2023-2024學(xué)年高一上學(xué)期語(yǔ)文期中考試試卷(含答案)
- 孫中山誕辰紀(jì)念日主題班會(huì)主題班會(huì)
- 24春國(guó)家開(kāi)放大學(xué)《教育學(xué)》期末大作業(yè)
- 少兒美術(shù)幼兒園課件- 4-6歲 《秋梨》
- 小學(xué)六年級(jí)數(shù)學(xué)計(jì)算題100道(含答案)
- 部編版小學(xué)語(yǔ)文四年級(jí)上冊(cè)第六單元教材分析解讀課件
- 蘋果公司崗位職責(zé)任職要求
- PON網(wǎng)絡(luò)組網(wǎng)安全問(wèn)題研究
- 數(shù)字音效處理器 項(xiàng)目報(bào)告
- 趕工措施施工方案(完整版)
- 隨機(jī)前沿分析完整版
評(píng)論
0/150
提交評(píng)論