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

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, 下载次数: 1, 下载积分: ST金币 -1

STM8S-NG.zip

下载

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

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

举报

12个回答
七哥 回答时间: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

查看全部评分

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

傲游截图20180419110350.png

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

多谢toofree,确实如此。还是第二中方法好,尽量不去改变库文件
hqw 回答时间:2018-4-19 14:05:36
springvirus 发表于 2018-4-19 11:04
怎么不用st官方的st visual develop的环境,挺好用的

STVD,软件仿真观察不到局部变量,也没法做到STOPWATCH,我是不得已才舍弃它的。你能在软件仿真时看到局部变量吗?
hqw 回答时间:2018-4-19 14:14:17
zcl201207 发表于 2018-4-18 22:06
TIM3不是由h文件决定的,而是由选择的型号决定的。。。

对,多谢

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版