今天用了一下IAR-STM8,简单的代码可以正确执行,再把项目文件移植过程后无**确运行;后来想起了STVD4.11中STM8S系列的头文件有问题,仔细核对,真的一摸一样,于是手工修改TIM4的定义,运行基本正常;
STVD4.14 .h
/* 8-Bit Timer 4 (TIM4) */
/*****************************************************************/
/* TIM4 Control register 1 */
DEF_8BIT_REG_AT(TIM4_CR1,0x5340);
/* TIM4 Interrupt enable register */
DEF_8BIT_REG_AT(TIM4_IER,0x5343);
/* TIM4 Status register */
DEF_8BIT_REG_AT(TIM4_SR,0x5344);
/* TIM4 Event Generation register */
DEF_8BIT_REG_AT(TIM4_EGR,0x5345);
/* TIM4 Counter */
DEF_8BIT_REG_AT(TIM4_CNTR,0x5346);
/* TIM4 Prescaler register */
DEF_8BIT_REG_AT(TIM4_PSCR,0x5347);
/* TIM4 Auto-reload register */
DEF_8BIT_REG_AT(TIM4_ARR,0x5348);
iar iostm8s103f.h
/* TIM4 control register 1 */
#ifdef __IAR_SYSTEMS_ICC__
typedef struct
{
unsigned char CEN : 1;
unsigned char UDIS : 1;
unsigned char URS : 1;
unsigned char OPM : 1;
unsigned char : 3;
unsigned char ARPE : 1;
} __BITS_TIM4_CR1;
#endif
__IO_REG8_BIT(TIM4_CR1, 0x5340, __READ_WRITE, __BITS_TIM4_CR1);
/* TIM4 interrupt enable register */
#ifdef __IAR_SYSTEMS_ICC__
typedef struct
{
unsigned char UIE : 1;
unsigned char : 5;
unsigned char TIE : 1;
} __BITS_TIM4_IER;
#endif
__IO_REG8_BIT(TIM4_IER, 0x5343, __READ_WRITE, __BITS_TIM4_IER);
/* TIM4 status register */
#ifdef __IAR_SYSTEMS_ICC__
typedef struct
{
unsigned char UIF : 1;
unsigned char : 5;
unsigned char TIF : 1;
} __BITS_TIM4_SR;
#endif
__IO_REG8_BIT(TIM4_SR, 0x5344, __READ_WRITE, __BITS_TIM4_SR);
/* TIM4 event generation register */
#ifdef __IAR_SYSTEMS_ICC__
typedef struct
{
unsigned char UG : 1;
unsigned char : 5;
unsigned char TG : 1;
} __BITS_TIM4_EGR;
#endif
__IO_REG8_BIT(TIM4_EGR, 0x5345, __WRITE, __BITS_TIM4_EGR);
/* TIM4 counter */
__IO_REG8 (TIM4_CNTR, 0x5346, __READ_WRITE);
/* TIM4 prescaler register */
#ifdef __IAR_SYSTEMS_ICC__
typedef struct
{
unsigned char PSC : 3;
} __BITS_TIM4_PSCR;
#endif
__IO_REG8_BIT(TIM4_PSCR, 0x5347, __READ_WRITE, __BITS_TIM4_PSCR);
/* TIM4 auto-reload register */
__IO_REG8 (TIM4_ARR, 0x5348, __READ_WRITE);
iar iostm.h
#ifdef __IAR_SYSTEMS_ICC__
typedef struct
{
unsigned char CEN : 1;
unsigned char UDIS : 1;
unsigned char URS : 1;
unsigned char OPM : 1;
unsigned char : 3;
unsigned char ARPE : 1;
} __BITS_TIM4_CR1;
#endif
__IO_REG8_BIT(TIM4_CR1, 0x5340, __READ_WRITE, __BITS_TIM4_CR1);
/* TIM4 interrupt enable register */
#ifdef __IAR_SYSTEMS_ICC__
typedef struct
{
unsigned char UIE : 1;
unsigned char : 5;
unsigned char TIE : 1;
} __BITS_TIM4_IER;
#endif
__IO_REG8_BIT(TIM4_IER, 0x5341, __READ_WRITE, __BITS_TIM4_IER);
/* TIM4 status register */
#ifdef __IAR_SYSTEMS_ICC__
typedef struct
{
unsigned char UIF : 1;
unsigned char : 5;
unsigned char TIF : 1;
} __BITS_TIM4_SR;
#endif
__IO_REG8_BIT(TIM4_SR, 0x5342, __READ_WRITE, __BITS_TIM4_SR);
/* TIM4 event generation register */
#ifdef __IAR_SYSTEMS_ICC__
typedef struct
{
unsigned char UG : 1;
unsigned char : 5;
unsigned char TG : 1;
} __BITS_TIM4_EGR;
#endif
__IO_REG8_BIT(TIM4_EGR, 0x5343, __WRITE, __BITS_TIM4_EGR);
/* TIM4 counter */
__IO_REG8 (TIM4_CNTR, 0x5344, __READ_WRITE);
/* TIM4 prescaler register */
#ifdef __IAR_SYSTEMS_ICC__
typedef struct
{
unsigned char PSC : 3;
} __BITS_TIM4_PSCR;
#endif
__IO_REG8_BIT(TIM4_PSCR, 0x5345, __READ_WRITE, __BITS_TIM4_PSCR);
/* TIM4 auto-reload register */
__IO_REG8 (TIM4_ARR, 0x5346, __READ_WRITE);
可以看一下,最后一个定义不同地址 |
|