Tim定时器初始化的方法
#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定时器初始化的方法的更多相关文章
- 【STM32H7教程】第32章 STM32H7的TIM定时器基础知识和HAL库API
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第32章 STM32H7的TIM定时器基础知识和H ...
- 基于STM8的TIM定时器操作---STM8-第三章
1. 综述 STM8S提供三种类型的 TIM 定时器:高级控制型(TIM1).通用型(TIM2/TIM3/TIM5)和基本型定时器(TIM4/TIM6).它们虽有不同功能但都基于共同的架构.此共同的架 ...
- TIM定时器的应用
TIM定时器的应用 ①输入捕获的应用: 上一节,我已阐述TIM的输入捕获具体作用有两个(如下图): 对输入信号的测量: ...
- ios 上浏览器返回上一页不会刷新页面问题,页面初始化的方法不执行
https://blog.csdn.net/yang450712123/article/details/79276102 https://blog.csdn.net/Chengbin_Huang/ar ...
- 【STM32】TIM定时器
TIM定时器(TIM3为例) 初始化: A:结构体TIM_HandleTypeDef的成员: 1.*Instance:类型为TIM_TypeDef,即对TIM的寄存器的映射,通过这个成员可以操作寄存器 ...
- (转载) jQuery 页面加载初始化的方法有3种
jQuery 页面加载初始化的方法有3种 ,页面在加载的时候都会执行脚本,应该没什么区别,主要看习惯吧,本人觉得第二种方法最好,比较简洁. 第一种: $(document).ready(functio ...
- 松瀚SN8P2501 定时器初始化程序--汇编源码
/* 松瀚 SN8P2501B 定时器初始化程序 */ INI_IRQ: ;定时器T0初始化 MOV A, #01100000b ;定时器模式Fcpu/4 16M/4/4=1M 1U计一次 B0MOV ...
- C++-二维vector初始化大小方法-备忘
来源: C++——二维vector初始化大小方法 1.直接用初始化方法 名字为vec,大小为n*m,初始值为0的二维vector. vector<vector<)); 2.用resize( ...
- Linux_服务器_05_CentOS 7安装完成后初始化的方法_Linux
参考资料 1.CentOS 7安装完成后初始化的方法_Linux
- TCP定时器 之 重传/延迟ACK/保活 定时器初始化
创建socket时会创建传输控制块,之后调用初始化函数对控制块进行初始化,其中包括对定时器的初始化,tcp会调用tcp_init_xmit_timers函数来初始化这些定时器,本文将详细分析tcp_i ...
随机推荐
- Spring Boot入门实验
一. 实验目的和要求 1.掌握使用 IDEA 通过 Maven 和 Spring Initializr 的方式创建 Spring Boot 应用程序: 2.掌握 Maven 的工作原理: 3.了解 s ...
- W5100 硬件协议栈 调试经验
--- title: W5100 硬件协议栈 调试经验 date: 2020-06-21 11:22:33 categories: tags: - debug - tcpip - w5100 - su ...
- 解决keil5仿真错误:Encountered an improper argument
--- title: 解决keil5仿真错误:Encountered an improper argument date: 2020-06-18 03:13:18 categories: tags: ...
- mysql判断两个字符串(以逗号分隔)是否存在交集
转载:https://blog.csdn.net/username666/article/details/107815331?utm_medium=distribute.pc_relevant.non ...
- OpenStack 下 CentOS6.X 镜像网络初始化失败问题排查
问题表现 在我的 OpenStack 集群上迁移了一批老旧的镜像(从其他三方云平台过来的)发现这批镜像在使用 ConfigDrive 的方式注入配置初始化时无法对非首张网卡镜像初始化(后经过测试非 C ...
- ubuntu20 python2 通过安装包安装mysql-python
前言 众里寻他千百度,蓦然回首,那人却在灯火阑珊处. 最近要测试一个python2环境的代码,其中用到了MySQLdb, 查询网络,发现要安装mysql-python,于是就进行了一番艰难的探索,现在 ...
- Java高效率查询Mysql节点树数据
示例 目前有一个功能:任务计划管理,必然存在多级子任务的父子级关系,每个任务还会存在其它数据的关联表. mysql无法一次性递归查出想要的数据结构,想必很多人都会是通过根目录递归查询数据库的方式查出树 ...
- 如何计算QPS、PV和需要部署机器数量?
基本概念 网站访问量的常用衡量标准:独立访客(UV) 和 综合浏览量(PV),一般以日为单位来计算. 独立访客(UV):指一定时间范围内相同访客多次访问网站,只计算为1个独立访客. 综合浏览量(PV) ...
- Mysql生成实体类
-- 查询数据表结构 SELECT CONCAT('"e.',SUBSTRING(COLUMN_NAME,1),',"+'),COLUMN_NAME,',',COLUMN_TYPE ...
- Vue介绍和使用
一.Vue介绍 - Vue是一套构建用户界面的渐进式前端框架.- 只关注视图层,并且非常容易学习,还可以很方便的与其它库或已有项目整合.- 通过尽可能简单的API来实现响应数据的绑定和组合的视图组件. ...