STM32F10X(Cortex-M3)系统定时器寄存器笔记和系统定时器精准延时函数

本文主要是介绍STM32F10X(Cortex-M3)系统定时器寄存器笔记和系统定时器精准延时函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Cortex-M3系统定时器寄存器笔记和系统定时器精准延时函数

  • 简介
  • 系统定时器寄存器
    • STK_CTRL
    • STK_LOAD
    • STK_VAL
    • STK_CALIB
  • STM32F10X(Cortex-M3)精准延时函数

简介

在STM32F10X(Cortex-M3)除了通用定时器和看门狗定时器外,还有一个系统定时器(SysTick)
拿STM32F103C8T6来说,有7个定时器,3个通用定时器,1个高级定时器,2个看门狗定时器,最后还有一个24位倒计数器,也就是系统定时器
在这里插入图片描述
由于它没有像通用定时器和高级定时器的PWM或者其它功能,只能用来计数。所以通常用来计时,利用用它写精准延时函数。
因为这是Cortex-M3共有的,所以在STM32手册里是看不见系统定时器的寄存器。
在ST官网STM32F103C8T6的编程手册可以看见Cortex-M3的编程手册
在这里插入图片描述

系统定时器寄存器

STK_CTRL

在这里插入图片描述
SysTick control and status register,这个寄存器就是控制寄存器了。
COUNT FLAG就是看计数值计完没0还没计完 1记完了。
CLK SOURCE顾名思义就是时钟了,0就是AHB的时钟除以8,如果你AHB是72M,那么系统定时器就是9M。
TICK INT就是使能中断事件的,0不使能,1使能,使能完后应该要去NVIC里开启系统定时器的中断使能。
ENABLE就是使能计数了,1使能。

STK_LOAD

在这里插入图片描述
SysTick reload value register顾名思义就是加载计数值的寄存器,22位的。

STK_VAL

在这里插入图片描述
这个就是看现在计数值是多少的寄存器。

STK_CALIB

在这里插入图片描述
这个寄存器是或者定时器时钟/8的1ms的校准值的,比如72M/8=9M,1ms的计数值就是9000,那么TENMS得到的值就是9000。

STM32F10X(Cortex-M3)精准延时函数

代码如下,这是堵塞延时。

void delay_ms(uint32_t ms)
{SysTick->LOAD=ms*9000;//预装载值SysTick->CTRL |=(1<<0);//系统定时器开始计数while(!(SysTick->CTRL&(1<<16)));SysTick->CTRL&=~(1<<0); //系统定时器停止计数SysTick->CTRL&=~(1<<16); //清空计数标志
}void delay_us(uint32_t us)
{SysTick->LOAD=us*9;//预装载值SysTick->CTRL |=(1<<0);//系统定时器开始计数while(!(SysTick->CTRL&(1<<16)));SysTick->CTRL&=~(1<<0); //系统定时器停止计数SysTick->CTRL&=~(1<<16); //清空计数标志	
}

这篇关于STM32F10X(Cortex-M3)系统定时器寄存器笔记和系统定时器精准延时函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/734951

相关文章

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI

MySQL中FIND_IN_SET函数与INSTR函数用法解析

《MySQL中FIND_IN_SET函数与INSTR函数用法解析》:本文主要介绍MySQL中FIND_IN_SET函数与INSTR函数用法解析,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一... 目录一、功能定义与语法1、FIND_IN_SET函数2、INSTR函数二、本质区别对比三、实际场景案例分

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

C/C++错误信息处理的常见方法及函数

《C/C++错误信息处理的常见方法及函数》C/C++是两种广泛使用的编程语言,特别是在系统编程、嵌入式开发以及高性能计算领域,:本文主要介绍C/C++错误信息处理的常见方法及函数,文中通过代码介绍... 目录前言1. errno 和 perror()示例:2. strerror()示例:3. perror(

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1