STM32F407 滴答定时器

介绍STM32F407滴答定时器配置方法、使用方式,封装延时函数得到精确的时间。

【1】介绍滴答定时器的章节

STM32F407参考手册中第10章介绍了滴答定时器的校准值。

img

M4权威指南介绍滴答定时器的章节,M3权威指南中与M4权威指南中的介绍一样。

img

img

【2】滴答定时器的示例代码

在sys.c文件中增加滴答定时器的代码

#include "sys.h"
/*
函数功能:设置NVIC中断控制器优先级
函数形参:IRQn_Type IRQn:中断线uint32_t PreemptPriority:抢占优先级uint32_t SubPriority:次优先级
*/
void SetNVICPriorityGrouping(IRQn_Type IRQn,uint32_t PreemptPriority, uint32_t SubPriority)
{uint32_t Priority;NVIC_SetPriorityGrouping(NVIC_PriorityGroup_2); //设置优先级分组,每个工程只能设置一次Priority=NVIC_EncodePriority(NVIC_PriorityGroup_2,PreemptPriority,SubPriority); //编码优先级NVIC_SetPriority(IRQn,Priority); //设置优先级NVIC_EnableIRQ(IRQn);
}/*
函数功能:滴答时钟初始化配置
注意:SysTick->LOAD是一个24位的寄存器,单次最大延时时间为894.7848ms
说明:18750是滴答定时器的校准值。当重载值为18750时,滴答定时器刚好产生1ms的中断
*/
void SysTickInit(void)
{	SysTick->CTRL&=~(1<<2); //选择外部时钟源	SysTick->CTRL|=1<<1;    //开启中断SysTick->LOAD=18750*800;//重装载寄存器,最大24位,最大值:16777215SysTick->VAL=0; 			  //清除CNT计数值SysTick->CTRL|=1<<0;    //SysTick 定时器的使能位
}/*
函数功能:滴答时钟中断服务函数
*/
void SysTick_Handler(void)
{LED0=!LED0;LED1=!LED1;
}

【3】使用滴答定时器编写延时函数

在delay.c文件增加以下代码

#include "delay.h"/*
功能  :毫秒级别的延时函数
参数  :填入延时的时间
返回值:无
说  明:频率在168MHZ情况下使用
*/
void DelayMs_168M(u32 time)
{u32 a,b,c;for(a=0;a<time;a++)for(b=0;b<100;b++)for(c=0;c<450;c++);
}/*
功能  :微秒级别的延时函数
参数  :填入延时的时间
返回值:无
说  明:频率在168MHZ情况下使用
*/
void DelayUs_168M(u32 time)
{u32 k;while(time--){k=40;while(k--);}
}/*
函数功能:延时函数初始化
*/
void DelayInit(void)
{SysTick->CTRL&=~(1<<2);  //选择外部时钟源	SysTick->CTRL&=~(1<<1);  //关闭中断
}/*
函数功能:延时毫秒的函数
函数参数:毫秒的时间
*/
void DelayMs(u32 time)
{u32 stat;SysTick->LOAD=18750*time; //重装载寄存器,最大24位,最大值:16777215SysTick->VAL=0; 			   //清除CNT计数值SysTick->CTRL|=1<<0;     //SysTick 定时器的使能位do{stat=SysTick->CTRL;  //获取状态位}while((!(stat&1<<16))&&(stat&1<<0));SysTick->CTRL=0x0; 
}/*
函数功能:延时微秒的函数
函数参数:毫秒的时间
*/
void DelayUs(u32 time)
{u32 stat;SysTick->LOAD=18.750*time; //重装载寄存器,最大24位,最大值:16777215SysTick->VAL=0; 			   //清除CNT计数值SysTick->CTRL|=1<<0;     //SysTick 定时器的使能位do{stat=SysTick->CTRL;  //获取状态位}while((!(stat&1<<16))&&(stat&1<<0));SysTick->CTRL=0x0; 
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux--打印内容或者插入内容:echo

语法&#xff1a; echo 内容 作用&#xff1a;打印内容到显示器echo 内容 > 不存在的文件 作用&#xff1a;文件创建&#xff0c;并将内容插入新创建的文件中echo 内容 > 存在的文件 作用&#xff1a;覆盖文件原有的内容 echo 内容 >> 存在的文件 作用&#xff1a…

Tdengine 时序数据库-安装与客户端连接

使用 TDengine 时序数据库的版本是 2.4.0.0 使用的安装RPM的安装方便安装 TDengine-server-2.4.0.0-Linux-x64.rpm 1. 安装指令: rpm -ivh TDengine-server-2.4.0.0-Linux-x64.rpm [rootnode3 server]# rpm -ivh TDengine-server-2.4.0.0-Linux-x64.rpm Verifying... …

Java对称与非对称加密解密(AES与RSA)

尽可能预想所有残酷的可能性、因为现实永远让你无法预警,而且又吝于给人慈悲。——富坚义博 今天我们讨论一下秘钥这个东西 一、对称加密技术与非对称加密技术简述 加密技术可以分为对称与非对称两种。 对称加密、解密即加密与解密用的是同一把秘钥,常用的对称加密技术有DES,A…

微服务springcloud 10.config配置中心框架和rabbitmq的安装

config配置中心的作用&#xff1a;项目的yml 配置文件保存到 git 服务器&#xff0c;例如 github.com 或 gitee.com 微服务启动时&#xff0c;从服务器获取配置文件 1.新建 “Project”,命名为 config。注意这里的不是maven项目&#xff0c;而是project 2.将sp02,sp03,sp04,s…

Docker: 改变容器化世界的革命性技术

目录 1.1什么是虚拟化 1.2什么是Docker 1.3容器与虚拟机的比较 1.4Docker组建 2、Docker安装 2.2设置ustc的镜像 2.3Docker的启动与停止 3、docker常用命令 3.1镜像 3.2容器相关命令 1.1什么是虚拟化 在计算机中&#xff0c;虚拟化&#xff08;Vitualization&#x…

netty学习(1):1个客户端与服务器通信

1. 新建maven工程&#xff0c;添加netty依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"…

Spring MVC

Spring MVC &#x1f50e;什么是 Spring MVCMVC对比 MVC 与 Spring MVC &#x1f50e;Spring MVC—连接RequestMapping 默认情况下支持的请求类型RequestMapping 指定请求类型 &#x1f50e;Spring MVC—获取参数获取单个参数获取两个参数参数重命名传递对象传递 JSON 对象获取…

访问学者申请英语口语怎样顺利通关

想要成功申请成为访问学者&#xff0c;英语口语的流利表达是非常重要的。下面知识人网小编整理的一些帮助你顺利通关的建议&#xff1a; 1. 提前准备&#xff1a;在面试之前&#xff0c;充分准备各种常见问题的回答。练习口语表达&#xff0c;加强词汇和语法的掌握。可以通过与…

CSS实现多头像叠加ui效果

第一种实现方式 简单粗暴直接使用margin-right实现&#xff0c;缺点是第一行右侧最右边头像溢出容器&#xff0c;代码中的三行注释的代码放开后可解决这个问题。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8">&…

时序预测 | MATLAB实现BO-LSTM贝叶斯优化长短期记忆神经网络股票价格预测

时序预测 | MATLAB实现BO-LSTM贝叶斯优化长短期记忆神经网络股票价格预测 目录 时序预测 | MATLAB实现BO-LSTM贝叶斯优化长短期记忆神经网络股票价格预测效果一览基本介绍研究过程程序设计参考资料效果一览 基本介绍 时序预测 | MATLAB实现BO-LSTM贝叶斯优化长短期记忆神经网络…

postman自动生成接口文档

点击&#xff1a; 会自动生成一个文件夹 点击图表&#xff0c;修改名字 新建一个请求&#xff0c;到时候会自动保存到文件夹里面&#xff0c;但是保存前看清楚保存的名字 点击三个点-》点击export即可

Excel - Windows操作系统下的键盘快捷方式

注意&#xff1a; * 这些快捷方式指的是美式键盘布局。 其他键盘布局的键可能与美式键盘上的键不完全对应。 * 快捷方式中的加号 () 表示需要同时按多个键。 * 快捷方式中的逗号 (,) 表示需要按顺序按多个键。 * 如果经常使用的操作没有快捷键&#xff0c;则可以“录制宏”…