8 系统定时器(Systick)

news2024/11/17 6:51:54

目录

系统定时器(Systick)

SysTick定时器特性介绍

SysTick定时器的功能

SysTick定时器寄存器介绍

Systick定时器的使用


系统定时器(Systick)

SysTick定时器特性介绍

  • 计数宽度:

24bit来存储数据,2^24=16,777,216

  • 计数器的工作模式

向下递减

  • 计数器的工作周期:

T=1/CLKSource,即1/72Mhz F(频率)=1/T(周期)

  • SysTick系统定时器是属于 Cortex-M内核中的一个外设,内嵌在 NVIC 中。
  • SysTick系统定时器含有一个计数宽度为24bit 的向下递减的自动重装载计数器,计数器每计数一次的时间为 1/CLKSource。一般我们设置CLKSource为系统时钟。以F103为例, CLKSource可以配置为72MHz。
  • 当重装载数值寄存器的值递减到 0 的时候, SysTick系统定时器可以配置产生一次中断,以此循环往复。
  • SysTick系统定时器是属于 Cortex-M内核的外设,所以一般基于 Cortex-M内核的单片机都具有这个系统定时器。这使得软件在 Cortex-M单片机中可以很容易的移植。

SysTick定时器的功能

  • SysTick系统定时器可以用于操作系统,用于产生时基,维持操作系统的心跳。一般操作系统都需要一个时基,进行任务的调度、同步等功能实现。
  • SysTick系统定时器最常用的功能,还是计数。比如用来进行微妙、毫秒延时,以此产生特定时序。

SysTick定时器寄存器介绍

工程讲解(基于CubeMX):

HAL库默认选择Systick作为系统时钟源(时基)

我们可以通过修改分频系数来设置Systick的时钟为9MHZ或者72MHZ

工程生成后,进入工程,CubeMX只是配置了系统时钟为72M

Systick定时器的使用

我们还需要自行配置systick的使用

(1)首先打开cortex.c文件,找到systick重装载寄存器配置函数

然后自定义板级支持包,定义一个毫秒级Systick延时函数

#include "./Systick/bsp_systick.h"

void systick_delay_ms(uint16_t ms)
{
    uint32_t i;
    //当前频率为1/72000000
    HAL_SYSTICK_Config(72000);//1/72000000*72000=1/1000
    
    for(i=0;i<ms;i++)
    {
         while( !((SysTick->CTRL) & (1<<16)) );
    }
    SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/689657.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HOT21-搜索二维矩阵II

leetcode原题链接&#xff1a; 搜索二维矩阵II 题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例 1&#xff1a; 输入&#xff1a;matrix [[…

【CSS3系列】第八章 · 伸缩盒模型

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…

基于matlab使用深度学习的语义分割算法实现(附源码)

一、前言 此示例演示如何使用语义分割网络对图像进行分割。 语义分割网络对图像中的每个像素进行分类&#xff0c;从而生成按类分割的图像。语义分割的应用包括自动驾驶的道路分割和医疗诊断的癌细胞分割。 此示例首先向您展示如何使用预训练的 Deeplab v3 [1] 网络分割图像&am…

git权限异常:fatal: Authentication failed for

本地电脑用户密码修改了&#xff0c;git 提交&#xff0c;拉取出现异常, 就会报这个错误fatal: Authentication failed for http://xxx/xxx/xxx 解决方法&#xff1a; git config --system --unset credential.helper 免输入用户密码方法&#xff1a; git config --global…

【超简单】Ubuntu 安装 bcompare 对比工具

下载 bcompare 安装包&#xff1a;《bcompare-4.4.6.27483_amd64.deb》 https://www.scootersoftware.com/download.php?zzdl4 安装 becompare 安装&#xff1a; sudo dpkg -i bcompare-4.4.6.27483_amd64.deb破解 cd /usr/lib/beyondcompare/ sudo sed -i "s/kee…

革新写作方式:ChatGPT最新版带来高质量聚合文章的批量生成

随着人工智能技术的不断发展&#xff0c;自然语言处理模型也在不断进步。ChatGPT最新版作为一种强大的语言模型&#xff0c;可以生成高质量的聚合文章&#xff0c;为写作方式带来了革新。本文将详细阐述ChatGPT最新版带来的革新之处&#xff0c;包括其应用领域、生成文章的流程…

剑指 Offer 12: 矩阵中的路径

这道题看着简直是完全没思路&#xff0c;看了下发现是使用回溯的方法。 下面这里要注意&#xff0c;newi是旧的i加上新的偏移值&#xff01;newj同理&#xff0c;并不是加自己&#xff0c;别昏头&#xff01; s是String类型的变量&#xff0c;要写成size() 下面是正确的代码&a…

计算机组成原理笔记——指令系统、中央处理器、总线、I/O系统(王道考研)(持续更新)

文章目录 前言指令系统指令系统概述指令格式扩展操作码 指令寻址方式指令寻址数据寻址基本的寻址思路偏移寻址隐含寻址 程序的机器级代码表示汇编基础AT&T格式和Intel格式C语言控制结构的汇编表示函数调用栈帧切换栈帧构造 CISC与RISC 中央处理器CPU的功能和基本结构运算器…

企业级微服务架构实战项目--xx优选-详情页面的异步调用completablefuture

一 常见的调用方式 1.1 并发 并发&#xff1a;同一时刻多个线程在访问同一个资源&#xff0c;多个线程对一个点 ​ 例子&#xff1a;春运抢票、微信抢红包、电商秒杀... 1.2 同步串行 代表多任务按先后顺序执行&#xff0c;并且都是同一个线程来执行。 1.3 异步串行 代表…

【Java面试题】Java基础语法

文章目录 JDK、JRE和JVM的关系栈和堆分别存的什么数据异步和同步线程和进程区别java的数据类型有哪些equals和HashCode重写的问题?深拷贝和浅拷贝的区别和equals的区别常见的运行时异常有哪些&#xff1f; JDK、JRE和JVM的关系 JDK、JRE和JVM的关系&#xff1a; JDK(Java De…

数据库监控与调优【一】—— 数据库调优的维度

数据库调优的维度 左边是千金良方的&#xff0c;右边是个人优化的 业务需求 不合理的需求&#xff0c;可能会造成很多问题勇敢地对不合理的需求说不拨乱反正&#xff0c;把不合理的需求变成合理的需求 例子 财务SaaS系统&#xff0c;财务领域有种叫做代账的概念&#xff0c…

uniapp+vue3+vite+ts+uviewPlus搭建项目

创建项目架构 首先使用官方提供的脚手架创建一个项目&#xff0c;这里我创建的 vue3 vite ts 的项目&#xff1a; npx degit dcloudio/uni-preset-vue#vite-ts project-name&#xff08;如命令行创建失败&#xff0c;请直接访问 giteehttps://gitee.com/dcloud/uni-preset-vu…

2023-06-20 x-ui-服务器配置记录

基础软件: yum update -y yum install -y curl yum install -y socat 工作软件: bash <(curl -Ls https://raw.githubusercontent.com/sprov065/x-ui/master/install.sh) 设置: 参考: 使用云服务器搭建代理-腾讯云开发者社区-腾讯云

9 HAL库驱动框架简述

目录 HAL库驱动框架简述 HAL库外设设计思想 HAL库和Cube MX相结合 一、对外设的封装——句柄结构体 二、外设初始化 初始化结构体 初始化的逻辑 三、外设使用逻辑 通用接口函数 初始化函数 I/O操作函数 控制函数 状态参数 扩展接口函数 总结 补充&#xff1a;H…

算法拾遗三十四线段树

算法拾遗三十四线段树 线段树说明物理结构使用线段树落方块的问题 线段树说明 给定固定长度的数组&#xff0c;然后要在数组给定的范围内完成加法【如数组1&#xff0c;200下标元素加6】&#xff0c;更新【7&#xff0c;375范围数组元素更新为4】&#xff0c;查询操作【查询3到…

【云原生丶Docker】Docker镜像加速器:给冰山提提速!

Docker镜像加速器是一种用于加速Docker镜像下载和构建的工具。它可以提高Docker镜像的下载速度&#xff0c;从而加快应用程序的开发和部署速度。 Docker镜像加速器通常使用CDN(内容分发网络)技术来实现加速。CDN是一种分布式网络架构&#xff0c;可以将内容缓存在全球各地的服务…

命令行--git--多次commit如何合并成一个commit

参考:https://blog.csdn.net/qq_50652600/article/details/120800309 在我们平时开发中&#xff0c;我们提交代码免不了要和git打交道&#xff0c;那么我们肯定是先从预发分支上&#xff08;公司一般都用pre命名&#xff0c;这里为了方便演示用master&#xff09;上拉去最新的代…

测试工程师首用chatGPT,编写python读取xmind测试用例chatgtp+python+xmind

背景 有用xmind写测试用例的吧&#xff0c;统计一个xmind的条&#xff0c;需要花大量的时间&#xff0c;还有要统计有多少条冒烟的&#xff0c;多少条不通过的&#xff0c;还有通过的条数。 需求 快速使用python&#xff0c;写一个简单的脚本&#xff0c;统计所有xmind节点&…

FPGA_学习_09_PWM呼吸灯

PWM在三相电机控制中&#xff0c;有着非常重要的地位。 如果你需要用FPGA去实现三相电机的控制&#xff0c; PWM这一关是绕不过的。好在PWM的基本原理是比较简单的。所以原理部分本文就略过&#xff0c;本文基于PWM实现呼吸灯。 1 时序 {signal: [{name: clk, wave: p....…

4 STM32启动过程(以Cortex-M3为例)(保姆级介绍)

设计知识点补充在前&#xff1a; 1.关于存储器映射、存储器重映射、内存映射、地址映射、地址转换等计算机专业名词详解 参考见 关于存储器映射、存储器重映射、内存映射、地址映射、地址转换等计算机专业名词详解_Vincent_Song的博客-CSDN博客 2.哈佛结构和冯诺依曼结构的区别…