历史上的今天
返回首页

历史上的今天

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

正在发生

2021年09月02日 | STM32—SysTick系统定时器

2021-09-02 来源:eefocus

SysTick是STM32中的系统定时器,利用SysTick可以实现精确的延时。

SysTick—系统定时器

属于 CM3 内核中的一个外设,内嵌在 NVIC 中。系统定时器是一个 24bit 的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,一般我们设置系统时钟 SYSCLK 等于 72M。当重装载数值寄存器的值递减到 0 的时候,系统定时器就产生一次中断,以此循环往复。因为 SysTick 是属于 CM3 内核的外设,所以所有基于 CM3 内核的单片机都具有这个系统定时器,使得软件在 CM3 单片机中可以很容易的移植。系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。


延时模式:

SysTick的延时可以有俩种模式:

1.单纯递减延时

2.利用void SysTick_Handler(void) 中断函数延时


俩种方法都涉及到一个函数,那就是SysTick 配置库函数 ,


__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)

 {

 // 不可能的重装载值,超出范围

 if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)

  {

  return (1UL);

 }


 // 设置重装载寄存器

 SysTick->LOAD = (uint32_t)(ticks - 1UL);


 // 设置中断优先级

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


// 设置当前数值寄存器

SysTick->VAL = 0UL;


 // 设置系统定时器的时钟源为 AHBCLK=72M

// 使能系统定时器中断

// 使能定时器

 SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |

 SysTick_CTRL_TICKINT_Msk |

SysTick_CTRL_ENABLE_Msk;

 return (0UL);

 }


其主要任务是装填计时器初始值、设置时钟源、设置中断源优先级。初始值不能超过2^24,时钟源一般为72M。

在这里插入图片描述

1.单纯递减延时

毫秒级延时


void SysTick_Delay_ms(uint32_t ms)

{

uint32_t  i;

SysTick_Config(72000);  /* 设置初始值为72000 */

for(i=0;i {

while(!((SysTick->CTRL) & (1<<16))) ;       /* 检测一次计时完成 */

}

SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;  /* 操作寄存器 */

}


2.利用void SysTick_Handler(void) 中断函数延时

毫秒级延时


volatile uint32_t isr_ms;

void SysTick_Delay_ms_INT(uint32_t ms)

{

isr_ms = ms;

SysTick_Config(72000);

  while(isr_ms);  /* 在中断里递减 */

/* 失能systick */

SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;

}


在stm32f10x_it.c中的代码如下:


extern volatile uint32_t isr_ms;   /* 这个变量在bsp_systick.c里面定义 */

void SysTick_Handler(void)

{

isr_ms--;

}

推荐阅读

史海拾趣

Baneasa SA公司的发展小趣事

面对日益增长的市场需求,Baneasa SA意识到必须提升产能以满足客户的需求。于是,公司投入大量资金对生产线进行升级改造,引进了先进的生产设备和技术。这些举措使得Baneasa SA的产能得到了大幅提升,同时也保证了产品质量的稳定性和可靠性。

富满电子(FM)公司的发展小趣事

随着国内市场的逐渐饱和,Baneasa SA开始将目光投向海外市场。公司制定了国际化的发展战略,通过在欧美等发达国家设立分支机构、参加国际展会等方式积极开拓国际市场。这些努力使得Baneasa SA的产品逐渐在国际市场上占据了一席之地,公司的业务范围也得到了进一步扩大。

Elma Electronic Inc公司的发展小趣事

Elma对产品质量的追求是显而易见的。通过对所有员工的培训以及遵循认证的ISO标准的系统程序,Elma达到了行业领先的质量水平。这种对质量的承诺不仅体现在产品制造过程中,更贯穿于整个公司的运营和管理中。

BILIN公司的发展小趣事

Elma在美国和美洲拥有广泛的客户群,覆盖电信、工业控制、医疗电子、国防和航空航天等多个行业。其产品线包括外壳、背板、系统平台、机柜、高品质开关和编码器等多种零件,能够满足不同行业客户的多样化需求。这种跨行业的布局使得Elma能够在多个领域保持竞争力。

HTSEMI( Jin Yu Semiconductor )公司的发展小趣事

为了加速国际化进程,金宇半导体于2020年制定了详细的国际化战略。公司首先在欧洲设立了研发中心,以吸引更多国际顶尖人才加入。随后,金宇半导体又通过一系列并购整合动作,收购了多家在特定领域具有领先技术的海外企业。这些并购不仅增强了金宇半导体的技术实力和市场影响力,还为其在全球范围内的业务拓展提供了有力支持。通过国际化战略的实施,金宇半导体正逐步成为一家具有全球竞争力的半导体企业。

BLACK&DECKER公司的发展小趣事

随着公司的不断发展壮大,BLACK&DECKER开始进军国际市场。1993年,公司在中国成立了第一家工厂,这标志着BLACK&DECKER全球化战略的重要一步。此后,公司通过在全球范围内设立生产基地和销售网络,不断扩大品牌影响力。同时,BLACK&DECKER还通过收购其他知名品牌,如得伟(DeWalt)等,进一步巩固了其在电子行业中的领先地位。

问答坊 | AI 解惑

如何用c开发dsp

关键字:TMS320F24X C DSP :; DSP; C; TMS320F24X…

查看全部问答>

谷歌推免费手机GPS导航系统

北京时间10月29日消息,据国外媒体报道,谷歌周三推出了一款免费手机导航应用,该款应用可向用户提供建议路线(turn-by-turn)。谷歌此举被认为可能会向GPS设备制造商发起攻击。 谷歌推出的新应用谷歌地图导航(Google Maps Navigation)是其手机版 ...…

查看全部问答>

怎样知道已经编译好的windows ce核心是包含了.net框架的?

怎样知道已经编译好的windows ce核心是包含了.net框架的? 怎样知道.net框架的版本。 不看开发环境,只看板子上跑起来的windowsce…

查看全部问答>

cetk 连接错误!

用USB连接的。 运行Windows CE Test Kit Server -〉connection ->start client...->connect 设备端,clientSide.exe 开始运行。(说明连接正常) 但是Quick Start 后,PC端跳出应用程序错误。 定制镜像时已经添加了cetk ,是不是SDK要重新制作的 ...…

查看全部问答>

地址卷绕

想问下,地址卷绕是一种什么概念啊!好像发生在运算结果上溢出和下溢出时候的!…

查看全部问答>

TCPMP播放的时候拔卡死机的问题

我现在用TCPMP播放视频,当TCPMP正在播放的时候,我拔掉卡,系统会给我一个拔卡事件,之后我关闭TCPMP播放。这样理论是应该是没有问题的,但是实际上操作,却偶尔发现播放器会死掉(系统还没死,只是TCPMP被卡住了)。我对播放进行跟踪,发现是播放器 ...…

查看全部问答>

为什么在EVC中静态控件的点击事件不起作用呢

void Menu::OnStatic11() {         // TODO: Add your control notification handler code here AfxMessageBox(_T(\"DAFAFA\"));        } 在静态控件中点击时间不起作用是什么原因啊?…

查看全部问答>

还是搞不懂怎么烧写NORFLASH

                                 我用的是STM3210E-EVAL评估板,想把程序中有一些表,数组放到NOR FLSAH中去,实在不知怎么烧进去,请懂的朋友 ...…

查看全部问答>

STM8S103K怎么定义.TSL_IO_ALCODE

要用ST的触摸库,应该在什么地方指定.TSL_IO_ALCODE 的地址 请大虾指教…

查看全部问答>

【原创】请问大虾们,你们给430的电源,使用芯片,还是7805后加3.3V稳压管呢?谢谢

【原创】请问大虾们,你们给430的电源,使用芯片,还是7805后加3.3V稳压管呢?谢谢…

查看全部问答>