stm32 定时器TIM时钟步骤

2023-11-04

1)TIM3 时钟使能 。

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIMx, ENABLE); //时钟使能

2) 初始化定时器参数,设置自动重装值, 分频系数,计数方式等。

定时器的初始化函数TIM_TimeBaseInit

voidTIM_TimeBaseInit(TIM_TypeDef*TIMx,
TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct); //前面指是哪个TIM,后面指TimeBaseInitStruct结构体指针。

 

TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;   //定义TIM初始化类型结构体变量

TIM_TimeBaseStructure.TIM_Period = 5000;   //设置自动重载计数周期值

TIM_TimeBaseStructure.TIM_Prescaler =7199;   //设置分频系数

TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分频因子

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //设置为向上计数方式

TIM_TimeBaseInit(TIMx, &TIM_TimeBaseStructure);  //初始化时钟TIMx

3) 设置 TIM3_DIER 允许更新中断 。

void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState)
第一个参数是选择定时器号,这个容易理解,取值为 TIM1~TIM17
第二个参数非常关键,是用来指明我们使能的定时器中断的类型,定时器中断的类型有很
多种,包括更新中断 TIM_IT_Update,触发中断 TIM_IT_Trigger,以及输入捕获中断等等。
第三个参数就很简单了, 就是失能还是使能 。

4TIM3 中断优先级设置。

 NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3 中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占优先级 0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //从优先级 3
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ 通道被使能
NVIC_Init(&NVIC_InitStructure); //④初始化 NVIC 寄存器
TIM_Cmd(TIM3, ENABLE); //⑤使能 TIM3 

5) 允许 TIMx工作,也就是使能 TIMx

void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState) ;

6) 编写中断服务函数。

 

在固件库函数里面, 用来读取中断状态寄存器的值判断中断类型的函数是:
ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t) ;

固件库中清除中断标志位的函数是:

 void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT) ;

 

例如:我们判断定时器3是否发生更新(溢出)中断,并清除中断标志位。

if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) {

  TIM_ClearITPendingBit(TIM3, TIM_IT_Update );

}

//定时器 3 中断服务程序⑥
void TIM3_IRQHandler(void) //TIM3 中断
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查 TIM3 更新中断发生与否
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除 TIM3 更新中断标志
LED1=!LED1;
}
}

 

 

知识来源:STM32F1开发指南-库函数版本_V3.1 

转载于:https://www.cnblogs.com/zengsf/p/7160928.html

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

stm32 定时器TIM时钟步骤 的相关文章

  • 写需求分析必须牢记的5大要点

    需求验证的5大要点 要做好需求验证 必须在思想 方法 语言 人员 内容5个要点上做好相应的工作 否则就会产生很多负面的影响 1 思想 前面已经说过 由于Review被翻译成 评审 导致很多人将其与中国人常说的评审相混淆 其实它们之间是有区别
  • Eclipse搭建stm32+jlink开发环境全攻略(进阶篇一)

    Eclipse搭建stm32 jlink开发环境全攻略 进阶篇 一 本篇开始讲解一些比较实用的东西 在前面的两章中 我们讲解了eclipse开发stm32的大部分问题 然而 在实际使用过程中 我们仍然会遇到一些不太理想的地方 比如 ecli
  • ANDROID

    1 环境构建 2 模拟测试 3 Activity 4android中的资源 5 UI 6 各种控件
  • 手动更新(rpi-update)树莓派固件

    手动更新 rpi update 树莓派固件 1 下载固件 本地更新 先在 PC 上下载固件 也可以用如下方法下载 curl L https github com Hexxeh rpi firmware archive master tar
  • Eclipse搭建stm32+jlink开发环境全攻略(高级篇)

    Eclipse搭建stm32 jlink开发环境全攻略 高级篇 一 问题概况 通过初级篇的学习 我们知道了一个Eclipse工程的配置以及调试 貌似使用也没什么问题 然而 当我们抛弃掉Eclipse自带的工程模版是 也抛弃的他的一些其他的功
  • 【AD20】快速且只选中部分自己想要的同类型的元件

    在project属性框里面 可以选择所有如下图所示内容 这个是一个过滤器 里面有多种小选项 比如 Components 元件 Pads 焊盘 Texts 文本 选择哪个就只能选择对应的部分 比如 只选择文本 在画图区域 框选 发现只有文本才
  • 使用MicroPython开发ESP32(02):库介绍

    文章目录 目的 库基础说明 库列表 Python基础库 嵌入式设备相关库 ESP32特有库 总结 目的 对于Python来说丰富的库是其使用快速简易的关键 这点对于MicroPython也一样 这篇文章就对MicroPython的库做个罗列
  • 嵌入式杂谈之中断向量表

    虽说接触了好久的单片机或者说嵌入式开发 不过对于有些概念还是比较模糊 因此此系列将会从一些零碎的小知识点出发 慢慢的遍历整张嵌入式开发的地图 这次先来看一下中断向量表 至于为什么会提到中断向量表 主要是因为我自己在学习嵌入式Linux开发的
  • 06 CubeMX HAL库stm32作从机 硬件I2C中断接收无BUG程序

    文章目录 CubeMX HAL库stm32作从机 硬件I2C中断接收无BUG程序 一 设置烧录模式 二 使用外部晶振 三 开启IIC中断 四 设置IIC参数 五 配置外部时钟 六 设置工程信息 七 代码生成项配置 八 在Keil中打开工程
  • MSP430嵌入式接口编程(惯性测量单元温湿度双音多频磁力计LCD显示等)

    Energia IDE编程MSP430 GPIO 串口通讯 定时中断 添加库 嵌入式器件接口编程 加速度计 include
  • LWIP在STM32上的移植

    本文做记录摘抄 加上自己的体会 文章标题 STM32使用LWIP实现DHCP客户端 http www cnblogs com dengxiaojun p 4379545 html 该文章介绍了几点 LWIP源码的内容 关键点 1 inclu
  • U-Boot启动过程完全分析

    1 1 U Boot工作过程 U Boot启动内核的过程可以分为两个阶段 两个阶段的功能如下 1 第一阶段的功能 硬件设备初始化 加载U Boot第二阶段代码到RAM空间 设置好栈 跳转到第二阶段代码入口 2 第二阶段的功能 初始化本阶段使
  • 在vmware里面看不到已经设置的共享文件夹

    查看你是否设置了共享文件夹 vmware hgfsclient 在上图的虚拟机点击安装vmware tools 之后会在vmware tools文件里面有一个压缩的文件 把它复制到自己创的文件夹并解压 自己创建文件夹使用mkdir p mo
  • 内存管理实验

    内存管理 1 介绍 内存管理 是指软件运行时对计算机内存资源的分配和使用的技术 其最主要的目的是如何高效 快速的分配 并且在适当的时候释放和回收内存资源 内存管理的实现方法有很多种 他们其实最终都是要实现 2 个函数 malloc 和 fr
  • STM32F103C8t6程序下载

    一 下载程序之前了解的内容 STM32英文手册下载 https www stmcu org cn document list index category 158 STM32的芯片上有两个管脚BOOT0和BOOT1 这两个管脚在芯片复位时的
  • 为何在新建STM工程中全局声明两个宏

    在uVision中新建STM32工程后 需要从STM32标准库中拷贝标准外设驱动到自己的工程目录中 此时需要在工程设置 gt C C 选项卡下的Define文本框中键入这两个全局宏定义 STM32F40 41xxx USE STDPERIP
  • 物联锁项目失败原因分析

    一 背景 2022年3月份接手IM024物联锁项目救火 此项目主要用于医院共享轮椅 共享病床 此项目是从2021年初开始立项开发 投入了大量的人力物力 但是在2022年3月份时产品工作仍然不稳定 此项目基本上可以判定为一个失败的典型 为了吸
  • Oracle块损坏处理(MOS)

    处理 Oracle 块损坏 文档 ID 1526911 1 适用于 Oracle Database Enterprise Edition 版本 7 0 16 0 到 11 2 0 2 0 发行版 7 0 到 11 2 本文档所含信息适用于所
  • 计算机基础:一颗芯片是怎样诞生的?

    一颗芯片是怎样诞生的 芯片属于半导体 半导体是介于导体和绝缘体之间的一类物质 元素周期表中硅 锗 硒 硼的单质都属于半导体 这些单质通过掺杂其他元素生成的一些化合物 也属于半导体的范畴 这些化合物在常温下可激发载流子的能力大增 导电能力大大
  • 跟着野火学FreeRTOS:第一段(任务定义,切换以及临界段)

    在裸机系统中 系统的主体就是 C P U CPU CP U 按照预先设定的程序逻辑在 m a i n

随机推荐

  • 人工智能——衣服分类(大作业必备)

    官方网站 大作业系列传送门 文本分类 模仿VGG16的衣服分类 导入数据 指定名称 观察里面图片 预处理 建立模型 编译模型 开始训练 绘制曲线 模型评估 图形测试定义 验证结果 预测多张结果 预测单张结果 导入数据 tf keras da
  • laravel-admin整合wangEditor2及上传图片

    小伙伴说MD编辑器不好用 因为复制粘贴不方便 所以我换了一个编辑器整合 选择了老朋友wangEditor 下面为大家介绍怎么在laravel v6 9 laravel admin v1 7 wangEditor2的情况下上传图片 第一步 c
  • android sdk配置图文教程

    首先配置 java sdk 下载java sdk java sdk也有很多版本 问清项目版本 下载相对应的 然后配置环境变量 下图是我电脑下载的版本 下载好就就是配置环境变量了 配置java sdk 环境变量 右击我的电脑 属性 高级系统设
  • VUE element-ui 之table表格导出Excel功能封装(纯前端实现)

    需求 导出当前页面所有数据 步骤 下载所需依赖 npm install save xlsx file saver 引入依赖 这里我进行了封装 由于很多页面都需要导出excel功能 js文件中引入依赖 进行导出方法封装 import File
  • 简单的jsp+servlet+jdbc+mysql实现用户增删改查-一抹茶-csdn

    jsp servlet jdbc mysql实现用户增删改查 项目下载地址 里面包含了项目文件 jar bootstrap jquery sql 也可以联系957406675 QQ群获取下载 运行环境 jdk1 8 0 102 eclips
  • 操作系统课程设计 - 多线程模拟 - 时间片轮转法实现处理机调度

    此篇博客用于记录学习历程 仅供交流参考 一 课程设计题目及内容 题目 设计一个按照时间片轮转法实现处理机调度的程序 时间片轮转法实现处理机调度的程序设计提示如下 1 假设系统有n个进程 每个进程用一个进程控制块 PCB 来代表 进程控制块的
  • 如何使用css将多出范围的字变为...

    话不多说 上代码 呈一行效果 width 100px text overflow ellipsis 将文本溢出显示为 white space nowrap 强制显示为一行 overflow hidden 溢出隐藏 呈多行效果 width 1
  • Golang开发项目目录简介以及目录结构设置规范

    一 Golang项目简单介绍 Golang简单的目录结构如下 其中 bin用来存放经过go bulid后的可执行文件 pkg存放编译后的go module 而src就存放我们项目的代码 二 三种常用目录结构 1 适合个人开发者 2 流行的目
  • 大数据组件-kafka(基础篇)

    大数据组件 kafka 基础篇 Kafka简介 Kafka是什么 Kafka的应用场景 Kafka的架构组成 Kafka的主要竞争力 Kafka简介 Kafka是什么 Kafka是一个消息队列 存储消息的队列中间件 可以存储消息进队列中 也
  • 关于CMake生成包含PCL库和CGAL库的工程时出现“无法解析的外部符号”的错误

    前言 博主之前安装了PCL 1 8 0库 教程链接 PCL 1 8 0 AllInOne VS2013 Win8 X64 安装配置及部分问题解决方法 和CGAL库 教程链接 在Win8 VS2013中配置CGAL库 最近需要把两个库用在同一
  • 红球进黑洞【线段树区间更新+二进制异或处理】【牛客小白月赛9-C】

    题目链接 给你N个点 M次查询 问的是 一 区间 l r 的数的总和 二 把区间 l r 上的所有点去异或 xor 一个数X 一开始用了点更新 然后T了 想了一会 最后在比赛结束前终于美滋滋的完成了AC 庆幸 我的想法是这样的 将每个点的值
  • 学习笔记 JavaScript ES6 ES6数组的扩展

    学习内容 类数组 伪数组 Array from Array of copyWithin fill includes 类数组 伪数组 下面这几行代码的返回值就是伪数组 伪数组有索引 且长度是非负的整数 即长度length属性 但是没有数组的方
  • 51单片机学习笔记(二) 单个数码管显示1到9

    转自我的博客 http sincos in p 20 数码管 其实就是8个发光二极管按顺序排列而成的 所以让数码管显示特定的数字 只需要将该亮的二极管点亮 不该亮的灭了就好了 为了达到这个目的 就得参考电路图了 51HEI开发板的电路图在我
  • 腾讯校招编程题之快递分身术

    题目描述 城市里有3000条横向的道路和3000条纵向的道路 分别从1开始编号知道3000 相邻两条平行道路的间距为1 我们用 x y 表示第x号横向道路和第y号纵向道路 N个需要送快递的点坐落在这些交点上 小Q只能沿着这些道路送快递 而且
  • [Unity3D]Lua中使用协程coroutine和计时器timer

    习惯了unity3d的协程用法 那么我们在Unity里面怎么使用 StartCoroutine StopCoroutine WaitForSeconds 首先lua也有coroutine 其实lua中的协程真的是暂停 用法和unity并非相
  • 模型分类model

    模型可以按照多个维度进行分类 以下是常见的几种模型分类方式 1 根据应用领域分类 数学模型 基于数学原理和方程式来描述和解决问题 如微积分模型 线性代数模型等 物理模型 基于物理原理和规律来模拟和解释现象 如力学模型 电路模型等 经济模型
  • D3.js 绘制柱状图

    使用D3 V4版本绘制 使用D3绘制柱状图 绘制效果如下 使用D3绘制柱状图 先对需要绘制的图形拆解 主要分为以下几个部分 1 比例尺的定义 2 坐标轴的绘制 3 添加矩形 4 修改坐标轴样式 5 柱状图装饰效果添加 首先 先定义data
  • Docker存储

    前言 上一篇文章中简单总结了一下docke的基础使用方法 这次我来总结一下有关docker存储方面的相关知识 本文同样建立在CloudMan的系列教程之上 有兴趣的可以直接移步 有些人可能觉得这个很简单 存储就是硬盘嘛 docker容器既然
  • Shell脚本之for循坏语句

    目录 一 for循环语句 1 1 列表循环 1 2 不带列表循环 1 3 类C风格的for循环 1 4 for循环案列 二 总结 一 for循环语句 语法结构 列表循环 不带列表循环 类c风格的for循环 1 1 列表循环 1 格式1 fo
  • stm32 定时器TIM时钟步骤

    1 TIM3 时钟使能 RCC APB1PeriphClockCmd RCC APB1Periph TIMx ENABLE 时钟使能 2 初始化定时器参数 设置自动重装值 分频系数 计数方式等 定时器的初始化函数TIM TimeBaseIn