江科大 STM32入门教程 P14 定时中断和定时器外部时钟

1 通用定时器中断的初始化(Time2)

在这里插入图片描述

在这里插入图片描述

1.1 开启RCC的TimxCLK时钟,

由于Time2是由APB1总线的外设控制的

RccAPB1PeriphClockCmd(RCC_APB1PeriPh_TIM2,ENABLE);//使能APB1总线

1.2 选择时基单元时钟

选择时基单元内部时钟

TIM_InteralClockConfig(IIM2);//内部时钟驱动,单片机上电默认使用内部时钟

1.3 配置时基单元

 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseStructure.TIM_Period = 0xFFFF; TIM_TimeBaseStructure.TIM_Prescaler = 0xF; TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, & TIM_TimeBaseStructure);
1.3.1 TIM_TimeBaseStructure.TIM_ClockDivision
TIM_ClockDivision;//的作用:指定时钟分频;

指定时钟分频的原理
在这里插入图片描述

在定时器的外部输入引脚一般有一个滤波器,滤波器可以消除信号的抖动干扰;基本的工作原理,在固定的时钟频率F下进行采样,如果连续N个采样点为相同的电平,代表输入信号稳定;采样频率F一般有内部时钟而来或者由内部时钟加一个时钟分频来的,分频的参数由TIM_ClockDivision决定的;这个参数和外部输入时钟的滤波电容有关和时基单元无关;

1.3.2 TIM_TimeBaseStructure.TIM_CounterMode

计数模式的选择

/** @defgroup TIM_Counter_Mode * @{*/#define TIM_CounterMode_Up                 ((uint16_t)0x0000)
#define TIM_CounterMode_Down               ((uint16_t)0x0010)
#define TIM_CounterMode_CenterAligned1     ((uint16_t)0x0020)
#define TIM_CounterMode_CenterAligned2     ((uint16_t)0x0040)
#define TIM_CounterMode_CenterAligned3     ((uint16_t)0x0060)
#define IS_TIM_COUNTER_MODE(MODE) (((MODE) == TIM_CounterMode_Up) ||  \((MODE) == TIM_CounterMode_Down) || \((MODE) == TIM_CounterMode_CenterAligned1) || \((MODE) == TIM_CounterMode_CenterAligned2) || \((MODE) == TIM_CounterMode_CenterAligned3))
1.3.3 决定定时时间参数
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseStructure.TIM_Period = 10000-1; TIM_TimeBaseStructure.TIM_Prescaler = 7200-1; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);//第二定义定时器基本参数

举例,这里以定时1S为例

1.4 开启TIM2定时器

	TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE );//第三是能TIM2定时器

1.5 开启NVIC中断(NVIC是控制所有的中断的``)

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);NVIC_InitTypeDef NVIC_InitStructNVIC_InitStruct.IRQChannel = TIM2_IRQChannel;NVIC_InitStruct.IRQChannelPreemptionPriority = 0;NVIC_InitStruct.IRQChannelSubPriority = 2; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStruct)//初始化NVIC

1.6 启动定时器

TIM_Cmd(TIM2, ENABLE);//启动定时器2的库函数;

以上就是整个定时器中断初始化的代码;

2 写中断函数

void TIM2_IRQHandler(void)//编写中断函数
{if(TIM_GetITStatus(TIM2, TIM_IT_Update) == SET);//获取中断标志位,查看是否有中断;{TIM_ClearFlag(TIM2, TIM_FLAG_Update); //清除标志位,无论是否有标志位都要清楚}
}

2.1 STM32中断标志:先清理后清理的区别

中断清除标志位,详细解释

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

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

相关文章

openGauss学习笔记-150 openGauss 数据库运维-备份与恢复-物理备份与恢复之gs_backup

文章目录 openGauss学习笔记-150 openGauss 数据库运维-备份与恢复-物理备份与恢复之gs_backup150.1 背景信息150.2 前提条件150.3 语法150.4 参数说明150.5 示例 openGauss学习笔记-150 openGauss 数据库运维-备份与恢复-物理备份与恢复之gs_backup 150.1 背景信息 openGaus…

alpine linux 之嵌入式搭建

目录 序启动修改源安装 openssh设置开机网络 ip参考 序 最近发现了 alpine linux 这个文件系统,这是一个基于 musl libc 和 busybox 的面向安全的轻量级 Linux 发行版。 下载了他的文件系统,只有 3M 多的压缩包,非常适合嵌入式系统。 地址…

037.Python面向对象_关于抽象类和抽象方法

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉&…

MIT线性代数笔记-第28讲-正定矩阵,最小值

目录 28.正定矩阵,最小值打赏 28.正定矩阵,最小值 由第 26 26 26讲的末尾可知在矩阵为实对称矩阵时,正定矩阵有以下四种判定方法(都是充要条件): 所有特征值都为正左上角所有 k k k阶子矩阵行列式都为正&…

Linux 基础IO

文章目录 前言基础IO定义系统IO接口文件描述符重定向原理缓冲区刷新 前言 要知道每个函数/接口的全部参数和返回值建议去官网或者直接在Linux的man手册中查,这不是复制粘贴函数用法的文章。 C语言文件读写介绍链接 基础IO定义 IO是Input/Output的缩写&#xff0c…

【Linux】进程周边001之进程概念

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.基本概念 2.描述进程-PCB…

linux之autoconf(1)基础介绍

Linux之autoconf(1)基础介绍 Author:Onceday Date:2023年2023年12月10日 漫漫长路,才刚刚开始… 本文主要内容翻译自Autoconf官方文档,仅供学习交流之用。 全系列文章请查看专栏: buildroot编译框架_Once_day的博客-CSDN博客。…

SpringBoot实战项目:蚂蚁爱购(从零开发)

简介 这是从零开发的SpringBoot实战项目,名字叫蚂蚁爱购。 从零开发项目,视频加文档,十天彻底掌握开发SpringBoot项目。 教程路线是:搭建环境> 安装软件> 创建项目> 添加依赖和配置> 通过表生成代码> 编写Java代…

【前端】CSS浮动(学习笔记)

一、浮动 1、传统网页布局 网页布局的本质:用 CSS 来摆放盒子,把盒子摆放到相应位置。 CSS 提供了三种传统布局方式(盒子如何进行排列顺序) 普通流(标准流)浮动定位 实际开发中,一个页面基…

Python实现获取b站视频的弹幕内容

前言 本文是该专栏的第39篇,后面会持续分享python的各种干货知识,值得关注。 在本专栏之前,有详细介绍使用python增加b站视频的播放量方法,感兴趣的同学可往前翻阅《Python-增加b站视频播放量》。而本文,笔者再来单独的详细介绍,通过python来获取b站视频的弹幕内容。如下…

CGAL的3D皮肤表面网格

1、介绍 Edelsbrunner 引入的皮肤表面和具有丰富而简单的组合和几何结构,使其适合在生物计算中模拟大分子。 对这些表面进行网格划分通常是进一步处理其几何形状所必需的,例如在数值模拟和可视化中。 皮肤表面由一组加权点(输入球&#xff09…

Course3-Week1-无监督学习

Course3-Week1-无监督学习 文章目录 Course3-Week1-无监督学习1. 欢迎1.1 Course3简介1.2 数学符号约定 2. K-means算法2.1 K-means算法的步骤2.2 代价函数2.3 选择聚类数量 3. 异常检测3.1 异常检测的直观理解3.2 高斯分布3.3 异常检测算法3.4 选取判断阈值 ε \varepsilon ε…