首页 > 其他分享 >STM32 系统滴答定时器和时间换算问题

STM32 系统滴答定时器和时间换算问题

时间:2024-11-24 11:01:51浏览次数:10  
标签:LOAD 99 定时器 中断 滴答 STM32 寄存器 100

ARMCPU内部存在定时器SysTick可以称为系统滴答定时器,需要查看Cortex-M3->STK_CRTL控制和状态寄存器:

32位寄存器:reserved保留

0位:EN ABLE:使能位,写1开始计时

16位:COUNT FALG:标志位,计数完成自动置1。

1位:TICK INT:中断使能,定时完成是否发生中断,0是默认关闭

2位:CLK SOURCE :时钟源的选择,有arm内核的主频72MHz和八分频72/8=9MHz。

STK_LOAD:重新装载寄存器

要生成一个周期为N个处理器时钟周期的多镜头计时器,请使用N-1的RELOAD值。 例如,如果每100个时钟脉冲需要Sys Tick中断,则将RELOAD设置为99。 如果要在N个处理器时钟周期的延迟后发送一个SysTick中断,则使用值为N的RELOAD。例如,如果需要在400个时钟脉冲后发送一个SysTick中断,则将RELOAD设置为400。

STK_VAL:当前值的寄存器

定时器工作逻辑:

首先选择时钟源72MHz,如果在重装载LOAD寄存器的值是N-1存储99,当给EN ABLE使能位置1时,那么它会去LOAD找值,找到99,然后它会将99放到VAL中进行减1,也就是VAL寄存器会不断产生变化,减到0再溢出也即是从99-0-溢出经过100个周期也就是N个周期,然后触发一次中断,然后回到LOAD寄存器99重新经过100个周期触发中断。

下一步我们要考虑定时器多长时间完成减1操作,这里用时钟周期72MHz:1s内减去72M个数或者说 一个数用1/72M秒也就是一个数用去1/72us(微秒)。计算机中1兆是100万,在金融1兆是1万亿

标签:LOAD,99,定时器,中断,滴答,STM32,寄存器,100
From: https://blog.csdn.net/qq_64219867/article/details/143944021

相关文章

  • STM32 通过STM32cubemx软件进行代码生成(led灯闪烁)并最后封装点亮、熄灭以及翻转灯函数
    第一步生成代码对hal生成的文件进行解释Core:核心->Inc:各种头文件->Src:各种源文件Drivers:驱动文件MDK:可以看到个keil各种文件项目路径hail.ioc,可以用来修改配置,工作日志和配置文件 第二步点击MDK-ARM可以看到keil文件,双击打开keil文件对其配置自动复位功......
  • 【JavaEE初阶 — 多线程】定时器的应用及模拟实现
         目录  1.标准库中的定时器      1.1Timer的定义      1.2Timer的原理      1.3Timer的使用     1.4Timer的弊端      1.5ScheduledExecutorService     2.模拟实现定时器    ......
  • 基于STM32的人体健康管理系统Proteus仿真+源码
    一、功能介绍1.心率实时检测,心率数值显示在LCD1602屏幕上2.利用超声波测量身高,显示在LCD1602屏幕上3.通过ADC读取体重,通过计算BMI指数,给出肥胖指数,显示在LCD1602屏幕上4.DS1302读取年月日和实时时间,显示在LCD1602屏幕上5.心率阈值可以通过按键修改,DS1302的年月日和时间......
  • 盛世公司客服系统hj8828,vipS针对嵌入式STM32单片机的开发环境配置
    针对嵌入式【hj8828.vip】STM32单片机的开发环境配置薇【Lgj88288】,以下分别针对Windows和Mac系统提供详细的教学步骤。一、Windows系统配置教学选择开发软件Windows系统上有多种工具组合可供选择,包括单纯使用Keil进行库函数、HAL库以及寄存器的开发,也可以通过STM32CubeMX配......
  • 以STM32为例的MCU启动过程
    以STM32为例的MCU启动过程在面试的时候,好多位面试官问过这个问题,即从上电后,到第一行main函数语句的执行,软件部分都在做什么。这次看了微控制器是如何启动的?|STM32为例演示微控制器的启动这个视频后,觉得很好,顺便整理下。0x00000004ResetHandler处理器复位时,从中断向量表0x000......
  • 测试stm32串口发送数据在不同条件下的效率
    一、测试不同波特率测试代码:while(1){ LED1_ON(); bsp_uart_Printf("这是一个测试程序%d\r\n",num); LED1_OFF(); bsp_uart_Printf("这是一个测试程序%d\r\n",num); num++;}voidbsp_uart_Printf(char*format,...){ va_listarg; v......
  • CLion中使用add_subdirectory()模块化管理Stm32项目
    背景文章目录背景配置参考源码在Clion中使用STM32的时候,通常把自己开发的内容写在User目录中,然而需要将User目录下的源文件和头文件都添加到生成的CMakeLits.txt中。对于不同风格的库,直接在生成的CMakeLists.txt中添加资源会显得有些乱,可以使用cmake的**子目录(s......
  • Qt开发技巧(十九):定时器的调用问题,控件的透明问题,慎用事件过滤器,依赖库的路径链接,对话框
    继续讲一些Qt开发中的技巧操作:1.定时器的调用问题有一个场景经常遇到,那就是在符合某个条件下,延时一段时间去执行一段代码,如果短时间内触发多次又不需要频繁执行,只需要执行一次就行。如果选择用QTimer::singleShot无法终止已经触发的,这个时候就要主动实例化一个单次定时器,......
  • STM32CubeMX下载芯片固件库失败
    1.错误截图使用STM32CubeMX下载STM32H7R固件失败如下所示:Forunavailablefiles,youcandownloadthemmanuallywiththe"FromLocalbutton"实际图片如下所示出现这个问题的时候,STM32CubeMX的软件重新卸载和安装过,但是均无效。网络也更换过,也无效,所以只有通过错误的......
  • oracle数据库---PL/SQL、存储函数、存储过程、触发器、定时器job、备份
    PL/SQL什么是PL/SQLPL/SQL(Procedure Language/SQL)是Oracle对sql语言的过程化扩展,指在SQL命令语言中增加了过程处理语句(如分支、循环等),使SQL语言具有过程处理能力。把SQL语言的数据操纵能力与过程语言的数据处理能力结合起来,使得PLSQL面向过程但比过程语言简单......