MSP430 開發注意事項要求

2021-07-16 12:01:10 字數 1483 閱讀 8027

以下是在使用msp430中的一些總結: 

1.系統時鐘問題:

系統預設使用dco,使用外部高速晶振xt2時必須自己開啟xt2,並延時50us等待xt2起振,然後手工清除ifg1中的ofifg位

!!!!一定要注意操作順序:開啟xt2->等待xt2穩定->切換系統時鐘為xt2

若後面兩步操作反了,在通常情況下不會出現問題,但是在電壓不穩mcu頻繁復位的情況下,非常容易造成mcu死掉,只能掉電後重新上電才能可靠復位。

2.早期版本的iar開發環境

必須在project->option->c-spy中選擇對應器件的ddf檔案,否則除錯時無sfr視窗。

3.在寫flash期間,一定要關閉中斷,此時cpu無法執行程式

4.除錯的時候,不要選中"release jtag on go"

5.在除錯時,需要關閉看門狗,否則在開啟看門狗的情況下,每當執行到斷點,程式將會跳轉到入口點從頭執行。或者,暫停執行或停止到斷點處時,當需要繼續執行時,程式不再執行,而是需要使用「同步jtag」才能繼續執行(從頭執行?)

6. iar ewb識別符號是區分大小寫的

7. 結構變數內部存在對齊要求,通常按照2個位元組的位置對齊,在"c/ec++ compiler reference guide"的p93又如下例子:

struct s;

sizeof(s) 為10,而不是8

可以使用#pragma pack來改變這種對齊方式,但是會導致,這個結構只能按位元組方式訪問

8. msp430 iar c/ec++ compiler支援兩個執行庫

1. iar clib : 主要用於8或16為處理器,不完全相容iso/ansi c,也不完全支援ieee     754浮點數,不支援embedded c++.

2. iar clib : 支援iso/ansi c和embedded c++.

9. cstartup的定製

(1). 在__low_level_init()中新增**。該函式可以用來初始化i/o暫存器,並決定資料段是否在cstartup被初始化。檔案430\src\lib\lowinit.c給出了框架,copy到專案目錄中使用,檔案中有一定的使用說明。

(2) 若__low_level_init()中新增**不能滿足要求,則把430\src\lib\cstartup.s43拷貝到自己的工作目錄,修改所需**;然後在將該檔案新增到專案,在專案選型的xlink的include頁下選擇ignore cstartup in library即可。

10. 使用#include "io430x14x.h"和#include "in430.h"來替代#include

可以使用定義的位變數

可以使用以下方式定義位變數,但是編譯器最終還是轉換為位元組操作:

struct

ie1_bit;

不推薦使用bitfields,效率很低

11. 陣列的索引值用int型效率最高,char型也好略低

陣列型別:char型陣列效率最高,

其他型別的陣列在索引時,都採用了乘法

使用MSP430注意的問題

i nclude 指要在編輯器設定目錄下,i nclude 指的是在當前工程目錄下。2.要呼叫另乙個檔案中的函式,要把這個函式檔案放到當前工程目錄下,並且在工程中新增此檔案。3.命名中不能有 比如 byq ee會認為是錯誤的,要用下劃線。4.用iar軟體 時,可以加入變數,如果是檢視i o資訊只需加...

專案要求注意事項

專案要求注意事項 一 專案評分的三個方面 l 60 l 文件 20 l 答辯 20 二 專案每個方面的要求 1 l 規範,如 命名規範 縮排規範 注釋規範等。嚴格參照電子書 高質量 c 程式設計指南 的 規範。l 及格標準 具備壓縮 解壓兩個功能。l 採用新技術 使用新演算法可加分。l 增加新功能可...

MSP430 開發中遇到的坑(待續)

1 sprintf 格式化結果與預期不符 現象 sprintf buf,0x 02x hex buf 輸出的 0x 7830 中間遇到問題,上網查了半天能查到的方法都測試過了,問題未解決 最後的解決辦法 include stdio.h 想死的心都有 2 在 定時器中 呼叫串列埠傳送資料 導致資料亂碼...