2023版 STM32实战5 基本定时器中断

基本定时器简介与特性


-1-时钟可分频

-2-计数模式只可以选择累加

-3-只可以用来定时(含中断)

查看时钟源


如图定时器7的时钟最大为72MHZ

在这里插入图片描述

定时时间的计算


通用定时器的时间计算公式为 Tout = ((arr+1)(psc+1))/Tclk ;

arr为重载值

psc为时钟分频系数

Tclk为时钟频率

代码编写(已经验证,可直接拷贝使用


这是一个在定时器7的中断函数中翻转两个LED的demo

timer源文件
#include "timer.h"// 通用定时器的时间计算公式为 Tout = ((arr+1)(psc+1))/Tclk ;
void Timer_7_Init(uint16_t arr,uint16_t psc)
{//开启定时器7时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7,ENABLE);//定义结构体TIM_TimeBaseInitTypeDef Timer7_CFG;//预分频系数Timer7_CFG.TIM_Prescaler = psc;//定义重装载值Timer7_CFG.TIM_Period = arr;//设置计数模式,通用计时器只支持累加Timer7_CFG.TIM_CounterMode = TIM_CounterMode_Up;//调用初始化函数,把值写入寄存器TIM_TimeBaseInit(TIM7,&Timer7_CFG);//配置定时器为更新中断TIM_ITConfig(TIM7,TIM_IT_Update,ENABLE);//配置NVIC优先级NVIC_InitTypeDef NVIC_CFG;NVIC_CFG.NVIC_IRQChannel = TIM7_IRQn;NVIC_CFG.NVIC_IRQChannelCmd = ENABLE;NVIC_CFG.NVIC_IRQChannelSubPriority=0;NVIC_CFG.NVIC_IRQChannelPreemptionPriority=0;//调用初始化函数,把值写入寄存器NVIC_Init(&NVIC_CFG);	//打开定时器,即开始计时TIM_Cmd(TIM7,ENABLE);
}void TIM7_IRQHandler(void)
{//检查是否为更新中断if(TIM_GetITStatus(TIM7,TIM_IT_Update)==SET){//清除中断标志位TIM_ClearFlag(TIM7,TIM_FLAG_Update);GPIOB->ODR^=(1<<5);GPIOE->ODR^=(1<<5);}}

timer源文件

#include "stm32f10x.h"
#include "timer.h"
#include "delay.h"void LED_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_Init(GPIOE, &GPIO_InitStructure);}int main(void)
{	delay_init();LED_Init();NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);Timer_7_Init(4999,7199);while(1);
}

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

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

相关文章

【Leetcode】146.LRU缓存

一、题目 1、题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void …

Spring修炼之路(2)依赖注入(DI)

一、概念 依赖注入&#xff08;Dependency Injection,DI&#xff09;。 测试pojo类 : Address.java 依赖 : 指Bean对象的创建依赖于容器 . Bean对象的依赖资源 . 注入 : 指Bean对象所依赖的资源 , 由容器来设置和装配 . 二、 注入方式 2.1构造器注入 我们在之前的案例已经…

【Java】异常

1. Java的异常概念 1.1 异常体系结构 从上图中可以看到&#xff1a; 1. Throwable&#xff1a;是异常体系的顶层类&#xff0c;其派生出两个重要的子类, Error 和 Exception 2. Error&#xff1a;指的是JVM无法解决的严重问题&#xff0c;比如&#xff1a;JVM的内部错误、资源…

Apache Flume

Flume 1.9.0 Developer Guide【Flume 1.9.0开发人员指南】 Introduction【介绍】 摘自&#xff1a;Flume 1.9.0 Developer Guide — Apache Flume Overview【概述】 Apache Flume is a distributed, reliable, and available system for efficiently collecting, aggregati…

PHP8中的构造方法和析构方法-PHP8知识详解

今日分享的内容是php8中的构造方法和析构方法&#xff0c;我们把构造方法和析构方法这两个方法分开来讲&#xff1a; 1、构造方法 构造方法存在于每个声明的类中&#xff0c;主要作用是执行一些初始化任务。如果类中没有直接声明构造方法&#xff0c;那么类会默认地生成一个没…

江西广电会展集团总经理李悦一行莅临拓世科技集团调研参观,科技璀璨AIGC掀新潮

在江西这片充满活力的土地上&#xff0c;数字经济如潮水般涌动&#xff0c;会展文化与科技的完美结合&#xff0c;正如新时代的璀璨繁星照亮夜空&#xff0c;更预示着一场AIGC创新的壮丽篇章即将展开。作为拓世科技集团的老朋友&#xff0c;江西广电多位领导多次莅临拓世科技集…

2023-9-29 JZ27 二叉树的镜像

题目链接&#xff1a;二叉树的镜像 import java.util.*;/** public class TreeNode {* int val 0;* TreeNode left null;* TreeNode right null;* public TreeNode(int val) {* this.val val;* }* }*/public class Solution {/*** 代码中的类名、方法名、参数…

C++中指针指向无效的内存单元

C中指针指向无效的内存单元 使用运算符*对指针解除引用&#xff0c;以访问指向的值时&#xff0c;务必确保指针指向了有效的内存单元&#xff0c;否则程序要么崩溃&#xff0c;要么行为不端。这看起来合乎逻辑&#xff0c;但一个非常常见的导致应用程序崩溃的原因就是无效指针…

python使用mitmproxy和mitmdump抓包之拦截和修改包(四)

我认为mitmproxy最强大的地方&#xff0c;就是mitmdump可以结合python代码&#xff0c;灵活拦截和处理数据包。 首先&#xff0c;mitmdump的路径如下&#xff1a;&#xff08;使用pip3 install mitmproxy安装的情况&#xff0c;参考我的文章python使用mitmproxy和mitmdump抓包…

【Java】数组的深浅拷贝问题(二维数组举例)(136)

深拷贝和浅拷贝&#xff1a; 对于数组来说&#xff0c;深拷贝就是相当于拷贝了数组的对象&#xff08;基本数据类型&#xff09;&#xff0c;也就是数组当中的内容。而浅拷贝就是拷贝的是数组的地址&#xff08;引用类型&#xff09;&#xff0c;浅拷贝只是复制了对象的引用地…

vscode vue html 快捷键

css文件 选择多行 按下ctrl不放 按下鼠标滚轮不放&#xff08;鼠标中键&#xff09; 鼠标向下移动 同时修改多个相同的字符串 <style> .base-goods-item li {width: 304px;height: 404px;background-color: #eef9f4; } .base-goods-item li {display: block; } .base-…

【剑指Offer】7.重建二叉树

题目 给定节点数为 n 的二叉树的前序遍历和中序遍历结果&#xff0c;请重建出该二叉树并返回它的头结点。 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}&#xff0c;则重建出如下图所示。 提示: 1.vin.length pre.length 2.pre 和 vin 均无重复…

【二本同学的秋招那些事儿】——中秋国庆双节快乐

&#x1f4a7; 二本同学的秋招那些事儿 \color{#FF1493}{二本同学的秋招那些事儿} 二本同学的秋招那些事儿&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页——微风撞见云的博客&#x1f390; &#x1f433; 《数据结构与算…

python经典百题之画椭圆

程序分析 题目要求学习如何使用Python绘制椭圆&#xff08;ellipse&#xff09;。椭圆是一个常见的几何形状&#xff0c;可以通过数学表达式或绘图库来绘制。我们可以使用多种方法来实现这个任务&#xff0c;包括使用数学方程、绘图库等。 解题思路 我们可以使用三种不同的方…

二分搜索简介

概念&#xff1a; 二分搜索算法&#xff08;Binary Search&#xff09;是一种高效的搜索算法&#xff0c;用于在有序数组中查找特定元素的位置。它的基本思想是将数组分为两部分&#xff0c;通过比较目标值与数组中间元素的大小关系&#xff0c;确定目标值可能存在的区间&…

C++中将指针传递给函数

C中将指针传递给函数 指针是一种将内存空间传递给函数的有效方式&#xff0c;其中可包含函数完成其工作所需的数据&#xff0c;也可包含操作结果。将指针作为函数参数时&#xff0c;确保函数只能修改您希望它修改的参数很重要。例如&#xff0c;如果函数根据以指针方式传入的半…

LLM-TAP随笔——有监督微调【深度学习】【PyTorch】【LLM】

文章目录 5、 有监督微调5.1、提示学习&语境学习5.2、高效微调5.3、模型上下文窗口扩展5.4、指令数据构建5.5、开源指令数据集 5、 有监督微调 5.1、提示学习&语境学习 提示学习 完成预测的三个阶段&#xff1a;提示添加、答案搜索、答案映射 提示添加 “[X] 我感到…

动态内存操作(2)

接上一篇文章http://t.csdn.cn/1ONDq&#xff0c;这次我们继续讲解关于动态内存的相关知识。 一、常见的动态内存错误 1.对NULL指针进行解引用操作 #include<stdio.h> #include<stdlib.h> #include<limits.h> int main() {int* p (int*)malloc(INT_MAX/4);…

k8s gitlab cicd 之gradle 篇章(二)并发打包问题

前文&#xff1a;https://caicongyang.blog.csdn.net/article/details/132049822?spm1001.2014.3001.5502 运行几天后发现以下问题&#xff1a; Starting a Gradle Daemon, 4 busy and 2 stopped Daemons could not be reused, use --status for details FAILURE: Build f…

蓝桥等考Python组别五级004

第一部分:选择题 1、Python L5 (15分) 下面哪个不是Python的逻辑运算符?( ) andornot//正确答案:D 2、Python L5 (15分) 下面表达式,结果是False的是( )。 10 <= 1010 // 2 > 25 * (2 + 3) < 153 < 5 or 9 > 17