stm32学习之定时器中断时间设置与计算

2023-05-16

嗯~~~ 在stm32中经常使用定时器,但是一直没有学会怎样计算定时器的时间,近期简单学习了一下做一下总结记录

首先我们会在主函数里边定义时钟的最高频率为72Mhz(使用SysTick_Init(72);定义)如下方代码所示

int main()
{
	u8 i;
	SysTick_Init(72);
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //中断优先级分组 分2组
	LED_Init();
	TIM4_Init(1000,36000-1);  //定时500ms
	
	while(1)
	{
		i++;
		if(i%20==0)
		{
			led1=!led1;
		}
		delay_ms(10);	
	}
}

在定义了时钟的最高频率 ,我们就要去设置定时器的震荡频率,然后计算出每秒多少HZ,进而计算出每一HZ 所需要花费的时间,最后根据自动重装载的次数计算定时器的时间

如计算  500ms的定时器

TIM4_Init(1000-1,36000-1);  //定时500ms

最大频率72Mhz   分频系数 36000-1  自动重装载数 1000

计算1秒多少HZ 就是最大频率除以分频系数

72000000/(36000-1+1)=2000hz        (3600-1+1)   计数是从零开始所以需要加一

1/2000=0.0005秒/HZ=0.5毫秒/HZ

自动重装载数 为(1000-1+1)               (1000-1+1)计数是从零开始所以需要加一

定时器时间就是  0.5*1000=500毫秒  因此 就计算出了我们设置的定时器时间就是500ms进入一次定时器中断。

/*******************************************************************************
* 函 数 名         : TIM4_Init
* 函数功能		   : TIM4初始化函数
* 输    入         : per:重装载值
					 psc:分频系数
* 输    出         : 无
*******************************************************************************/
void TIM4_Init(u16 per,u16 psc)
{
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
	NVIC_InitTypeDef NVIC_InitStructure;
	
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);//使能TIM4时钟
	
	TIM_TimeBaseInitStructure.TIM_Period=per;   //自动装载值    1hz所需要的时间乘以per  就是定时器设置的时间
	TIM_TimeBaseInitStructure.TIM_Prescaler=psc; //分频系数     计算赫兹=系统最大频率分频之后 72000000/psc 的倒数  为时间单位为秒     
	TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
	TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //设置向上计数模式
	TIM_TimeBaseInit(TIM4,&TIM_TimeBaseInitStructure);
	
	TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE); //开启定时器中断
	TIM_ClearITPendingBit(TIM4,TIM_IT_Update);
	
	NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;//定时器中断通道
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;//抢占优先级
	NVIC_InitStructure.NVIC_IRQChannelSubPriority =3;		//子优先级
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;			//IRQ通道使能
	NVIC_Init(&NVIC_InitStructure);	
	
	TIM_Cmd(TIM4,ENABLE); //使能定时器	
}

/*******************************************************************************
* 函 数 名         : TIM4_IRQHandler
* 函数功能		   : TIM4中断函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void TIM4_IRQHandler(void)
{
	if(TIM_GetITStatus(TIM4,TIM_IT_Update))
	{
		led2=!led2;
	}
	TIM_ClearITPendingBit(TIM4,TIM_IT_Update);	
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

stm32学习之定时器中断时间设置与计算 的相关文章

  • mysql + redis + flask + flask-sqlalchemy + flask-session 配置及项目打包移植部署

    1 下载mysql installer community 5 7 24 0 msi xff08 https dev mysql com downloads windows installer 8 0 html xff0c 选择Lookin
  • Linux 被暴力破解ssh密码处理

    Linux 被暴力破解ssh密码处理 意外发现自己的云服务器被人持续很长时间暴力破解 xff0c 以下是处理办法 1 查询登录失败日志 通过命令查看被爆破情况 lastb lastb n 20 被持续破解 xff0c 先看20行 lastb
  • Vncviewer的使用流程(经验之谈)

    在这里我主要是解说一下Vncviewer的简单使用步骤以及使用当中要注意的事项 xff01 对着搞就行了 一 进入后记得将服务器的ID改为你要连接的对象人 xff08 即Boss的ID xff09 二 点击选项以及在里面的操作 三 桌面屏幕
  • java获取登陆用户ip方法

    今天和大家分享一下获取登录用户 ip的方法 xff0c 如果你想获取自己的登陆用户 ip xff0c 可以参考以下思路 xff1a 1 可以通过 Java动态链接库的方式获取到 xff0c 方法很简单 xff0c 就是把需要的 ip地址添加
  • npm install 超时/卡住

    第一次使用npm发现什么东西也下不了 xff0c 各种超时 xff0c 更换镜像源 xff0c 删除缓存等方法都无效 xff0c 最后看到一个方法 xff0c 清除了一下代理 xff08 虽然我没有设置过 xff09 xff0c 然后将镜像
  • Docker的网络模式bridge、host、container other、overlay

    docker run创建Docker容器时 xff0c 可以用 net选项指定容器的网络模式 xff0c Docker有以下5种网络模式 xff1a bridge模式 xff1a 使用 net 61 bridge指定 xff0c 默认设置
  • pyqt5 嵌于主界面状态栏的进度条

    写在前面 放在状态栏处的进度条 本想放在主界面 xff0c 但是没找到相关代码 代码 span class token comment coding utf 8 span span class token keyword from span
  • 分布式文件系统-HDFS

    主要内容 xff1a HDFS是什么 xff1f HDFS优点HDFS架构副本机制 1 HDFS是什么 xff1f 是由Hadoop实现的一个分布式的文件系统 xff08 Hadoop Distributed File System xff
  • 让我们来做一个属于自己的浏览器主页吧!

    对于我们程序员来说每天最常用的就是浏览器 因为像google 百度 火狐 必应这些浏览器的主页不太美观壁纸也很少 xff0c 所以我做了一个浏览器主页 xff0c 目前做的功能比较少后续会慢慢完善 xff0c 先给大家展示一下 废话少说我们
  • 卷积的过程

    span class token comment usr bin env python span span class token comment coding utf 8 span span class token comment aut
  • 使用Realsense D435i运行VINS-Fusion并建图

    1 安装VINS 到github xff1a VINS xff0c 按照说明安装依赖和编译vins ceres别装2 0版本 xff0c 装1 4 开始装的2 0遇到错误error integer sequence is not a mem
  • 使用AT命令获取本机号码

    我之前认为手机号码与SIM卡是一一对应的 xff0c 后来想想不对 xff0c 因为有换卡不换号的情况啊 xff0c 所以SIM卡应该只是一个电话号码的储存介质 xff0c 而与SIM卡一一对应的是另一个编码 IMSI xff08 国际移动
  • linux系统中的临时文件

    1 什么是临时文件 下载和安装 39 卸载软件 打开电子邮件和即时消息程序中的文件或传输文件时创建 通常 xff0c 创建临时文件的程序会在完成时将其删除 xff0c 但有时候这些文件会被保留 一段时间后 xff0c 这些废弃的临时文件 x
  • linux中的网络配置之网关

    1 网关 网关 Gateway 又称网间连接器 协议转换器 网关在网络层以上实现网络互连 xff0c 是复杂的网络互连设备 xff0c 仅用于两个高层协议不同的网络互连 网关既可以用于广域网互连 xff0c 也可以用于局域网互连 网关是一种
  • python网络爬虫(爬取bilibili一位up的视频标题,评论数量等基本信息)

    对爬虫还挺有兴趣的 xff0c 但是一直没有尝试过 xff0c 今天看了几篇写得非常好的博客 xff0c 学到了一丢丢 xff0c 自己也写了个简单的爬虫娱乐娱乐 1 分析需求 需求 xff1a 爬取b站up主王老菊所有视频投稿的编号 xf
  • Python面向对象结合第三方库pygame的练习----贪吃蛇小游戏

    今天看到几个关于pygame模块的博客和视频 xff0c 感觉非常有趣 xff0c 这里照猫画虎写了一个贪吃蛇小游戏 xff0c 目前还有待完善 xff0c 但是基本游戏功能已经实现 xff0c 下面是代码 xff1a 导入模块 impor
  • Python实现爬取全国疫情数据和地区疫情查询

    一个小小的爬虫程序 xff0c 练练手 xff0c 没什么实际作用 xff0c 希望疫情赶快过去 1 获取url 以腾讯的疫情动态作为来源 xff0c 寻找包含疫情数据的url xff1a 经过寻找 xff0c 发现包含疫情数据的url为
  • 部署LNMP并利用LNMP搭建wordpress论坛

    1 LNMP是什么 xff1f LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写 L指Linux xff0c N指Nginx xff0c M一般指MySQL xff0c 也可以指MariaDB xff0c P一般
  • Redis(一)redis实现主从复制以及sentinel模式部署

    1 什么是redis redis是一个key value存储系统 和Memcached类似 xff0c 它支持存储的value类型相对更多 xff0c 包括string 字符串 list 链表 set 集合 zset sorted set
  • Redis(二)搭建redis集群

    1 为什么需要redis集群 xff1f 单个redis存在不稳定性 当redis服务宕机了 xff0c 就没有可用的服务了 单个redis的读写能力是有限的 2 redis集群概述 redis集群中 xff0c 每一个redis称之为一个

随机推荐

  • 部署Harbor私有镜像仓库

    1 什么是Harbor Harbor的中文意思是港湾 xff0c 在这里它指的是一个用于存储Docker 镜像的企业级Resitry服务 xff0c 它是由VMware公司开源的Docker Registry管理项目 xff0c 包括权限管
  • sumo入门-保姆级教程

    SUMO学习 入门篇 1 安装SUMO 在sumo官网 xff08 https sumo dlr de docs Downloads php xff09 安装即可 xff0c 为省略不必要的困扰 xff0c 推荐安装在C盘 xff0c xf
  • CAS 服务端的搭建

    上文讲了CAS客户端 xff0c 本文记录CAS Server的搭建步骤 CAS Server的版本一定要选好 xff0c 我选的是CAS5 3 xff0c Java版本用的8 xff0c 目前最新的CAS6 5的Java版本最低是11了
  • SUMO 换道设置,靠右行驶

    vType中设置换道参数 xff0c 解决仿真中车辆一直靠右行驶和无脑逮着一个进口道走等情况 lt vType id 61 34 type1 34 accel 61 34 0 8 34 decel 61 34 4 5 34 sigma 61
  • SUMO 设置速度后正常行驶

    先附上traci vehicle setSpeed vehID speed 的使用说明 xff1a setSpeed self vehID speed 在最后一步中为命名车辆设置速度 xff08 以 m s 为单位 xff09 以 spee
  • 【NS3】SUMO安装 (Linux+Windows)

    SUMO安装 xff08 Linux 43 Windows xff09 文章目录 SUMO安装 xff08 Linux 43 Windows xff09 Windows安装OSMWebWizard 与NS3选项设置车辆与需求设置文件生成 L
  • STM32 STlink安装以及安装失败解决方法

    STM32 STlink安装以及安装失败解决方法 1 STM32 STlink下载连接 xff08 可能需要科学上网 xff09 http www bkill com download 185935 html text 61 ST LINK
  • 嵌入式学习之linux系统编程---7 目录IO之mkdir函数

    1 目录IO与文件IO的区别 目录IO文件IOopendir 打开目录open 打开文件mkdir 创建目录 readndir 读目录read 读文件closedir 关闭目录close 关闭文件 区别 xff1a 在之前的博客中提到的文件
  • Ubuntu查看系统内存,硬盘使用情况,指定目录使用情况,GPU。

    内存和硬盘的区别 1 内存是半导体材料制成的 xff0c 硬盘是磁性材料制成的 2 内存中的信息停电会消失 xff0c 硬盘中的信息可以长久保存 3 执行程序首先放入到内存之中 xff0c 然后放入的CPU中处理 主存如内存 xff0c 辅
  • MQ-2烟雾传感器解析

    一 工作原理 可用于家庭和工厂的气体泄漏监测装置 xff0c 适宜于液化气 苯 烷 酒精 氢气 烟雾等的探测 故因此 xff0c MQ 2可以准确来说是一个多种气体探测器 MQ 2的探测范围极其的广泛 它的优点 xff1a 灵敏度高 响应快
  • 软件设计的启发规则---层次图,HIPO图和结构图----画数据流图

    1 软件设计的启发规则有那些 xff1f 答 xff1a 1 改进软件结构提高模块独立性 2 模块规模应该适中 3 深度 宽度 扇出和扇入都应适当 4 模块的作用域应该在控制域之内 5 力争降低模块接口的复杂程度 6 设计单入口单出口的模块
  • 在Linux中安装docker全过程

    目前 xff0c CentOS 仅发行版本中的内核支持 Docker Docker 运行在CentOS 7 64 bit 上 xff0c 要求系统为64位 Linux系统内核版本为 3 8以上 xff0c 这里选用Centos8 x 查看自
  • vue&vant移动端h5底部留白问题

    不知道是 xff0c vue的原因还是vant的原因 xff0c html底部多了一截 每个页面背景不一样也不能给统一的background xff0c 给内容div负margin都盖不住这个html的空白 最后试了很多方法 xff0c 曲
  • Feature Squeezing: Detecting Adversarial Examples in Deep Neural Networks笔记

    Code https github com mzweilin EvadeML Zoo Feature squeezing reducing the color bit depth of each pixel and spatial smoo
  • E: 仓库 “http://ppa.launchpad.net/zarquon42/meshlab/ubuntu bionic Release”没有 Release 文件

    参考 xff1a 添加链接描述 在etc apt sources list d 目录中删除对应的ppa cd span class token operator span etc span class token operator span
  • 移远EC20--1 AT命令初始3

    接上篇 一 xff1a AT指令电话簿命令 AT 43 CNUM xff1a 用户编号 该命令可以从 xff08 U xff09 SIM中获取用户自己的编号 AT 43 CPBF xff1a 查找电话簿条目 该命令可以从用AT 43 CPB
  • ROS学习笔记(一)之 成功安装(melodic版)

    Ubuntu18 04安装ROS Melodic 详情请参考 xff1a https blog csdn net haiyinshushe article details 84256137 1 配置Ubuntu软件库 xff1a 配置Ubu
  • oracle数据库新增用户

    文章目录 前言一 通过PL SQL客户端新增二 通过创建命令进行新增1 创建语句 总结 前言 用的比较少 xff0c 用到时记录一下 一 通过PL SQL客户端新增 1 连接成功后 xff0c 在左侧对象 users右键 新建 xff0c
  • 长度单位&颜色RGB值&十六进制颜色RGB值

    长度单位 amp 颜色RGB值 amp 十六进制颜色RGB值 span class token doctype lt DOCTYPE html gt span span class token tag span class token ta
  • stm32学习之定时器中断时间设置与计算

    嗯 在stm32中经常使用定时器 xff0c 但是一直没有学会怎样计算定时器的时间 xff0c 近期简单学习了一下做一下总结记录 首先我们会在主函数里边定义时钟的最高频率为72Mhz 使用SysTick Init 72 定义 如下方代码所示