当前位置: 首页 > news >正文

嵌入式软件--stm32 DAY 9 定时器

1.基本介绍

1.1系统计时器

系统计时器(systick系统)属于CM3内核,内嵌在NVIC中。

stm32103系列芯片外设定时器有8个。命名简单,都是TIM+序号。

我们现在要说的时内核系统滴答计时器。它是24位向下递减的计数器,24位所能计数的最大范围时2^24-1,2^10=1024,2^20=1M,那么它的计数上限时一千六百多万。计数器每计数一次时间就是1/SYSCLK,也就是时钟周期,72M主频下,时钟周期是1/72 us. 计数器从初始值降到1,就可以关掉计时器,不关掉就会循环往复不断重复计时。一般发生一次中断,系统内核的中断。

1.2与systick相关的寄存器

1.2.1 STK_CTRL

控制和状态寄存器。

COUNT FLAG 到0的时候,时间结束。状态位

下面三位是使能位。TICK INT 系统滴答定时器的中断使能位。101代表没有使用中断。

时钟源,9Mhz.

1.2.2 STK_LOAD

24位寄存器。

一次计数是1/72us.也就是1us72次滴答。也就是LOAD的值。周期性的话,每100个时钟周期,设计RELOAD的值为n-1.因为从99到0是100个时钟周期。如果是一锤子买卖,就直接设定即可。

1.2.3 STK-VAL

VAL就是当前计数器的值。

CURRENT[23:0],24位主要是为了读取。如果写的话,都会清零标志位。

1.2.4 STK-CALIB

校准寄存器。出场写死,不用多做了解。

2.系统中断案例:LED灯闪烁

2.1需求描述

利用系统定时器的中断,每隔一秒让LED灯闪烁一次。

2.2硬件电路设计

让LED灯闪烁,就是让对应GPIO引脚,输出一段低电平,保持一段时间,在输出高电平,再保持一定时间,变化电平,循环往复。

我们之前可以用软件while(1)的循环实现,现在我们要用外设系统滴答定时器中断实现。

2.3软件实现

2.3.1创建工程

这个工程只需要LED。

 

2.3.2写代码(寄存器)

 

时钟主频72MHZ,一个周期1/72M S,1/72us,1us72个周期,1ms72000个时钟周期

2.3.3hal库

Systick定时器是mcu的内核,cubemx里只配LED就可以了。

 

 PA0设置输出

优先级可以改为2 

之后创建工程就可以了。

直接在底层写入函数

直接烧录。

http://www.xdnf.cn/news/1178281.html

相关文章:

  • Springmvc的自动解管理
  • 一文说清楚Hive中常用的聚合函数[collect_list]
  • 一文读懂 HTTPS:证书体系与加密流程
  • Percona pt-archiver 出现长事务
  • GISBox实操指南:如何将IFC文件高效转换为3DTiles格式‌‌
  • 【MAC电脑系统变量管理】
  • 基于Zig语言,opencv相关的c++程序静态交叉编译
  • 微服务-springcloud-springboot-Skywalking详解(下载安装)
  • 设置后轻松将 iPhone 转移到 iPhone
  • 基于SpringBoot+Uniapp的健身饮食小程序(协同过滤算法、地图组件)
  • Socket编程入门:从IP到端口全解析
  • C语言(长期更新)第5讲:数组练习(三)
  • Apache 消息队列分布式架构与原理
  • 开发避坑短篇(5):vue el-date-picker 设置默认开始结束时间
  • LLM层归一化:γβ与均值方差的协同奥秘
  • 力扣面试150题--在排序数组中查找元素的第一个和最后一个位置
  • 5.7 input子系统
  • 「Linux命令基础」查看用户和用户组状态
  • Silly Tavern 教程②:首次启动与基础设置
  • 文件管理困境如何破?ZFile+cpolar打造随身云盘新体验
  • Apache Flink 实时流处理性能优化实践指南
  • TRUMPF TruConvert DC 1008 – 1010 TruConvert System Control 逆变器
  • 货车手机远程启动的扩展功能有哪些
  • 从零用java实现 小红书 springboot vue uniapp(15) 集成minio存储 支持本地和minio切换
  • 如何在 Ubuntu 24.04 服务器或桌面版上安装和使用 gedit
  • AUTOSAR进阶图解==>AUTOSAR_SWS_BSWModeManager
  • 「iOS」——RunLoop学习
  • JS事件基础
  • 锁定锁存器 | 原理 / 应用 / 时序
  • C++中std::list的使用详解和综合实战代码示例