第一次接觸msp430的晶元,第一次使用ccs開發環境,花了將近乙個星期的時間,才把msp430串列埠公升級做出來。
在lnk_msp430fg479.cmd中修改boot flash的起始位址(0xf000~0xffe0),將近4k的flash
memory
// timer a0 interrupt service routine
#if defined(__ti_compiler_version__) || defined(__iar_systems_icc__)
#pragma vector=timera0_vector
__interrupt void timer_a (void)
#elif defined(__gnuc__)
void __attribute__ ((interrupt(timera0_vector))) timer_a (void)
#else
#error compiler not supported!
#endif
#if defined(__ti_compiler_version__) || defined(__iar_systems_icc__)
#pragma vector=sd16a_vector
__interrupt void sd16isr(void)
#elif defined(__gnuc__)
void __attribute__ ((interrupt(sd16a_vector))) sd16isr (void)
#else
#error compiler not supported!
#endif
// watchdog timer interrupt service routine
#if defined(__ti_compiler_version__) || defined(__iar_systems_icc__)
#pragma vector=wdt_vector
__interrupt void watchdog_timer(void)
#elif defined(__gnuc__)
void __attribute__ ((interrupt(wdt_vector))) watchdog_timer (void)
#else
#error compiler not supported!
#endif
#if defined(__ti_compiler_version__) || defined(__iar_systems_icc__)
#pragma vector=usciab0rx_vector
__interrupt void usci_a0_rx (void)
#elif defined(__gnuc__)
void __attribute__ ((interrupt(usciab0rx_vector))) usci_a0_rx (void)
#else
#error compiler not supported!
#endif
// else
// }
while(1)
}if(rx_buf_index > 5)}}
rx_buf_index = 0;
} }
flash讀寫,msp430fg479這款mcu,乙個片區512位元組,所以需要整片512位元組的擦除寫入。每次寫入前,先把該片區的512位元組讀取到快取中,再將需要修改的內容填充到快取中,最後一次將512位元組寫入flash片區
msp430鍵盤程式
msp430 按鍵程式 含電路圖及源 include void init port void void delay void int keyprocess void return nres 處理來自埠 1 的中斷 interrupt port1 vector void port isr void i...
MSP430電平轉換
說道到這個電平轉換,寫程式的時候居然還要示波器來觀察現象,表示我們交的是211的學費,上的卻不是211大學,創新實驗室的儀器裝置真的是少的可憐啊,我級不吐槽了說說這個電平轉換的一些知識還有看法吧。看到原理圖首先得說說接線帽的問題,這個很重要,接線帽 的使用會連線到不同的引腳上,大家看原理圖的時候就會...
MSP430學習收穫
一 程式中最好不要出現乘和除,影響效率。aiver sum 16可以換成aiver sum 4 二 低功耗就是精煉減少cpu工作時間。靠讓cpu進入休眠來實現。只能用中斷和復位可以喚醒休眠。三 中斷函式前加上 interruput關鍵字表明是中斷函式式中斷函式 注意是兩個 四 pragmati cv...