hqw 发表于 2018-4-18 19:48:47

IAR for stm8编译出错

附件STM8S-OK是可以编译成功的,STM8S-NG在这个项目的基础上,在STM8S_StdPeriph_Driver下添加了stm8s_tim3.c后就不行了(其他地方都没有改动),如下图

toofree 发表于 2018-4-18 19:58:41

你用的是STM8S103F3P6,关键的问题不是出错,而是这个片子没有TIM3



zcl201207 发表于 2018-4-18 22:06:10

TIM3不是由h文件决定的,而是由选择的型号决定的。。。:):):)

feixiang20 发表于 2018-4-18 23:30:17

换个板子看看,或者,换个芯片

wudianjun2001 发表于 2018-4-19 08:54:01

提示TIM3没定义,到寄存器定义的地址里看看到底是TIM几

hqw 发表于 2018-4-19 10:46:23

toofree 发表于 2018-4-18 19:58
你用的是STM8S103F3P6,关键的问题不是出错,而是这个片子没有TIM3

多谢你的指点,是这个原因了。但我还有个问题,在stm8s.h里,对tim1,Tim2,tim3的定义都是紧挨在一起,而且在它们(特别是tim3)前面并没有看到#if define ,按理在编译的时候,tim1,tim2能编译到,tim3也应能编译到的吧?
   我知道,我是在下图选了103,但这个选择是如何作用到stm8s.h里的tim3定义上,让tim3的定义不会被编译的呢?
stm8s.h里有关TIM1,TIM2,TIM3de的定义如下(局部),完整的请看我所附的项目
TIM1_TypeDef;

/** @addtogroup TIM1_Registers_Reset_Value
* @{
*/

#define TIM1_CR1_RESET_VALUE   ((uint8_t)0x00)

#define TIM1_DTR_RESET_VALUE   ((uint8_t)0x00)
#define TIM1_OISR_RESET_VALUE((uint8_t)0x00)

/**
* @}
*/

/** @addtogroup TIM1_Registers_Bits_Definition
* @{
*/
/* CR1*/
#define TIM1_CR1_ARPE    ((uint8_t)0x80) /*!< Auto-Reload Preload Enable mask. */

#define TIM1_OISR_OIS1N((uint8_t)0x02) /*!< Output Idle state 1 (OC1N output) mask. */
#define TIM1_OISR_OIS1   ((uint8_t)0x01) /*!< Output Idle state 1 (OC1 output) mask. */
/**
* @}
*/

/*----------------------------------------------------------------------------*/
/**
* @brief16-bit timer (TIM2)
*/

typedef struct TIM2_struct
{

}
TIM2_TypeDef;

/** @addtogroup TIM2_Registers_Reset_Value
* @{
*/


#define TIM2_CCR3L_RESET_VALUE ((uint8_t)0x00)

/**
* @}
*/

/** @addtogroup TIM2_Registers_Bits_Definition
* @{
*/

#define TIM2_CCR3L_CCR3((uint8_t)0xFF) /*!< Capture/Compare 3 Value (LSB) mask. */

/**
* @}
*/

/*----------------------------------------------------------------------------*/
/**
* @brief16-bit timer (TIM3)
*/
typedef struct TIM3_struct
{

__IO uint8_t CCR2L; /*!< capture/compare register 2 low */
}
TIM3_TypeDef;

/** @addtogroup TIM3_Registers_Reset_Value
* @{
*/


#define TIM3_CCR2L_RESET_VALUE ((uint8_t)0x00)

/**
* @}
*/

/** @addtogroup TIM3_Registers_Bits_Definition
* @{
*/
/*CR1*/

#define TIM3_CCR2L_CCR2((uint8_t)0xFF) /*!< Capture/Compare 2 Value (LSB) mask. */
/**
* @}
*/



springvirus 发表于 2018-4-19 11:04:02

怎么不用st官方的st visual develop的环境,挺好用的

toofree 发表于 2018-4-19 11:04:09

本帖最后由 toofree 于 2018-4-19 11:10 编辑



只要增加TIM3的宏定义——#define TIM3 ((TIM3_TypeDef *) TIM3_BaseAddress),就可以说编译过了。但是只是能编译过,实际肯定是不能用的。

toofree 发表于 2018-4-19 11:14:03

实际用的时候不用删除文件,只要把它排除在外,不编译就行了。

hqw 发表于 2018-4-19 13:27:45

toofree 发表于 2018-4-19 11:14
实际用的时候不用删除文件,只要把它排除在外,不编译就行了。

多谢toofree,确实如此。还是第二中方法好,尽量不去改变库文件
页: [1] 2
查看完整版本: IAR for stm8编译出错