前言

最近在调试项目过程中,用了 STM32F030 的定时器 16 作为系统时钟,1ms 触发一次中断,过程中遇到一些值得记录的问题。

记录

STM32F030 中定时器 16 的初始化配置如下

void TIM16_Init(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM16, ENABLE); TIM_TimeBaseStructure.TIM_Prescaler = 48 - 1; //预分频系数为48-1,这样计数器计数频率为48MHz/48 = 1MHz
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //设置计数器模式为向上计数模式
TIM_TimeBaseStructure.TIM_Period = 1000; //设置计数溢出大小,每计1000个数就产生一个更新事件,1ms一次中断
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0; //重复n次计数才触发中断
TIM_TimeBaseInit(TIM16, &TIM_TimeBaseStructure); //将配置应用到TIM16中
TIM_ITConfig(TIM16, TIM_IT_Update, ENABLE); //使能TIM16的更新中断
TIM_Cmd(TIM16, ENABLE); //开启定时器16 //Enable the TIM16 Interrupt
NVIC_InitStructure.NVIC_IRQChannel = TIM16_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPriority = 3;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}

对应的中断配置

void TIM16_IRQHandler(void)
{
if(TIM_GetITStatus(TIM16, TIM_IT_Update) != RESET)
{
systime_ms++;
}
TIM_ClearITPendingBit(TIM16, 0x00ff);
}

配置使用了 Update 中断,也就是更新事件中断。值得注意的是初始化中的 TIM_RepetitionCounter,这个代表重复溢出多少次才触发一个中断,在一开始的配置中我忽略了这个参数,但仍然是 1ms 触发一次中断。但在后面开启了 I2C 功能和初始化 I2C 后,这个定时器就变成了 2 次溢出才触发一次中断,只有配置

TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;

之后才正常中断

STM32F030 定时器多次溢出才触发中断的问题的更多相关文章

  1. stm32F042 (二) 按键触发中断

    已经实现GPIO口输出高低电平控制LED,这里实现按键触发中断来改变LED闪亮的频率,因为PB3连着LED,所以PB3的输出模式没有改变,随意选一个GPIO口PA7接按键产生中断.因为nucleo开发 ...

  2. jenkins实现master变化时,才触发构建(过滤分支)

    现状:现在是这样的,每个开发push时,都触发jenkins进行构建 期望:只有当代码被push到master时才进行构建 (根据使用的git平台)做这些配置需要先了解一些概念: (github) p ...

  3. ZYNQ笔记(4):PL触发中断

    一.ZYNQ中断框图 PL到PS部分的中断经过ICD控制器分发器后同时进入CPU1 和CPU0.从下面的表格中可以看到中断向量的具体值.PL到PS部分一共有20个中断可以使用.其中4个是快速中断.剩余 ...

  4. 继承CListCtrl,然后重载OnLButtonUP消息,发现变成双击才触发???

    原文链接: http://bbs.csdn.net/topics/380052636 1楼 因为WM_LBUTTONDOWN事件和NM_CLICK事件是同时发生的,只是后者要等到用户释放鼠标后才算完成 ...

  5. @DisallowConcurrentExecution 注解的作用 【定时器执行完当前任务才开启下一个线程的方式】

    转: @DisallowConcurrentExecution 注解的作用 2018年10月12日 16:42:40 fly_captain 阅读数:4317   Quartz定时任务默认都是并发执行 ...

  6. js 如何控制文本域输入内容在一定间隔时间段才触发事件查询相关数据

    <script>var flag = 0;var t;function openFlag () { t = setTimeout(function(){flag = 1; dosometh ...

  7. MSP430单片机的中断

    这篇文章是从网上转载过来的,原文章地址:http://www.21ic.com/jichuzhishi/mcu/questions/2012-12-21/154794.html 中断是MSP430微处 ...

  8. 定时器事件QtimerEvent 随机数 qrand Qtimer定时器

    QTimerEvent类:定时器事件.QObject的子类都可使用  int QObject::startTimer(int interval)[参数:毫秒][返回值:定时器整型编号]来开启一个定时器 ...

  9. DMA设计

    目录 DMA设计 DMA框架 手册请看英文手册 芯片特性 请求来源 协议简述 基本时序 模式 协议 数据大小的描述 具体完整的实例时序 代码设计 驱动程序 测试程序 测试 参考链接 title: DM ...

随机推荐

  1. 微信开发准备(二)--springmvc+mybatis项目结构的搭建

    转自:http://www.cuiyongzhi.com/post/34.html 前面一篇有说道如何在MyEclipse中搭建maven项目,这里将继续介绍如何在搭建好的基础maven项目中引入我们 ...

  2. 监控和安全运维 1.5 nagios监控客户端-1

    3. Nagios安装 - 客户端(192.168.0.12)在客户端机器上 rpm -ivh http://www.aminglinux.com/bbs/data/attachment/forum/ ...

  3. 部署和调优 1.3 pureftp部署和优化-1

    FTP 是 File Transfe Protocol(文件传输协议)的英文简称,而中文简称为 “文传协议” 用于 Internet 上的控制件的双向传输. 可以访问    www.pureftpd. ...

  4. MyBatis使用动态代理报 invalid bound statement (not found) 错

    这个问题网上大部分都说xml文件中的路径不对 或者是resources之类的问题,如果那些文章的解决方案解决不了你的问题的话,可以看一下我遇到的这种情况: 前提: mybatis-config.xml ...

  5. session详解&和cookie的区别

    session简介 1. 定义 session用来保存会话数据, 将数据保存到服务器中. 2. 作用 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),一个浏览器独占一 ...

  6. 百度Apollo解析——3.common

    1.略读 该目录下主要提供了各个模块公用的函数和class以及一些数学API还有公共的宏定义. 在Apollo 1.0中,common是整个框架的基础.configs是配置文件加载.adapters是 ...

  7. JS 中的数组遍历方式效率比较

    JS数组遍历,基本就是for,forin,foreach,forof,map等等一些方法,以下介绍几种本文分析用到的数组遍历方式以及进行性能分析对比 第一种:普通for循环 代码如下: ; j < ...

  8. C++的引用的使用

    1引用的定义 引用时C++对C的一个重要的扩充,引用的作用是给变量起一个别名. 例如: int a; int &b=a;//声明b是a的引用 经过以上的声明,b就成为了a的别名,a和b的地位以 ...

  9. Java3D-对象基本变换

    一个球体与三个圆柱体形成一个组合体,在该组合体中,球体的透明度属性是由全透明到不透明之间变换,而且包括:旋转.平移等变换. package com.vfsd.test0621; import java ...

  10. 算法Sedgewick第四版-第1章基础-006一封装输出(文件)

    1. package algorithms.util; /*********************************************************************** ...