一.基本定时器简介

  STM32F1 系列共有 8 个定时器,分别为:基本定时器、通用定时器、高级定时器。基本定时器 TIM6 和 TIM7 是一个 16 位的只能向上计数的定时器,只能定时,没有外部IO。

二.基本定时器功能

在这里插入图片描述
上图为基本定时器的功能框图。

  • 时钟源:定时器时钟TIMxCLK,即内部时钟CK_INT

  • 计数器时钟:定时器时钟经过PSC预分频器后,即CK_CNT,用于驱动计数器计数 。
    计数器时钟计算方式:CK_CNT=TIMxCLK/(PSC+1)

  • 计数器CNT是一个16位的计数器,最大计数值是65535。当计数达到自动重载寄存器的时候产生更新事件,并清零重头开始计数。

  • 自动重装载寄存器:自动重装载寄存器 ARR 是一个 16 位的寄存器,这里面装着计数器能计数的最大数值。当计数到这个值的时候,如果使能了中断的话,定时器就产生溢出中断。

  • 定时时间的计算:定时时间=计数器的中断周期*中断的次数 = 1/CK_CNT * (ARR+1)

三.定时器初始化结构体

typedef struct {uint16_t TIM_Prescaler; // 预分频器uint16_t TIM_CounterMode; // 计数模式(基本定时器只能使用向上计数)uint32_t TIM_Period; // 定时器周期uint16_t TIM_ClockDivision; // 时钟分频(基本定时器不用设置)uint8_t TIM_RepetitionCounter; // 重复计算器(基本定时器不用设置)
} TIM_TimeBaseInitTypeDef;
  • TIM_Prescaler:定时器预分频器设置,时钟源经过预分频器后才是定时器时钟。
  • TIM_CounterMode:定时器计数方式,包含:向上计数、向下计数、中心对齐模式。基本定时器只能是向上计数(从0开始递增)
  • TIM_Period:定时器周期,设定自动重载寄存器的值。

四.源代码

1.定时器初始化设置和中断初始化设置

//baseTimer.c
#include "baseTimer.h"
void INIT_NVIC_CONFIG(void)
{NVIC_InitTypeDef NVIC_InitStructure;//设置中断分组NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);NVIC_InitStructure.NVIC_IRQChannel = TIM6_IRQn;//设置中断源 基本定时器 6,7NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);
}void INIT_BASETimer_CONFIG(void)
{TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;//开启定时器时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,ENABLE);TIM_TimeBaseInitStructure.TIM_Prescaler = 71;//分频因子 CLK/(pre+1) 72MHZ/72 = 1MHZ =10^6HZ 周期是1usTIM_TimeBaseInitStructure.TIM_Period = 1000-1;//定时1ms中断  (per+1)*计数周期//初始化定时器TIM_TimeBaseInit(TIM6,&TIM_TimeBaseInitStructure);//清除计数器中断标志位TIM_ClearFlag(TIM6,TIM_FLAG_Update);//开启计数器中断TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);//使能计数器TIM_Cmd(TIM6,ENABLE);
}

2.中断处理函数

//stm32f10x_it.h
void TIM6_IRQHandler(void)
{if(TIM_GetITStatus(TIM6,TIM_IT_Update) == SET){Time_Count++;TIM_ClearITPendingBit(TIM6,TIM_FLAG_Update);if(Time_Count == 1000){Time_Count = 0;if(FLAG == 0){FLAG = 1;}else if(FLAG == 1){FLAG = 0;}}}
}

3.主函数

//main.c
#include "stm32f10x.h"
#include "bsp_colorled.h"
#include "baseTimer.h"uint8_t FLAG=0;int main(void)
{INIT_LED_CONFIG();CLOSE_LED();INIT_NVIC_CONFIG();INIT_BASETimer_CONFIG();while(1){if(FLAG == 0){OPEN_GREEN();}else{CLOSE_LED();}}
}

五.实验现象

  • 每隔1s RGB灯绿色交替显示熄灭
  • 工程下载链接:STM32-基本定时器

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

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

相关文章

ofd文件转pdf

主要后端使用Java实现&#xff0c;前端可随意搭配http请求添加依赖&#xff1a;<!-- OFD解析与转换库 --><dependency><groupId>org.ofdrw</groupId><artifactId>ofdrw-converter</artifactId><version>1.17.9</version></…

4.应用层自定义协议与序列化

1.应用层程序员写的一个个解决我们实际问题, 满足我们日常需求的网络程序, 都是在应用层1.1再谈“协议”协议是一种 "约定". socket api 的接口, 在读写数据时, 都是按 "字符串" 的方式来发送接收的. 如果我们要传输一些 "结构化的数据" 怎么办呢…

【QT搭建opencv环境】

本文参考以下文章&#xff1a; https://blog.csdn.net/weixin_43763292/article/details/112975207 https://blog.csdn.net/qq_44743171/article/details/124335100 使用软件 QT 5.14.2下载地址&#xff1a;download.qt.io 选择版本&#xff1a;Qt 5.14.2 Qt 5.14.2百度网盘链接…

golang--函数栈

一、函数栈的组成结构&#xff08;栈帧&#xff09; 每个函数调用对应一个栈帧&#xff0c;包含以下核心部分&#xff1a; 1. 参数区 (Arguments) 位置&#xff1a;栈帧顶部&#xff08;高地址端&#xff09;内容&#xff1a; 函数调用时传入的参数按从右向左顺序压栈&#xff…

【FAQ】创建Dynamics 365 Sales环境

参考文章&#xff1a;5 分钟内安装 Dynamics 365 Sales 步骤 1&#xff1a;访问 Power Platform 管理中心 导航到make.powerapps.com&#xff0c;然后点击右上角的齿轮图标。选择管理中心&#xff0c;或者访问aka.ms/ppac访问 Power Platform 管理中心。 第 2 步&#xff1a…

【数据库】使用Sql Server将分组后指定字段的行数据转为一个字段显示,并且以逗号隔开每个值,收藏不迷路

大家好&#xff0c;我是全栈小5&#xff0c;欢迎来到《小5讲堂》。 这是《Sql Server》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录前言示例数据集数…

7.项目起步(1)

1&#xff0c;项目起步-初始化项目并使用git管理创建项目并精细化配置src目录调整git 管理项目2项目起步-配置别名路径联想提示什么是别名路径联想提示如何进行配置 &#xff08;自动配置了&#xff09;{"compilerOptions" : {"baseUrl" : "./",…

【C++详解】深入解析继承 类模板继承、赋值兼容转换、派生类默认成员函数、多继承与菱形继承

文章目录一、继承概念二、继承定义定义格式继承后基类成员访问方式的变化类模板的继承三、基类和派⽣类间的转换(赋值兼容转换)四、继承中的作用域隐藏规则两道笔试常考题五、派生类的默认成员函数四个常见默认成员函数实现⼀个不能被继承的类六、继承与友元七、继承与静态成员…

加法器 以及ALU(逻辑算术单元)

加法器框架&#xff0c;首先介绍原理&#xff0c;然后引入一位加法器最后再引入多位加法器最后引入带符号的加法器这一节涉及到的硬件电路的知识理解就好&#xff0c;实在看不懂就跳过&#xff0c;但是封装以后的功能必须看懂。这是一个一般的加法过程涉及到的必要元素图中已经…

设计模式实战:自定义SpringIOC(亲手实践)

上一篇&#xff1a;设计模式实战&#xff1a;自定义SpringIOC&#xff08;理论分析&#xff09; 自定义SpringIOC&#xff08;亲手实践&#xff09; 上一篇文章&#xff0c;我们介绍了SpringIOC容器的核心组件及其作用&#xff0c;下面我们来动手仿写一个SpringIOC容器&#…

力扣面试150(42/150)

7.28 20. 有效的括号 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一…

基于黑马教程——微服务架构解析(二):雪崩防护+分布式事务

之前的两篇文章我们介绍了微服务的基础概念及其服务间通信机制。本篇将深入探讨微服务的核心保障&#xff1a;服务保护与分布式事务。一、微服务保护问题描述&#xff1a; 在一个购物车的微服务中&#xff0c;倘若某一项服务&#xff08;服务A&#xff09;同一时刻访问的数据十…

LeetCode: 429 N叉树的层序遍历

题目描述给定一个 N 叉树&#xff0c;返回其节点值的层序遍历&#xff08;即从左到右&#xff0c;逐层访问每一层的所有节点&#xff09;。示例输入格式&#xff08;层序序列化&#xff09;&#xff1a;输入示意&#xff1a;1/ | \3 2 4/ \5 6输出&#xff1a;[[1], [3,2,4…

使用phpstudy极简快速安装mysql

使用 phpStudy 极简快速安装 MySQL 的完整指南&#xff1a; 一、phpStudy 简介 phpStudy 是一款 Windows 平台下的 PHP 环境集成包&#xff0c;包含&#xff1a; Apache/Nginx PHP 5.x-7.x MySQL 5.5-8.0 phpMyAdmin 二、安装步骤 1. 下载安装包 访问官网下载&#xf…

git lfs使用

apt install git lfs 或者下载二进制文件加到环境变量 https://github.com/git-lfs/git-lfs/releases git lfs install git lfs clone huggingface文件路径 如果访问不了hugggingface.co用hf-mirror.com替代&#xff0c;国内下载速度还是挺快的 先按照pip install modelscope m…

6、CentOS 9 安装 Docker

&#x1f433; CentOS 9 安装 Docker 最全图文教程&#xff08;含镜像源优化与常见问题解决&#xff09;标签&#xff1a;CentOS 9、Docker、容器技术、开发环境、国内镜像源 适合读者&#xff1a;后端开发、运维工程师、Linux 初学者&#x1f4cc; 前言 在 CentOS 9 上安装 Do…

SystemV消息队列揭秘:原理与实战

目录 一、消息队列的基本原理 1、基本概念 2、基本原理 3、消息类型的关键作用 4、重要特性总结 5、生命周期管理 6、典型应用场景 二、System V 消息队列的内核数据结构 1、消息队列的管理结构 msqid_ds&#xff08;消息队列标识符结构&#xff09; 关键字段解析 2…

5 分钟上手 Firecrawl

文章目录Firecrawl 是什么&#xff1f;本地部署验证mcp安装palyground&#x1f525; 5 分钟上手 FirecrawlFirecrawl 是什么&#xff1f; 一句话&#xff1a; 开源版的 “最强网页爬虫 清洗引擎” • 自动把任意网页 → 结构化 Markdown / JSON • 支持递归整站抓取、JS 渲染…

算法训练营day31 贪心算法⑤56. 合并区间、738.单调递增的数字 、968.监控二叉树

贪心算法的最后一篇博客&#xff01;前面两道题都是比较简单的思路&#xff0c;重点理解一下最后一道题即可。有一说一&#xff0c;进入到贪心算法这一章节之后&#xff0c;我的博客里和代码注释里的内容明显少了很多&#xff0c;因为很多贪心的题目我觉得不需要很复杂的文字说…

Jenkins流水线部署+webhook2.0

文章目录1. 环境2. 用到的插件3. 流水线部署脚本1. 环境 Centos7Jenkins2.5.0JDKopen17阿里云仓库 注意&#xff1a;这个版本兼容需要特别注意&#xff0c;要不然会很麻烦 2. 用到的插件 Generic Webhook Trigger 3. 流水线部署脚本 兼容钩子部署&#xff08;webhook&…