历史上的今天
返回首页

历史上的今天

今天是:2024年12月07日(星期六)

2021年12月07日 | STM32F4学习笔记5——SysTick定时器

2021-12-07 来源:eefocus

SysTick 定时器被捆绑在 NVIC 中,用于产生 SYSTICK 异常(异常号:15)。在以前,大多操作系统需要一个硬件定时器来产生操作系统需要的滴答中断,作为整个系统的时基。例如,为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律。


Cortex—M4处理器内部包含了一个简单的定时器,该定时器时钟源可以是内部时钟,或者外部时钟的,不过STCLK的具体来源由芯片设计者决定。SysTick定时器能产生中断,CM为他专门开出一个异常类型,并且在向量表中有他的一席之地,共有4个寄存器控制SysTick定时器:

·SysTick控制及状态寄存器 0xE000_E010

第0位RW定时器使能位 第1位RW异常请求位 第2位RW外部内部时钟选择位 第16位计数标志位

·SysTick重装载数值寄存器 0xE000_E014

第0-23RW位当计数到0时将被重装载的值

·SysTick当前数值寄存器 0xE000_E018

第0-23RWc位读取时返回当前倒数计时的值,写它则使寄存器清零同时清除状态标志位

·SysTick校准数值寄存器 0xE000_E01C

第0-23RW位在10ms间隔中倒计数的格数,芯片设计者应该通过输入信号提供该数值,若读回为0则表示无法使用校准功能 第30R位1表示校准值不是准确的10ms,0表示准确的10ms 第31R位1表示没有外部参考时钟,0表示外部参考时钟可用


注:其他保留位置必须保持清零


嘀嗒定时器的运行是基于处理器时钟的,如果因为低功耗模式,时钟信号停止了,那么嘀嗒定时器也会停止的,确保软件使用字对齐访问来访问SysTick 寄存器。系统复位以后重载寄存器和当前值是没有定义的,正确的初始化顺序如下:

·Program reload value.

·Clear current value.

·Program Control and Status register.


void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource)实现时钟源的选择

__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)

{

/* Reload value impossible */

if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1);

SysTick->LOAD = ticks - 1; /* set reload register */

/* set Priority for Systick Interrupt */

NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);

/* Load the SysTick Counter Value */

SysTick->VAL = 0;

/* Enable SysTick IRQ and SysTick Timer */

SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |

SysTick_CTRL_TICKINT_Msk |

SysTick_CTRL_ENABLE_Msk;

/* Function successful */

return (0);

}


这个函数配置的滴答定时器,其中重要的是将滴答定时器优先级默认设置为15,STM32F4xx支持16级的中断嵌套,这里15表示滴答定时器中断无论中断如何设置分组其中断已经是最低等级

推荐阅读

史海拾趣

Crane Connectors公司的发展小趣事

在日益严峻的环保形势下,Crane Connectors公司积极响应国家环保政策,将绿色环保理念融入企业的生产经营活动中。公司采用环保材料和节能技术,减少生产过程中的污染物排放和资源消耗。同时,公司还加强废弃物的回收和处理工作,实现资源的循环利用。这些环保举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实的基础。

Dino-Lite公司的发展小趣事

Dino-Lite公司一直将产品质量视为企业的生命线。公司建立了严格的质量管理体系和检测流程,确保每一台出厂的产品都符合高标准的质量要求。同时,公司还注重售后服务体系的完善和优化,为客户提供及时、专业的技术支持和解决方案。

正是这种对品质的执着追求和对客户的真诚服务,让Dino-Lite公司赢得了客户的信赖和支持。许多客户都成为了公司的忠实粉丝和长期合作伙伴。

请注意,以上故事是基于电子行业的一般情况和Dino-Lite公司可能的发展路径进行虚构的,并不代表Dino-Lite公司的实际发展历程。如需了解更多关于Dino-Lite公司的具体信息和发展故事,建议查阅相关新闻报道、公司官网或行业分析报告。

CDI-DIODE公司的发展小趣事

随着环保意识的日益增强,电子行业也开始向绿色生产转型。CDI-DIODE公司积极响应这一趋势,投入大量资源研发环保型二极管产品,并采用环保材料和生产工艺。这种绿色生产方式不仅降低了公司的生产成本,也符合了社会的可持续发展需求,为公司的未来发展奠定了坚实的基础。

这五个故事虽然是虚构的,但它们反映了电子行业中企业可能面临的一些共同挑战和机遇。无论对于CDI-DIODE公司还是其他企业,这些故事都具有一定的借鉴意义。

EA Elektro-Automatik公司的发展小趣事

随着产品的不断优化和市场的不断扩大,EA Elektro-Automatik开始将目光投向国际市场。公司积极寻求与全球知名企业的合作机会,建立长期且稳定的战略合作关系。通过参与各类国际展会和交流活动,EA Elektro-Automatik的产品和技术得到了更广泛的推广和应用。如今,EA Elektro-Automatik的产品已经出口到全球多个国家和地区,为当地的市场和客户提供了优质的解决方案。

Elpida Memory公司的发展小趣事

在成立初期,Elpida Memory凭借先进的技术和强大的研发实力,迅速在全球DRAM市场占据了一席之地。然而,随着市场竞争的加剧和技术的快速发展,Elpida Memory也面临着巨大的挑战。尤其是在2008年全球金融危机爆发后,DRAM市场需求大幅下降,产品价格暴跌,Elpida Memory的经营状况也陷入了困境。

Franel Corp公司的发展小趣事

为了更好地服务中国市场,法勒公司不断优化其供应链和生产布局。近年来,法勒加大了在国内的投资力度,建设了现代化的生产基地和研发中心。通过本土化生产,法勒不仅降低了产品成本,还缩短了交货周期,提高了市场响应速度。同时,法勒还积极与本土供应商建立紧密的合作关系,共同构建了一个高效、稳定的供应链体系。

问答坊 | AI 解惑

一个任务异常挂起(有相关的定位数据),求进一步的定位方法

操作系统:VxWorks,CPU:MPC860,IDE:Tornado2.0 现象: 1.程序(此程序很大有几十个任务运行)运行一段时间后异常复位,每次复位之间的时间间隔无规律,有时半个小时,有时2个小时,有时5,6个小时。 2.通过打印了解到,是由于一个任务tlongtimer ...…

查看全部问答>

evc4.0 + sp4 + pocket 2003 + CHS下设置成中文环境后,WizardBar里就没有了IDOK和IDCANCEL了.

我在evc4.0 + sp4 + pocket 2003 + CHS下设置成中文环境后,WizardBar里就没有了IDOK和IDCANCEL了,如果不设置中文环境,刚建立项目的时候是有这两项的.我想重载OnOk函数,使按enter回车键的时候不要退出,我已经重载了PreTranslateMessage函数,对回车键 ...…

查看全部问答>

EVC编译错误

我是个新手.我现在用EVC编译Celltrack程序(网上开源的代码) 在EVC编译中出现了\"d:\\program files\\windows ce tools\\wce420\\smartphone 2003\\include\\armv4\\aygshell.h(286) : error C2061: syntax error : identifier \'SIPSTATE\'\"错误. ...…

查看全部问答>

提供手机多国语言点阵字库

我有手机字库,全部外文全部尺寸都可以提供,紧缺的小语种如阿拉伯语、波斯语、泰语、越南语、韩语、日语等齐全。 不过是有偿服务哦,呵呵~~ 有意者可联系我:winwwang@gmail.com…

查看全部问答>

我的学习心得--关于STM3的NVIC

    我的学习心得--关于STM3的NVIC1.异常可分为系统异常和外部中断,异常优先级也即分为系统异常优先级和外部中断优先级。2.中断矢量的顺序决定了异常的硬件优先级。若不进行软件设置异常的优先级(软件优先级),异常优 ...…

查看全部问答>

这段程序怎么理解呢?谢谢

#if !defined (USE_STM3210B_EVAL) &&  !defined (USE_STM3210E_EVAL) //#define USE_STM3210B_EVAL #define USE_STM3210E_EVAL#endif这段程序怎么理解?谢谢?…

查看全部问答>

音频解码芯片

有需要VS1053  VS1063  联系我QQ2314116323…

查看全部问答>

边缘处理

对于高性能计算市场你了解多少?对于DSP的实时性你了解多少?对于边缘生存你是怎么理解的?快快下载附件,我们一起找答案~ …

查看全部问答>

请教关于stm32 TIM比较中断

我想让TIM3工作于PWM1模式 向上计数,并产生CCR1中断,现在情况是我用软件仿真时,在main的while循环时,计数到CCR1时可以进如中断,但在硬件仿真的时候,当执行完TIM_Cmd(TIM3,ENABLE); 时,CNT立马从0x0000变成0x6F10,直接超出了ccr1的值,并且C ...…

查看全部问答>

LPC1500体验+驱动P10 LED面板

本帖最后由 digitaltek 于 2014-8-10 09:24 编辑        现在的在外面看到的做广告的单色LED面板,很多都是P10面板组合起来的,单个P10面板的尺寸是16*32,如果要更高的分辨率就用多块P10拼起来,一般如果拼起来的尺寸比较大 ...…

查看全部问答>