<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MSP430開(kāi)發(fā)注意事項(xiàng)

          MSP430開(kāi)發(fā)注意事項(xiàng)

          作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò) 收藏
          以下是在使用MSP430中的一些總結(jié):

          1.系統(tǒng)時(shí)鐘問(wèn)題:

          本文引用地址:http://www.ex-cimer.com/article/201611/321924.htm

          系統(tǒng)默認(rèn)使用DCO,使用外部高速晶振XT2時(shí)必須自己開(kāi)啟XT2,并延時(shí)50us等待XT2起振,然后手工清除IFG1中的OFIFG位

          !!!!一定要注意操作順序:打開(kāi)XT2->等待XT2穩(wěn)定->切換系統(tǒng)時(shí)鐘為XT2

          若后面兩步操作反了,在通常情況下不會(huì)出現(xiàn)問(wèn)題,但是在電壓不穩(wěn)MCU頻繁復(fù)位的情況下,非常容易造成MCU死掉,只能掉電后重新上電才能可靠復(fù)位。

          2.早期版本的IAR開(kāi)發(fā)環(huán)境

          必須在Project->Option->C-Spy中選擇對(duì)應(yīng)器件的DDF文件,否則調(diào)試時(shí)無(wú)SFR窗口。

          3.在寫(xiě)Flash期間,一定要關(guān)閉中斷,此時(shí)CPU無(wú)法執(zhí)行程序

          4.調(diào)試的時(shí)候,不要選中”Release JTAG on Go”

          5.在調(diào)試時(shí),需要關(guān)閉看門(mén)狗,否則在打開(kāi)看門(mén)狗的情況下,每當(dāng)執(zhí)行到斷點(diǎn),程序?qū)?huì)跳轉(zhuǎn)到入口點(diǎn)從頭執(zhí)行?;蛘撸瑫和_\(yùn)行或停止到斷點(diǎn)處時(shí),當(dāng)需要繼續(xù)運(yùn)行時(shí),程序不再執(zhí)行,而是需要使用“同步JTAG”才能繼續(xù)運(yùn)行(從頭運(yùn)行?)

          6. IAR EWB標(biāo)識(shí)符是區(qū)分大小寫(xiě)的

          7. 結(jié)構(gòu)變量?jī)?nèi)部存在對(duì)齊要求,通常按照2個(gè)字節(jié)的位置對(duì)齊,在”C/EC++ Compiler Reference Guide”的P93又如下例子:

          struct {

          short s;

          char c;

          long l;

          char c2;

          } s;

          sizeof(s) 為10,而不是8

          可以使用#pragma pack來(lái)改變這種對(duì)齊方式,但是會(huì)導(dǎo)致,這個(gè)結(jié)構(gòu)只能按字節(jié)方式存取

          8. MSP430 IAR C/EC++ Compiler支持兩個(gè)運(yùn)行庫(kù)

          1. IAR CLIB : 主要用于8或16為處理器,不完全兼容ISO/ANSI C,也不完全支持IEEE754浮點(diǎn)數(shù),不支持Embedded C++.

          2. IAR CLIB : 支持ISO/ANSI C和Embedded C++.

          9. cstartup的定制

          (1). 在__low_level_init()中添加代碼。該函數(shù)可以用來(lái)初始化I/O寄存器,并決定數(shù)據(jù)段是否在cstartup被初始化。文件430srcliblowinit.c給出了框架,copy到項(xiàng)目目錄中使用,文件中有一定的使用說(shuō)明。

          (2) 若__low_level_init()中添加代碼不能滿(mǎn)足要求,則把430srclibcstartup.s43拷貝到自己的工作目錄,修改所需代碼;然后在將該文件添加到項(xiàng)目,在項(xiàng)目選型的XLINK的include頁(yè)下選擇Ignore CSTARTUP in library即可。

          10. 使用#include “io430x14x.h”和#include “in430.h”來(lái)替代#include

          可以使用定義的位變量

          可以使用以下方式定義位變量,但是編譯器最終還是轉(zhuǎn)換為字節(jié)操作:

          struct

          {

          unsigned char WDTIE : 1;

          unsigned char OFIE : 1;

          unsigned char : 2;

          unsigned char NMIIE : 1;

          unsigned char ACCVIE : 1;

          unsigned char URXIE0 : 1;

          unsigned char UTXIE0 : 1;

          } IE1_bit;

          不推薦使用bitfields,效率很低

          11. 數(shù)組的索引值用int型效率最高,char型也好略低

          數(shù)組類(lèi)型:char型數(shù)組效率最高,

          其他類(lèi)型的數(shù)組在索引時(shí),都采用了乘法



          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();