SysTick—系统定时器

SysTick 简介

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

SysTick 寄存器介绍

SysTick—系统定时器有4个寄存器,简要介绍如下。在使用SysTick产生定时的时候,只需要配 置前三个寄存器,最后一个校准寄存器不需要使用。

SysTick 定时实验

利用SysTick 产生1s的时基,LED以1s的频率闪烁。

编程要点

1、设置重装载寄存器的值

2、清除当前数值寄存器的值

3、配置控制与状态寄存器

代码分析

SysTick 属于内核的外设,有关的寄存器定义和库函数都在内核相关的库文件core_cm3.h中。

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);
  }

用固件库编程的时候我们只需要调用库函数SysTick_Config()即可,形参ticks用来设置重装载寄 存器的值,最大不能超过重装载寄存器的值224,当重装载寄存器的值递减到0的时候产生中断, 然后重装载寄存器的值又重新装载往下递减计数,以此循环往复。紧随其后设置好中断优先级, 最后配置系统定时器的时钟等于AHBCLK=72M,使能定时器和定时器中断,这样系统定时器就 配置好了,一个库函数搞定。 SysTick_Config()库函数主要配置了SysTick中的三个寄存器:LOAD、VAL和CTRL,有关具体 的部分看代码注释即可。

Systick.c

#include "Systick.h"


void SysTick_Delay_us(uint32_t us)
{	
	uint32_t i = 0;
	SysTick_Config(72);
	for(i=0;i<us;i++)
	{
	
		while(!((SysTick->CTRL) & (1<<16)));
	}
	
	//关闭定时器使能
	SysTick ->CTRL &= ~SysTick_CTRL_ENABLE_Msk;  //清0
}


void SysTick_Delay_ms(uint32_t ms)
{	
	uint32_t i = 0;
	SysTick_Config(72000);
	for(i=0;i<ms;i++)
	{
	
		while(!((SysTick->CTRL) & (1<<16)));
	}
	
	//关闭定时器使能
	SysTick ->CTRL &= ~SysTick_CTRL_ENABLE_Msk;  //清0
}

Systick.h

#ifndef __SYSTICK_H
#define __SYSTICK_H

#include "stm32f10x.h"                  // Device header
#include "core_cm3.h"

void SysTick_Delay_ms(uint32_t ms);
void SysTick_Delay_us(uint32_t us);

#endif

main函数

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "Systick.h"

int main(void)
{
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStruct;
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;  //推挽输出
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5 ; 
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOE,&GPIO_InitStruct);
	
	
	while(1)
	{
		GPIO_ResetBits(GPIOE,GPIO_Pin_5);
	    //Delay_ms(500);  //延时500毫秒
		SysTick_Delay_ms(500);
		GPIO_SetBits(GPIOE,GPIO_Pin_5);	
		//Delay_ms(500);
		SysTick_Delay_ms(500);
	}

}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

研发效能(DevOps)职业技术认证-第六期开班啦丨IDCF

本证书是由国家工业和信息化部教育与考试中心颁发的职业技术证书&#xff0c;也是国内首个《研发效能&#xff08;DevOps&#xff09;工程师职业技术认证》。该《认证》对研发效能&#xff08;DevOps&#xff09;工程师的职业技术分为初级、中级、高级三个专业等级。 IDCF社区…

商场巨变!拓世法宝AI智能商业一体机引爆智慧购物新浪潮

在如今信息爆炸的时代&#xff0c;大型商场的规模与复杂程度也呈现出愈发庞大的趋势。它的背后不仅是商场规模的扩大&#xff0c;更是商业模式的转型升级。消费者对于购物体验和服务质量的要求也日益提高。传统商场单一提供商品销售的职能已无法满足消费者多元化的需求&#xf…

wf-docker集群搭建(未完结)

系列文章目录 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、redis集群二、mysql集群三、nacos集群1. 环境要求2. 拉取镜像2.1. 拉取镜像方式配置集群2.2. 自定义nacos镜像配置集群 3 自定义…

基于windows10的pytorch环境部署及yolov8的安装及测试

第一章 pytorch环境部署留念 第一步&#xff1a;下载安装anaconda 官网地址 &#xff08;也可以到清华大学开源软件镜像站下载&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/&#xff09; 我安装的是下面这个&#xff0c;一通下一步就完事儿。 第二步…

EtherCAT从站转CclinkIE协议网关应用案例

远创智控的YC-ECT-CCLKIE网关&#xff0c;一款具有强大功能的ETHERCAT通讯网关。 它可以将ETHERCAT网络和CCLINK IE FIELD BASIC网络无缝连接起来。作为ETHERCAT总线中的从站&#xff0c;本网关可以接收来自ETHERCAT主站的数据&#xff0c;并将其传输到CCLINK IE FIELD BASIC网…

高效MMdetection(3.1.0)环境安装和训练自己数据集教程(实现于Linux(ubuntu),可在windows尝试)

一、前言 很久没用mmdetection了&#xff0c;作为目标检测常见的几个深度学习框架&#xff0c;mmdetection用的人还是很多的&#xff0c;其中比较吸引人的一点就是mmdetection集成了非常多的算法&#xff0c;对于想做实验对比和算法学习的人来说&#xff0c;基于这个框架可以事…

cola架构:cola源码中访问者模式应用浅析

目录 1.访问者模式简介 2.cola访问者模式应用 2.1 cola被访问者类图 2.2 cola访问者类图 我们知道&#xff0c;如果一个对象结构包含很多类型的对象&#xff0c;希望对这些对象实施一些依赖其具体类型的操作&#xff0c;但又避免让这些操作“污染”这些对象的类&#xff0c…

day50 --动态规划9

198.打家劫舍 213.打家劫舍II 337.打家劫舍III 第一题&#xff1a;打家劫舍 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一…

Stable Diffusion AI绘图

提示词&#xff1a; masterpiece, best quality, 1girl, (anime), (manga), (2D), half body, perfect eyes, both eyes are the same, Global illumination, soft light, dream light, digital painting, extremely detailed CGI anime, hd, 2k, 4k background 反向提示词&…

WebSocket 入门案例

目录 WebSocket入门案例WebSocket-server新增项目:添加依赖:yml:启动类&#xff1a; frontend-server前端项目&#xff1a;添加依赖&#xff1a;添加yml&#xff1a;启动类&#xff1a;前端引入JS:前端页面&#xff1a;后端代码&#xff1a;测试&#xff1a; WebSocket 入门案…

css-边框流水线

效果图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><meta name"viewport" content"initial-scale1.0, user-scalableno" /><title></title><style type&…

物联网知识复习

物联网的内涵和体系结构 物联网的基本内涵 物联网的基本内涵在于物联&#xff0c;物物相连或者物和人相连的互联网。 也就是说&#xff0c;它是要由物主动发起的&#xff0c;物物互联的互联网。 它的第一层意思是说物和物相连&#xff1b;第二层意思是说物和人相连。 物联网的…

Redis数据类型——set类型数据交并差操作

1.业务场景 2.求两个set集合中交并补的操作

Easyx趣味编程7,鼠标消息读取及音频播放

hello大家好&#xff0c;这里是dark flame master&#xff0c;今天给大家带来Easyx图形库最后一节功能实现的介绍&#xff0c;前边介绍了绘制各种图形及键盘交互&#xff0c;文字&#xff0c;图片等操作&#xff0c;今天就可以使写出的程序更加生动且容易操控。一起学习吧&…

Leetcode周赛365补题(3 / 3)

目录 1、2、有序三元组的最大值 - 预处理前后最大值 遍历 &#xff08;1&#xff09;预处理前后值遍历&#xff08;枚举j&#xff09; &#xff08;2&#xff09;枚举k 2、无限数组的最短子数组 - 前缀和 滑动窗口 1、2、有序三元组的最大值 - 预处理前后最大值 遍历 …

【STM32】标准库的引入

一、为什么要会有标志外设库 1、传统单片机软件开发方式 (1)芯片厂商提供数据手册、示例代码、开发环境 (2)单片机软件工程师面向产品功能&#xff0c;查阅数据手册&#xff0c;参考官方示例代码进行开发 (3)硬件操作的方式是用C语言对寄存器进行读写以操作硬件 (4)主要工作量…

【vue】使用less报错:显示this.getOptions is not a function

在vue-cli中使用 lang“less” 时报错&#xff1a; Module build failed: TypeError: this.getOptions is not a function at Object.lessLoader 原因&#xff1a;版本过高所致&#xff0c;所用版本为 解决&#xff1a;降低版本&#xff1a;npm install less-loader4.1.0 --s…

Use nvidia card in docker

1.确保在宿主机上已经安装了nvidia 显卡的驱动 $ nvidia-smi 2.准备Nvidia-docker的环境 $ distribution$(. /etc/os-release;echo $ID$VERSION_ID) && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/k…

【微信小程序】6天精准入门(第5天:利用案例与后台的数据交互)附源码

一、什么是后台交互&#xff1f; 在小程序中&#xff0c;与后台交互指的是小程序前端与后台服务器之间的数据通信和请求处理过程。通过与后台交互&#xff0c;小程序能够获取服务器端的数据、上传用户数据、发送请求等。 小程序与后台交互可以实现数据的传输、用户认证、实时消…

订水商城H5实战教程-04用户注册

目录 1 用户注册2 创建模型应用3 开发审核功能4 配置菜单5 发布预览最终效果 我们上一篇讲解了用户协议的功能&#xff0c;如果用户同意协议&#xff0c;就可以跳转到注册页面&#xff0c;要求用户录入个人基本信息&#xff0c;本篇我们介绍一下用户注册功能。 1 用户注册 用户…