历史上的今天
返回首页

历史上的今天

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

正在发生

2020年02月09日 | 解决stm8s003中timer2配置初始化中引起中断更新

2020-02-09 来源:eefocus

概述

本文简要记述关于stm8s003中初始化timer2立即进入中断的解决方法:

在调试stm8 tim2作为100ms定时器的时候发现,在enable timer2后,不久远远小于100ms大概800us左右就会立即进入中断(更新事件触发),无论是怎样设置先后顺序,以及在enable中断之前清除中断状态位都无法解决进入中断的问题。此处澄清真的不是st的bug,不过这种设计不是我等小白能够领悟到的,哈哈!


搜索

在度娘中搜索到的结果一般解决方法都是等待第一次触发后清除事件再打开中断。出于对知(领)识(导)的好(压)奇(迫),便寻找解决方法,最终找到了问题的根源(google大法好:https://community.st.com/s/question/0D50X00009XkWotSAF/premature-tim2-interrupt-happening-immediately-on-timer-start)


原因

究其原因是因为在初始化中对预分频器(ARRPreload)进行了更新。实际上在触发更新时间后,该寄存器的配置才会生效(spec中有说明),故进入中断的原因是因为预分频器数值默认为0(写文章时并没有考究是不是0,反正远远小于我设置的数值),才在使能后短时间内触发中断,实际上是真的溢出触发了中断。


附上大家喜爱的代码,亲测可用,基于2M HSI CLK


这里没有列出中断函数,清中断神马的就不是问题的根源,不在赘述(代码不在此电脑中,懒得考了)


static void TIM2_Start()

{

GPIO_WriteReverse(GPIOA, GPIO_PIN_1);//测试用

GPIO_WriteReverse(GPIOA, GPIO_PIN_2);//测试用

TIM2_Cmd(ENABLE);

}

static void TIM2_Stop()

{

TIM2_Cmd(DISABLE);

GPIO_WriteReverse(GPIOA, GPIO_PIN_2);

TIM2_UpdateDisableConfig(ENABLE);

TIM2_GenerateEvent(TIM2_EVENTSOURCE_UPDATE);

  TIM2_UpdateDisableConfig(DISABLE);

}

static void TIM2_Config(void)

{

TIM2_DeInit();


/* Time base configuration */

TIM2_TimeBaseInit(TIM2_PRESCALER_128, 0x061b);

TIM2_ARRPreloadConfig(ENABLE);

TIM2_UpdateRequestConfig(TIM2_UPDATESOURCE_REGULAR);//中断源选择为只有溢出才能触发

TIM2_GenerateEvent(TIM2_EVENTSOURCE_UPDATE);//产生更新事件,不触发中断(这就是我的解决方法,此处即更新了预分频器)

TIM2->SR1 &= 0xFE;//清除中断,按常理应该没用

TIM2->IER |= 0X01;//使能TIMER



}


[1]:我的GITHUB原文 https://ladudu.github.io/2018/11/28/STM8S_TIMER2_INTERRUPT/


[2]: 参考 https://community.st.com/s/question/0D50X00009XkWotSAF/premature-tim2-interrupt-happening-immediately-on-timer-start

推荐阅读

史海拾趣

Electromagnetic Industries Llp公司的发展小趣事

进入21世纪,随着科技的不断进步,电子行业对产品的性能和质量要求越来越高。EMI公司意识到,只有不断创新才能在激烈的市场竞争中立于不败之地。因此,公司加大了对研发的投入,引进了一批高端技术人才,并建立了完善的研发体系。经过几年的努力,EMI公司成功研发出了一系列具有自主知识产权的电磁产品,这些产品在性能和质量上均达到了国际先进水平,赢得了客户的广泛赞誉。

Glorious Sources Co Ltd公司的发展小趣事
在光学实验中,用于演示光的传播、反射、折射等现象;在光学教学中,作为辅助教学工具帮助学生理解光学原理。
Compostar Technology Co Ltd公司的发展小趣事

Compostar Technology Co Ltd公司自成立以来,一直致力于电子技术的研发与创新。在早期,公司凭借一款具有高效能耗比的电源管理芯片,成功打入了市场。随着技术的不断进步,公司逐渐将业务扩展到通信、智能家居和可穿戴设备等多个领域。公司不断投入研发资金,吸引了一批优秀的科研人才,成功研发出多款具有竞争力的产品,逐渐在电子行业中树立了良好的口碑。

EXCELTA公司的发展小趣事

随着科技的不断进步和市场的不断变化,Excelta始终将技术创新作为公司发展的核心驱动力。公司投入大量资金和资源进行技术研发和产品创新,不断推出具有竞争力的新产品。其中,一款高性能的微型连接器产品凭借其出色的性能和稳定性在市场上取得了巨大成功。此外,Excelta还积极探索新的应用领域和市场机会,为公司的持续发展注入了新的活力。

E-Mark Inc公司的发展小趣事

JKL公司是一家创新型电子企业,专注于研发新能源汽车电子控制系统。为了推动新能源汽车的发展并满足欧洲市场的需求,JKL公司决定对其产品进行E-Mark认证。在认证过程中,JKL公司积极投入研发资源,不断创新技术,提升产品的智能化和安全性。最终,JKL公司的产品成功获得了E-Mark认证,并在欧洲市场得到了广泛应用和认可。这一认证不仅加速了JKL公司新能源汽车技术的市场推广速度,也提升了公司在国际市场的竞争力。

Amphion Semiconductor Ltd公司的发展小趣事

DEF公司是一家跨国电子企业,在欧洲和中国都有生产基地。为了提升产品竞争力,DEF公司决定将其中国生产基地的产品进行E-Mark认证。通过跨国合作和技术交流,DEF公司成功地将中国生产的产品提升到符合欧洲标准的水平,并获得了E-Mark认证。这一认证不仅增强了DEF公司产品的市场竞争力,也促进了中欧之间的经贸合作。

问答坊 | AI 解惑

STM32 固件寄存器配置

请教高手:我还是不太明白,固件寄存器是怎么和PPPI_nitTypeDef中的参数联系起来的?为什么不需要对固件寄存器进行 OX xxxx 的赋值来配置呢?…

查看全部问答>

急求:信号发生器

毕业设计,急,设计一个信号发生器,最好用单片机实现。要求如下: 1.至少实现三个波形,正弦、方波、三角波,还个锯齿波。 2.可以调频调幅,频率10~20KHZ以上,幅度0~5V步进可以自己设定,频率达不到,至少能上KHZ。 3.LED显示,键盘输入。 有 ...…

查看全部问答>

前两天,一个48岁结构工程师从公司离职

公司以他不能够胜任他的岗位工作为由,要求他离开。唉,从他的境况看到,35岁还从事具体的设计工作的人员以后的生存缩影!…

查看全部问答>

请问这道题为什么选C?

某计算机的cache共有16块,采用2路组相联映射方式(即每组2块)。每个主存块大小为32字节,按字节编址。主存129号单元所在主存块应装入到的Cache组号是 A.0  B.2   C.4  D.6…

查看全部问答>

怎样让触摸屏右键出来慢一些

就是按住不动时,那一圈黑点慢慢地出来。…

查看全部问答>

请问,WINCE注册表[HKEY_LOCAL_MACHINE\Drivers\BuiltIn]下的DLL都会被设备管理器加载吗?

我在移植SDIO驱动SDHC_SC2440.dll,它在注册表里的项如下。但是我感觉它的入口函数DllEntry、初始化函数SDH_Init没有执行。 我在开头用printf打印,在串口上没看到输出。 在[HKEY_LOCAL_MACHINE\\Drivers\\Active]下确实也没看到这个DLL。 难道 ...…

查看全部问答>

关于入门求助

我是刚参加工做的应届毕业生,由于单位使用的环境是VxWorks,进行嵌入式软件开发,主要是开发通信方面的软件,希望有好心人能推荐比较好的入门书籍,(由于保密的需要所以不能在上班期间上网,所以只能是看书籍等资料了)小弟先谢谢了〉。。。。。…

查看全部问答>

多路视频采集卡驱动程序思想(构架)请教

我们现在已经做了一个单路的视频采集卡(包括硬件和驱动程序都是自己实现的),用的是SAA7130。但现在要做一个多路的视频采集卡,仍然用SAA7130,这里需要加一个桥路。硬件比较好实现,可我不太清楚驱动程序这一块和单路的是否有很大不同。请过来人 ...…

查看全部问答>

初学c51,xdata的相关问题.

初学c51,对xdata的地址分配不是很了解,比如我定义了以下几个变量。 unsigned char xdata        b1; unsigned char xdata        b2; unsigned int xdata      b3; unsigned ch ...…

查看全部问答>

MSP430 LaunchPad支持那些20Pin的IC

MSP430 LaunchPad支持那些20Pin的IC,我来弄点玩玩,14Pin不够用啊…

查看全部问答>