#include "stm32f10x.h"                  // Device header

void TimerInit(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); TIM_InternalClockConfig(TIM2); /**********
初始化配置时基单元
TIM_Period TIM_Prescaler 描述
10000 - 1 7200 - 1; 这样就变成了1S执行一次
1000 - 1 7200 - 1; 这样就变成了100ms执行一次
10000 - 1 720 - 1; 这样就变成了100ms执行一次
********/
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitTypeStructrue;
TIM_TimeBaseInitTypeStructrue.TIM_ClockDivision = TIM_CKD_DIV1; // 是否分频
TIM_TimeBaseInitTypeStructrue.TIM_CounterMode = TIM_CounterMode_Up; // 中心对齐模式1
TIM_TimeBaseInitTypeStructrue.TIM_Period = 10000 - 1; // 更新周期值
TIM_TimeBaseInitTypeStructrue.TIM_Prescaler = 7200 - 1; // 预分频器值
TIM_TimeBaseInitTypeStructrue.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitTypeStructrue); // 使能中断 更新中断到NVIC的路
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); // NVIC优先级分组
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); // 初始化NVIC
NVIC_InitTypeDef NVIC_InitStructrue;
NVIC_InitStructrue.NVIC_IRQChannel=TIM2_IRQn;
NVIC_InitStructrue.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStructrue.NVIC_IRQChannelPreemptionPriority=2; // 配置抢断优先级
NVIC_InitStructrue.NVIC_IRQChannelSubPriority=1; // 配置响应优先级
NVIC_Init(&NVIC_InitStructrue); // 启动定时器
TIM_Cmd(TIM2, ENABLE); } // 定时器2的中断函数
void TIM2_IRQHandler(void)
{
// 检查一下中断是否真的触发了
// 如果中断2的更新中断变成set了,就可以执行中断函数了
if(TIM_GetITStatus(TIM2, TIM_IT_Update) == SET)
{
// 可以在这里执行中断事件 // 清除中断标志位
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
}
}

这样之后就可以再任何地方使用中断函数 “TIM2_IRQHandler”了。

有个小问题是,设备一上电就会执行一次中断,并没有满足条件,为了防止这件事出现可以用下面的代码来解决这个问题

// TIM初始化完成之后
TIM_ClearFlag(TIM2, TIM_IT_Update); // 加上这句话是可以防止一上电就执行了一次中断

Tim定时器初始化的方法的更多相关文章

  1. 【STM32H7教程】第32章 STM32H7的TIM定时器基础知识和HAL库API

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第32章       STM32H7的TIM定时器基础知识和H ...

  2. 基于STM8的TIM定时器操作---STM8-第三章

    1. 综述 STM8S提供三种类型的 TIM 定时器:高级控制型(TIM1).通用型(TIM2/TIM3/TIM5)和基本型定时器(TIM4/TIM6).它们虽有不同功能但都基于共同的架构.此共同的架 ...

  3. TIM定时器的应用

    TIM定时器的应用   ①输入捕获的应用: 上一节,我已阐述TIM的输入捕获具体作用有两个(如下图):     对输入信号的测量:                                    ...

  4. ios 上浏览器返回上一页不会刷新页面问题,页面初始化的方法不执行

    https://blog.csdn.net/yang450712123/article/details/79276102 https://blog.csdn.net/Chengbin_Huang/ar ...

  5. 【STM32】TIM定时器

    TIM定时器(TIM3为例) 初始化: A:结构体TIM_HandleTypeDef的成员: 1.*Instance:类型为TIM_TypeDef,即对TIM的寄存器的映射,通过这个成员可以操作寄存器 ...

  6. (转载) jQuery 页面加载初始化的方法有3种

    jQuery 页面加载初始化的方法有3种 ,页面在加载的时候都会执行脚本,应该没什么区别,主要看习惯吧,本人觉得第二种方法最好,比较简洁. 第一种: $(document).ready(functio ...

  7. 松瀚SN8P2501 定时器初始化程序--汇编源码

    /* 松瀚 SN8P2501B 定时器初始化程序 */ INI_IRQ: ;定时器T0初始化 MOV A, #01100000b ;定时器模式Fcpu/4 16M/4/4=1M 1U计一次 B0MOV ...

  8. C++-二维vector初始化大小方法-备忘

    来源: C++——二维vector初始化大小方法 1.直接用初始化方法 名字为vec,大小为n*m,初始值为0的二维vector. vector<vector<)); 2.用resize( ...

  9. Linux_服务器_05_CentOS 7安装完成后初始化的方法_Linux

    参考资料 1.CentOS 7安装完成后初始化的方法_Linux

  10. TCP定时器 之 重传/延迟ACK/保活 定时器初始化

    创建socket时会创建传输控制块,之后调用初始化函数对控制块进行初始化,其中包括对定时器的初始化,tcp会调用tcp_init_xmit_timers函数来初始化这些定时器,本文将详细分析tcp_i ...

随机推荐

  1. 哎,被这个叫做at least once的玩意坑麻了。

    你好呀,我是歪歪. 前几天遇到一个生产问题,同一个数据在数据库里面被插入了两次,导致后续处理出现了一些问题. 当时我们首先检讨了自己,没有做好幂等校验.甚至还发现了一个低级错误:对应的表,针对订单号, ...

  2. VMWare配置处理器个数和实际电脑CPU核心线程数关系

    配置说明 处理器数量 :指CPU内核数量(例如:4C / 8C),并不是指CPU颗数. 每个处理的核心数量:指CPU中的线程(4C8T中的8T),并不是指核心(Core)数量. 示例配置 处理器数量 ...

  3. cv2 判断图片是冷还是暖

    把图片的颜色空间转为HSV H表示色调(下图横轴), 图片的平均H值可用于区分冷暖

  4. QT学习:05 元对象系统

    --- title: framework-cpp-qt-05-元对象系统 EntryName: framework-cpp-qt-05-mos date: 2020-04-09 17:11:44 ca ...

  5. Springboot中自定义监听器

    一.监听器模式图 二.监听器三要素 广播器:用来发布事件 事件:需要被传播的消息 监听器:一个对象对一个事件的发生做出反应,这个对象就是事件监听器 三.监听器的实现方式 1.实现自定义事件 自定义事件 ...

  6. 莫名其妙的bug——Segmentation fault

    vscode出现Segmentation fault异常,但是没有问题报错(如上) 先说原因:cout << dp[m]; m没有输入,一个空定义(空指针) 难受啊,有一次cf因为这个bu ...

  7. Java中final用法与详解

    final作为Java中经常用到的关键字,了解final的使用方法是非常有必要的. 这里从final关键字在数据域.方法和类中三个方面分析final关键字的主要用法. final应用于基本数据类型 1 ...

  8. SpringBoot自定义全局异常返回页面

    返回自定义异常界面,需要引入thymeleaf依赖(非必须,如果是简单的html界面则不用) <dependency> <groupId>org.springframework ...

  9. 合合TextIn - 大模型加速器

    TextIn是合合信息旗下的智能文档处理平台,在智能文字识别领域深耕17年,致力于图像处理.模式识别.神经网络.深度学习.STR.NLP.知识图谱等人工智能领域研究.凭借行业领先的技术实力,为扫描全能 ...

  10. 自己理解的TCP三次握手

    ### TCP 三次握手过程是怎样的? TCP的建立连接是通过三次握手来进行的.三次握手的过程如下图: 说实话这个很好理解,我称之为N字型 首先我们理解到建立连接是一个虚的概念了对吧?那么我们来设计一 ...