历史上的今天
返回首页

历史上的今天

今天是:2025年06月02日(星期一)

正在发生

2018年06月02日 | 关于STM8S IAR 无法下载程序,以及无法进去中断的问题

2018-06-02 来源:eefocus

之前内有用过STM8  一会再用STM32 做一个小项目时 觉得STM8也有库应该很方便就直接选了它,结果调试的时候各种心酸,本想着一天解决的任务,结果拖了三天。接下来介绍一下遇到的主要问题 以及解决方法。

1、IAR无法下载程序问题

 首先关于芯片型号设置就不说了 网上一大堆,主要是Vcap 引脚对地电容的取值,网上普遍说1uF,  由于我做了两个板子 一个PCB一个覆铜板 PCB没问题 ,但是覆铜板1uF 就下不进去程序,后来改成0.1uF才可以。如果软件配置对了,现在不进去很有可能是这个电容的问题。


2、定时器进不去中断问题

 尝试了TIM2 TIM4 都进不去,我是用的是风驰 分享的STM8s207寄存器版本的例程,其他都好 就是定时器不管用,各种都尝试了,就是进不去。后来对比发现 头文件对定时器地址定义不同,大家可以对比看一下 首先是stm8s103.h的头文件中对TIM2的定义


/*-------------------------------------------------------------------------  

 *      TIM2 register definitions  

 *-----------------------------------------------------------------------*/  

/* TIM2 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_TIM2_CR1;  

#endif  

__IO_REG8_BIT(TIM2_CR1,    0x5300, __READ_WRITE, __BITS_TIM2_CR1);  

  

/* TIM2 Interrupt enable register */  

#ifdef __IAR_SYSTEMS_ICC__  

typedef struct  

{  

  unsigned char UIE         : 1;  

  unsigned char CC1IE       : 1;  

  unsigned char CC2IE       : 1;  

  unsigned char CC3IE       : 1;  

  unsigned char             : 2;  

  unsigned char TIE         : 1;  

} __BITS_TIM2_IER;  

#endif  

__IO_REG8_BIT(TIM2_IER,    0x5303, __READ_WRITE, __BITS_TIM2_IER);  

  

/* TIM2 status register 1 */  

#ifdef __IAR_SYSTEMS_ICC__  

typedef struct  

{  

  unsigned char UIF         : 1;  

  unsigned char CC1IF       : 1;  

  unsigned char CC2IF       : 1;  

  unsigned char CC3IF       : 1;  

  unsigned char             : 2;  

  unsigned char TIF         : 1;  

} __BITS_TIM2_SR1;  

#endif  

__IO_REG8_BIT(TIM2_SR1,    0x5304, __READ_WRITE, __BITS_TIM2_SR1);  


其次是stm8s207头文件对TIM2的定义

/*------------------------------------------------------------------------- 

 *      TIM2 register definitions 

 *-----------------------------------------------------------------------*/  

/* TIM2 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_TIM2_CR1;  

#endif  

__IO_REG8_BIT(TIM2_CR1,    0x5300, __READ_WRITE, __BITS_TIM2_CR1);  

  

/* TIM2 interrupt enable register */  

#ifdef __IAR_SYSTEMS_ICC__  

typedef struct  

{  

  unsigned char UIE         : 1;  

  unsigned char CC1IE       : 1;  

  unsigned char CC2IE       : 1;  

  unsigned char CC3IE       : 1;  

  unsigned char             : 2;  

  unsigned char TIE         : 1;  

} __BITS_TIM2_IER;  

#endif  

__IO_REG8_BIT(TIM2_IER,    0x5301, __READ_WRITE, __BITS_TIM2_IER);  

  

/* TIM2 status register 1 */  

#ifdef __IAR_SYSTEMS_ICC__  

typedef struct  

{  

  unsigned char UIF         : 1;  

  unsigned char CC1IF       : 1;  

  unsigned char CC2IF       : 1;  

  unsigned char CC3IF       : 1;  

  unsigned char             : 2;  

  unsigned char TIF         : 1;  

} __BITS_TIM2_SR1;  

#endif  

__IO_REG8_BIT(TIM2_SR1,    0x5302, __READ_WRITE, __BITS_TIM2_SR1);  

  

/* TIM2 status register 2 */  

#ifdef __IAR_SYSTEMS_ICC__  

typedef struct  

{  

  unsigned char             : 1;  

  unsigned char CC1OF       : 1;  

  unsigned char CC2OF       : 1;  

  unsigned char CC3OF       : 1;  

} __BITS_TIM2_SR2;  

#endif  

__IO_REG8_BIT(TIM2_SR2,    0x5303, __READ_WRITE, __BITS_TIM2_SR2);  

  

/* TIM2 event generation register */  

#ifdef __IAR_SYSTEMS_ICC__  

typedef struct  

{  

  unsigned char UG          : 1;  

  unsigned char CC1G        : 1;  

  unsigned char CC2G        : 1;  

  unsigned char CC3G        : 1;  

  unsigned char             : 2;  

  unsigned char TG          : 1;  

} __BITS_TIM2_EGR;  

#endif  

__IO_REG8_BIT(TIM2_EGR,    0x5304, __WRITE, __BITS_TIM2_EGR);  


具体文档就不找了,很明显地址不对,所以大家在只需要把头文件改成自己所用的单片机即可。

推荐阅读

史海拾趣

FREESCALE (NXP)公司的发展小趣事

FREESCALE (NXP) 公司发展的五个故事

故事一:从摩托罗拉剥离到独立上市

FREESCALE的前身可以追溯到摩托罗拉的半导体部门。2002年,面对半导体业务的持续亏损,摩托罗拉集团决定剥离该部门。2004年,摩托罗拉半导体产品事业部正式更名为FREESCALE半导体公司,并在次年成功上市。这一剥离与上市过程标志着FREESCALE作为一个独立实体的诞生,为其后续的发展奠定了基础。独立后的FREESCALE迅速调整战略,专注于嵌入式电子解决方案,特别是在汽车电子、工业控制等领域取得了显著成就。

故事二:与恩智浦(NXP)的合并

2015年,FREESCALE与另一家半导体巨头恩智浦(NXP)达成合并协议,这是半导体行业内的一次重大整合。合并后的公司成为全球最大的汽车半导体供应商之一,并在多个关键技术领域占据领先地位。此次合并不仅增强了双方的市场竞争力,还促进了资源共享和技术创新,为未来的增长开辟了更广阔的空间。合并后的公司在全球范围内拥有更强大的研发和销售网络,能够更好地服务于全球客户。

故事三:从亏损到盈利的转型

在成为独立公司之前,FREESCALE的前身——摩托罗拉的半导体部门曾长期面临亏损困境。然而,在剥离并独立运营后,FREESCALE通过一系列战略调整和市场拓展措施,成功实现了从亏损到盈利的转型。公司注重技术创新和产品研发,不断推出符合市场需求的新产品,同时加强与客户和合作伙伴的合作,共同推动行业发展。这些努力使得FREESCALE在激烈的市场竞争中脱颖而出,成为半导体行业的佼佼者。

故事四:技术创新的引领者

FREESCALE一直致力于技术创新,不断推动半导体技术的进步。公司在嵌入式处理器、模拟芯片、射频芯片等多个领域拥有深厚的技术积累和丰富的产品线。例如,FREESCALE推出的基于Arm Cortex-M系列的微控制器在智能家居、智能穿戴等领域得到了广泛应用;其汽车半导体产品更是广泛应用于高级驾驶员辅助系统、车载网络等领域,为汽车行业的智能化转型提供了有力支持。FREESCALE的技术创新不仅提升了自身产品的竞争力,也为整个行业的发展注入了新的活力。

故事五:全球布局与本地化服务

为了更好地服务全球客户,FREESCALE(及合并后的NXP)在全球范围内进行了广泛的布局。公司在多个国家和地区设立了研发中心、生产基地和销售网络,能够快速响应客户需求并提供本地化服务。同时,FREESCALE还积极与全球各地的合作伙伴建立紧密关系,共同推动技术创新和市场拓展。这种全球布局与本地化服务的策略使得FREESCALE能够更好地融入当地市场,为客户提供更加贴心和高效的服务。

Curtis Electromusic Specialties Inc公司的发展小趣事

在电子行业的激烈竞争中,CUI公司凭借其在材料科学领域的深厚积累,成功研发出了一种新型高性能碘化亚铜材料。这种材料不仅具有优异的导电性能,而且稳定性极高,能够在极端环境下保持稳定的性能。凭借这一技术创新,CUI公司的产品迅速获得了市场的认可,并在多个关键领域得到广泛应用,从而实现了公司的快速发展。

Electronic公司的发展小趣事

华为,作为中国的科技巨头,其在电子行业的发展历程中展现出了强大的技术实力和全球视野。华为在通信领域取得了多项技术突破,如5G技术的领先和智能手机拍照技术的创新。同时,华为还积极拓展全球市场,与全球运营商建立了广泛的合作关系。然而,面对国际市场的复杂环境和竞争压力,华为也面临着诸多挑战和不确定性。

Hind Rectifiers Ltd公司的发展小趣事

华为,作为中国的科技巨头,其在电子行业的发展历程中展现出了强大的技术实力和全球视野。华为在通信领域取得了多项技术突破,如5G技术的领先和智能手机拍照技术的创新。同时,华为还积极拓展全球市场,与全球运营商建立了广泛的合作关系。然而,面对国际市场的复杂环境和竞争压力,华为也面临着诸多挑战和不确定性。

CHONGQING PINGYANG ELECTRONICS CO.,LTD.公司的发展小趣事

重庆平洋电子有限公司,自其1998年3月创立之初,便扎根于重庆这片热土,开始了其在电子行业的探索之旅。当时,电子行业正处于快速发展的阶段,市场竞争激烈。然而,公司凭借对市场的敏锐洞察和对技术的执着追求,成功研发出多款电子元器件,逐渐在市场中站稳脚跟。

ABLIC公司的发展小趣事

在过去的六年里,ABLIC实现了高盈利,这得益于其不断创新的产品线和市场策略。为了进一步拓展业务,ABLIC将目光投向了欧洲市场。欧洲作为全球电子产业的重要区域,对于模拟半导体的需求持续增长。ABLIC凭借其在小型、低功耗和精确模拟半导体产品方面的优势,积极在欧洲市场寻求合作机会,为公司的长远发展奠定了坚实基础。

问答坊 | AI 解惑

逆变三绕组变压器原理和应用研究

本帖最后由 paulhyde 于 2014-9-15 09:02 编辑 没钱花了 所以得赚点外快啊 呵呵 大家顶起啊  …

查看全部问答>

变频器维修入门-图解

  对于变频器修理,仅了解以上基本电路还远远不够的,还须深刻了解以下主要电路。主回路主要由整流电路、限流电路、滤波电路、制动电路、逆变电路和检测取样电路部分组成。图2.1是它的结构图。            ...…

查看全部问答>

初学uc/os ii 用何种编译环境好啊

请教初学用何种编译环境好啊,我用的是lpc2132的片子,请指点…

查看全部问答>

wifi连接WEP加密的ap获得不了ip

ce6.0,用的sd8686,驱动是官方最新的,连接wpa2-psk没问题,连接wep或无密码的ap能连上但获得不了ip 有人遇到过吗…

查看全部问答>

请高手帮我分析一段驱动的代码?菜鸟看不懂啊。

下面是一段中断流驱动的一部分,请问是实现什么功能?是几乘几的矩阵键盘吗?还请高手帮忙在后面帮我注释分析下。 本人只剩30积分了,全给了,很不好意思。 ********************************************************************************** ...…

查看全部问答>

WinCE自带的inbox不能发送邮件

我在使用WinCE自带的inbox时,将账户设成新浪等免费邮箱的帐号,使用发现只能收,不能发。而且在Inbox里没有发现“发送邮件时使用SMTP身份认证的选项”,而后我利用公司内部邮件服务器进行内部邮件发送,可以成功,但外发时同样失败( 因为公司邮件 ...…

查看全部问答>

ARM新一代CPU:Cortex主题沙龙(免费)

《MCU新趋势—Cortex M0/M3/M4 行业应用主题研讨会》                     暨中嵌协会第二期“嵌入式与物联网”主题论坛    ...…

查看全部问答>

TI8962开发板enet-IO demo进行操作系统移植

      enet-io这个例程虽然比较简单但在远程控制上很具有典型性,通读源码,除了用了rawapi的lwip协议栈本身,主要对作者的http层的几个文件进行了研究,发现很有价值,特别是对服务器应用程序和java脚本处理以及网页数据存储 ...…

查看全部问答>