1

プログラムのコンパイルとリンクに MSPGCC を使用しています。リンカ コマンド ファイルでハードウェア アドレスがどのように割り当てられているかを確認したいと思います。デバイスのヘッダー ファイル内に次の行が見つかりました。

/* External references resolved by a device-specific linker command file */
#define SFR_8BIT(address)   extern volatile unsigned char address
#define SFR_16BIT(address)  extern volatile unsigned int address

ファイルのさらに進んで、GPIO セクションの下に次のような行を見つけました。

SFR_8BIT(P1IN);                               /* Port 1 Input */
SFR_8BIT(P1OUT);                              /* Port 1 Output */
SFR_8BIT(P1DIR);                              /* Port 1 Direction */
SFR_8BIT(P1IFG);                              /* Port 1 Interrupt Flag */

私が見たいのは、P1IN がどのように定義されているかです。それが何であるかをよりよく理解して、それを使用できるようにしようとしています。

次のように使用できることがわかりました。

P1OUT &= 0xF7; // clear bit 3

アドレスがどのように割り当てられているかをよりよく理解できるように、リンカー ファイルを見つけたいと思います。データシートを見るだけでそれが何であるかを確認できることはわかっていますが、リンカーがそれをどのように見つけているか知りたいです。

4

1 に答える 1

4

それらはファイルで定義されていますmsp430g2553.cmd

/************************************************************
* DIGITAL I/O Port1/2 Pull up / Pull down Resistors
************************************************************/
P1IN               = 0x0020;
P1OUT              = 0x0021;
...

PS: 私は CCS を使用しています。このファイルはpath\to\ccs\ccs_base\msp430\include、ヘッダー ファイルとともに にありますmsp430g2553.h

于 2013-09-14T06:18:47.170 に答える