新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MSP430 5438 單片機(jī)學(xué)習(xí)筆記

MSP430 5438 單片機(jī)學(xué)習(xí)筆記

作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò) 收藏
通過(guò)430一年的學(xué)習(xí)遇到的很多問(wèn)題,也收獲了很多,以下是學(xué)習(xí)中遇到的一些問(wèn)題,和解決方法,還有很多沒有整理出來(lái),慢慢整理中。。。。

一、多源中斷問(wèn)題
#pragma vector = PORT2_VECTOR
__interrupt void port2(void)
{
switch(P2IV)
{
case P2IV_P2IFG6:
P2IFG &=~BIT6;
P1OUT ^= BIT0;break; //LED1 亮滅
case P2IV_P2IFG7:
P2IFG &=~BIT7;
P1OUT ^= BIT1;break; //LED2 亮滅
default :break;
}

本文引用地址:http://butianyuan.cn/article/201611/321217.htm

}


#pragma vector = PORT2_VECTOR
__interrupt void port2(void)
{
if(P1IFG&BIT6){
P2IFG &=~BIT6;
}
if(P1IFG&BIT7){
P2IFG &=~BIT7;
}

}

這兩種方法有說(shuō)明不同嗎?上面一種是通過(guò)向量中斷號(hào)進(jìn)行判斷,下面是用中斷標(biāo)志進(jìn)行判斷,在上面的判斷中是否需要用軟件把中斷標(biāo)志清0

二、關(guān)于flash的塊擦除
void Seg_Erase(void){
_DINT();
WDTCTL = WDTPW + WDTHOLD;
char *flase_erase;
flase_erase = (char *)0x8000; //指向要檫寫的段地址
while(FCTL3&BUSY);
FCTL3 = FWKEY; //清除LOCK
FCTL1 = FWKEY +ERASE; //段檫除
*flase_erase = 0; //空寫將0寫為1
FCTL3 = FWKEY + LOCK; //LOCK置1
_EINT();
}
請(qǐng)問(wèn)在進(jìn)行FLASH段擦除的時(shí)候,調(diào)用這個(gè)函數(shù)是只擦除一個(gè)字節(jié)?要進(jìn)行整段擦除的時(shí)候是用for語(yǔ)句調(diào)這個(gè)函數(shù)128次。
還是調(diào)用一次這個(gè)函數(shù)把128個(gè)字節(jié)一起擦除。

三、_root問(wèn)題
當(dāng)編譯器碰到該條指令的時(shí)候就把它進(jìn)行編譯。

四、關(guān)于MSP430的中斷嵌套,和優(yōu)先級(jí)問(wèn)題?

五、msp430沒有自帶的EEPROM,但是information ABCD四個(gè)塊相當(dāng)于EEPROM在5系列中他們的地址分別是
A:001800H~00187fH
B:001880H~0018FFH
C: 001900H~00197FH
D: 001980H~0019FFH

六、硬件乘法器
MPY = 125;
OP2 = 125;
result = RESHI;
result = (result<<16)|RESLO;

result=125*125;

這兩個(gè)編譯的效率哪個(gè)更加高一點(diǎn),result=125*125編譯器會(huì)不會(huì)直接把它編譯成
MPY = 125;
OP2 = 125;
result = RESHI;
result = (result<<16)|RESLO;
使用硬件乘法器去算這個(gè)值。

七、關(guān)于內(nèi)存的問(wèn)題
我在用MSP5438片子求1024點(diǎn)FFT的時(shí)候,定義
float dataR[1024]={0};
float dataI[1024]={0};在RAN區(qū)

定義正余弦表在flash程序存儲(chǔ)器里
const float sin_tab[1024]={.....};
const float cos_tab[1024]={.....};
做軟仿的時(shí)候可以計(jì)算,用JTAG往片子里下的時(shí)候就不行,觀察RAM區(qū)時(shí)候發(fā)現(xiàn),是定義的const float sin_tab[1024]
const float cos_tab[1024]本應(yīng)該在flash區(qū)的數(shù)據(jù),怎么會(huì)出現(xiàn)在RAM區(qū)里?導(dǎo)致不能進(jìn)行仿真。
編譯以后這里看所消耗的資源應(yīng)該是可以的承受的。
892 bytes of CODE memory
8194 bytes of CONST memory
8194 bytes of DATA memory
我是第一次用430的片子,有些問(wèn)題不太明白,望各位大蝦不吝賜教。謝了。


上一頁(yè) 1 2 下一頁(yè)

評(píng)論


技術(shù)專區(qū)

關(guān)閉