你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

IAR for stm8编译出错

[复制链接]
hqw 提问时间:2018-4-18 19:48 /
附件STM8S-OK是可以编译成功的,STM8S-NG在这个项目的基础上,在STM8S_StdPeriph_Driver下添加了stm8s_tim3.c后就不行了(其他地方都没有改动),如下图
22.png

STM8S-OK.zip

下载

1.78 MB, 下载次数: 0, 下载积分: ST金币 -1

STM8S-NG.zip

下载

2.02 MB, 下载次数: 1, 下载积分: ST金币 -1

收藏 评论12 发布时间:2018-4-18 19:48

举报

12个回答
toofree 回答时间:2018-4-18 19:58:41
你用的是STM8S103F3P6,关键的问题不是出错,而是这个片子没有TIM3
傲游截图20180418195737.png

傲游截图20180418195651.png

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

zcl201207 回答时间:2018-4-18 22:06:10
TIM3不是由h文件决定的,而是由选择的型号决定的。。。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

feixiang20 回答时间:2018-4-18 23:30:17
换个板子看看,或者,换个芯片
wudianjun2001 回答时间:2018-4-19 08:54:01
提示TIM3没定义,到寄存器定义的地址里看看到底是TIM几

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

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. */
/**
  * @}
  */

/*----------------------------------------------------------------------------*/
/**
  * @brief  16-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. */

/**
  * @}
  */

/*----------------------------------------------------------------------------*/
/**
  * @brief  16-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. */
/**
  * @}
  */



A1.png
A2.png

STM8S-NG - 副本.zip

下载

1.9 MB, 下载次数: 1, 下载积分: ST金币 -1

点评

结贴奖励  发表于 2018-4-19 17:10

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

springvirus 回答时间:2018-4-19 11:04:02
怎么不用st官方的st visual develop的环境,挺好用的

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

toofree 回答时间:2018-4-19 11:04:09
本帖最后由 toofree 于 2018-4-19 11:10 编辑

傲游截图20180419110350.png

只要增加TIM3的宏定义——#define TIM3 ((TIM3_TypeDef *) TIM3_BaseAddress),就可以说编译过了。但是只是能编译过,实际肯定是不能用的。
傲游截图20180419110949.png
toofree 回答时间:2018-4-19 11:14:03
实际用的时候不用删除文件,只要把它排除在外,不编译就行了。
傲游截图20180419111317.png
hqw 回答时间:2018-4-19 13:27:45
toofree 发表于 2018-4-19 11:14
实际用的时候不用删除文件,只要把它排除在外,不编译就行了。

多谢toofree,确实如此。还是第二中方法好,尽量不去改变库文件
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版