chahu 发表于 2011-6-30 23:37:24

(新手小白问题)IAR中的寄存器定义

最近用本站下载的IAR 5.50写lpc的程序,发现SPI寄存器如SPCCR等不好使用,只能自己加了网上找的头文件,请问IAR中是否已有头文件?
添加头文件如
/* SPI (Serial Peripheral Interface) */
/* SPI总线接口的特殊寄存器 */
#define SPI_SPCR      (*((volatile unsigned short *) 0xE0020000))
#define SPI_SPSR      (*((volatile unsigned char *) 0xE0020004))
#define SPI_SPDR      (*((volatile unsigned short *) 0xE0020008))
#define SPI_SPCCR       (*((volatile unsigned char *) 0xE002000C))
#define SPI_SPINT       (*((volatile unsigned char *) 0xE002001C))
在iolpc2103中有这样的定义
/***************************************************************************
**
** SPI
**
***************************************************************************/
__IO_REG32_BIT(S0SPCR,          0xE0020000,__READ_WRITE,__spcr_bits);
__IO_REG32_BIT(S0SPSR,          0xE0020004,__READ      ,__spsr_bits);
__IO_REG32_BIT(S0SPDR,          0xE0020008,__READ_WRITE,__spdr_bits);
__IO_REG32_BIT(S0SPCCR,         0xE002000C,__READ_WRITE,__spccr_bits);
__IO_REG32_BIT(S0SPINT,         0xE002001C,__READ_WRITE,__spint_bits);

/***************************************************************************
为什么无法直接使用呢?

apcfy 发表于 2011-11-3 14:42:39

/* Clock divider register */
#ifdef __IAR_SYSTEMS_ICC__
typedef struct
{
unsigned char CPUDIV      : 3;
unsigned char HSIDIV      : 2;
} __BITS_CLK_CKDIVR;
#endif
__IO_REG8_BIT(CLK_CKDIVR,0x50C6, __READ_WRITE, __BITS_CLK_CKDIVR);

随便搭车问下上面这段的意思。。。哪位能抽空讲解下吗?
为什么对CLK_CKDIVR赋值,结果CPUDIV = 0; HSIDIV =11;呢?这是怎么来的!
页: [1]
查看完整版本: (新手小白问题)IAR中的寄存器定义