STM32F103RCT6——定时器简单用法

STM32F10xx参考手册英文和中文版

百度网盘:https://pan.baidu.com/s/1Z2nB0WVJIxvm3VOI9MQiiw

提取码:lxlx

STM32F103RCT6数据手册

链接:https://pan.baidu.com/s/1tRchgf-5C1MN4W58vQ9zPg

提取码:lxlx

定时器分类

STM32F103RCT6包括,高级控制定时器TIM1和TIM8,通用定时器TIM2-5,基本定时器TIM6和TIM7.

高级控制定时器TIM1,TIM8

TIM1和TIM8定时器的功能包括: ● 16位向上、向下、向上/下自动装载计数器 ● 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535之间的任意 数值 ● 多达4个独立通道: ─ 输入捕获 ─ 输出比较 ─ PWM生成(边缘或中间对齐模式) ─ 单脉冲模式输出 ● 死区时间可编程的互补输出 ● 使用外部信号控制定时器和定时器互联的同步电路 ● 允许在指定数目的计数器周期之后更新定时器寄存器的重复计数器 ● 刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态 ● 如下事件发生时产生中断/DMA: ─ 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发) ─ 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数) ─ 输入捕获 ─ 输出比较 ─ 刹车信号输入 ● 支持针对定位的增量(正交)编码器和霍尔传感器电路 ● 触发输入作为外部时钟或者按周期的电流管理

通用定时器TIM2-5

通用TIMx (TIM2、TIM3、TIM4和TIM5)定时器功能包括: ● 16位向上、向下、向上/向下自动装载计数器 ● 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65536之间的任意 数值 ● 4个独立通道: ─ 输入捕获 ─ 输出比较 ─ PWM生成(边缘或中间对齐模式) ─ 单脉冲模式输出 ● 使用外部信号控制定时器和定时器互连的同步电路 ● 如下事件发生时产生中断/DMA: ─ 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发) ─ 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数) ─ 输入捕获 ─ 输出比较 ● 支持针对定位的增量(正交)编码器和霍尔传感器电路 ● 触发输入作为外部时钟或者按周期的电流管理

基本定时器TIM6和TIM7

TIM6和TIM7定时器的主要功能包括: ● 16位自动重装载累加计数器 ● 16位可编程(可实时修改)预分频器,用于对输入的时钟按系数为1~65536之间的任意数值 分频 ● 触发DAC的同步电路 ● 在更新事件(计数器溢出)时产生中断/DMA请求

通用定时器函数

初始化

TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);

//初始化定时器

TIM_Prescaler=psc;//时钟预分频数

TIM_CounterMode;//选择向上计数或向下计数

TIM_Period=arr;//自动重装值

TIM_ClockDivision=CKD;//时钟分频

TIM_RepetitionCounter;//参数设置为0时,时间周期不翻倍

//参数设置为1时,时间周期翻1倍

//参数设置为2时,时间周期翻2倍

使能

TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);

//TIMx ——TIM2-5; FunctionalState NewState——ENABLE/DISABLE

中断标志位

TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT);

//TIMx ——TIM2-5; TIM_IT——TIM_IT_Update

清除中断标志位

TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT); //清除中断标志位

//TIMx ——TIM2-5; TIM_IT——TIM_IT_Update

代码实现

void TIM2_Int_Init(u16 arr,u16 psc)

{

TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;

NVIC_InitTypeDef NVIC_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE); ///使能TIM2时钟

TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数

TIM_TimeBaseInitStructure.TIM_Period = arr ;//arr:自动重装值。

TIM_TimeBaseInitStructure.TIM_Prescaler = psc ;//时钟预分频数

TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStructure);//初始化TIM2

TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE); //允许定时器2更新中断

NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn; //定时器2中断

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1//抢占优先级1

NVIC_InitStructure.NVIC_IRQChannelSubPriority=2; //子优先级2

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

NVIC_Init(&NVIC_InitStructure);

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2

TIM_Cmd(TIM2,ENABLE); //使能定时器2

//定时器2中断服务函数

void TIM2_IRQHandler(void)

{

if(TIM_GetITStatus(TIM2,TIM_IT_Update) != RESET) //溢出中断

{

}

TIM_ClearITPendingBit(TIM2,TIM_IT_Update); //清除中断标志位

}

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

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

相关文章

STM32F103RCT6 介绍

1、STM32F103RCT6 命名含义 ST:意法半导体公司 M:MCU 32:32位单片机 F:通用型单片机 103:产品系列号码 R: 芯片有64个引脚 C:256Kb flash T:LQFP封装 6:芯片工作温度 -40℃…

学STM32(STM32F103RCT6)

系列文章目录 第一章 了解STM32 文章目录 系列文章目录前言一、STM32基本系统1.STM32基本(最小)系统板2.使用STM32为核心器件的基本(最小)系统构成单元 二、主控制器(CPU)1.STM32F103RCT6微控制器参数2.ST…

简单:Windows中的文本与Linux中CentOS的vim编辑器相互复制粘贴方法

简单:Windows中的文本与Linux中vim编辑器中的文本相互复制粘贴的方法 1.从Windows下到vim中: 1,选中windows中文档内容按Ctrlc。 2,进入vi编辑器,在插入模式下,用鼠标点击右键再点击粘贴。 3&#xff0…

linux中vim命令详解(操作大全)

光标的移动 1.用h, j,k,l 来表示光标的移动 vim的金如何退出 2.如何退出vim编辑器操作行 先打出esc推出选项然后shift冒号 ,然后输入q!就可以了 3.如果想进虚拟机中编辑器看操作的话,需要输入vimtutor命令就可以进入vim虚拟器教程了 vim的编辑 4.x代…

Vim的配置 和 windows与Linux之间的复制粘贴

# 在Linux下编程对vim的简单配置,便于编程! 在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有显示行号、语法高亮度显示、智能缩进 等功能的。为了更好的在vim下进行工作,需要手动设置一个配置文件&#xff1…

如何将剪贴板中的内容复制到linux的vim中

1.按i进入insert模式 2.使用shiftinsert键,即可将你在windows系统中复制的内容粘贴到linux系统中

如何修改linux下的vim复制行数限制

vim-如何修改linux下的vim复制行数限制 来自北方的小强 正在努力成为资深数字IC搬砖工的搬砖工 个人根目录下的.vimrc (~/.vimrc)添加如下内容: set viminfo1000,<600 linux下&#xff0c;默认最多复制50行&#xff0c;上述修改即将限制改为600行。 注意&#xff1a; 1 如果…

Linux vim多行操作

同时注释多行 首先&#xff0c;将光标放在要注释的行首&#xff0c;然后按CTRLV进入列(也叫区块)模式&#xff1b;在行首使用上下键选择要注释的多行&#xff1b;用大写“I”(shifti)进入插入模式&#xff1b;然后输入注释符#(任一符号、字母、数字都可以插入)&#xff1b;最后…

【每日一题】缓存穿透、缓存击穿、缓存雪崩及解决方案

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 当下ChatGPT很火&#xff0c;让人心痒痒想试一试好不好用&#xff0c;因此我就试着借它写一篇文章&#xff0c;但是试了几次最终还是没有…

只需这一篇博客就能完全弄懂LSM树

早期LSM树 为什么需要LSM树 B树的数据都存储在叶子节点中&#xff0c;而叶子节点一般都存储在磁盘中。因此&#xff0c;每次插入的新数据都需要随机写入磁盘&#xff0c;而随机写入的性能非常慢。如果是一个日志系统&#xff0c;每秒钟要写入上千条甚至上万条数据&#xff0c…

数据库/MySQL - 深入探究 - 1

1.应用场景 主要用于了解和掌握数据库/MySQL - 更新操作详细流程。 2.学习/操作 1.文档阅读 主要来自于AI的对话【geek chat&#xff0c; chatgpt】 以及官方文档资料&#xff0c;以及其他技术文章&#xff0c;专栏等。 2.整理输出 抛出问题&#xff1a; 数据库【这里以mysql…

EMQX在Windows系统下的开机自启与异常自动重启脚本

目录 0.前言 1.介绍 2.运行与停止 2.1 运行批处理程序 2.2 停止批处理程序 2.3 开机自启动 3.运行结果 4.详细介绍 5.前台运行版本 0.前言 由于为某万年老项目做运维&#xff0c;但源码遗失以及项目遗留问题导致emqx经常崩溃&#xff0c;故无法追根溯源&#xff0c;迫于…

量化工具使用介绍——Tushare

Tushare ID:497485 今年年初的时候&#xff0c;我和几位小伙伴一起合作打花旗杯&#xff0c;项目和量化交易有关。不可避免地会使用到一些常规的量化工具&#xff08;尤其是python的第三方库&#xff09;&#xff0c;虽然决赛还没有开始&#xff0c;我们已经确定进入了二十强。…

BigQuant策略做量化真的能赚钱吗?

BigQuant策略做量化可以赚钱&#xff0c;但是是建立在一些前提条件基础之上的。量化策略本身存在的意义就是通过数量化模型建立科学投资体系&#xff0c;获取稳定收益&#xff0c;相比传统投资&#xff0c;其具备纪律性、系统性、及时性、准确性等诸多优势&#xff0c;所以一个…

自己做量化交易软件(45)小白量化实战18--直接使用通达信自编指标公式进行分析绘图和回测

自己做量化交易软件(45)小白量化实战18–直接使用通达信自编指标公式进行分析绘图和回测 小白量化一代提供了Python公式算法模式来写量化程序。 小白量化二代提供了仿通达信公式的模式来写量化程序。 小白量化三代除了仿通达信公式的模式来写量化程序外&#xff08;见前几篇博客…

自己做量化交易软件(16)用小白通通量化AI框架打造自己的量化平台

最近一段时间&#xff0c;我主要学习python3和tkinter的窗口开发&#xff0c;对tkinter编程逐步了解。 此外&#xff0c;应广大朋友要求&#xff0c;我写了 一本学习python3学习书籍<小白学Python3实战搭建量化投资平台>. <小白学Python3实战搭建量化投资平台>内容…

Chat GPT是什么,初学者怎么使用Chat GPT,需要注意些什么

目录 Chat GPT是什么 初学者怎么使用Chat GPT 使用Chat GPT需要注意什么 一些简单的prompt示例 Chat GPT是什么 Chat GPT是由OpenAI开发的一种大型语言模型&#xff0c;它基于GPT&#xff08;Generative Pre-trained Transformer&#xff09;架构。GPT是一种基于深度学习的…

从GPT到chatGPT(一):GPT1

GPT1 文章目录 GPT1前言正文模型架构无监督学习有监督学习处理不同特定任务 实验训练细节实验结果 分析预训练层参数转移的影响zero-shot的表现消融实验 总结 前言 GPT1&#xff0c;出自于OpenAI的论文《Improving Language Understanding by Generative Pre-Training》&#…