1、出现的问题

初始化定时器,配置NVIC,然后运行,就卡死了。

原代码如下:

//初始化定时器2,10ms,NVIC设置中断优先级
static void timer2_init(void)
{TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;NVIC_InitTypeDef         NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);//定时器TIM2初始化 -> 10msTIM_TimeBaseStructure.TIM_Period = 99;                  //自动重装载寄存器周期的值  TIM_TimeBaseStructure.TIM_Prescaler = 7199;            //设置用来作为TIMx时钟频率除数的预分频值TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_timTIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//TIM向上计数模式TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);      //根据指定的参数初始化TIMx的时间基数单位 //中断优先级NVIC设置NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;   //TIM2中断NVIC_InitStructure.NVIC_IRQChannelPriority = 1;    //优先级NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;   //IRQ通道被使能NVIC_Init(&NVIC_InitStructure);                   //初始化NVIC寄存器TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);            //使能指定的TIM2中断,允许更新中断TIM_Cmd(TIM2,ENABLE);                               //使能定时器
}
void TIM2_IRQHandler(void)
{if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET){  //检查TIM2更新中断发生与否TIM_ClearITPendingBit(TIM2, TIM_IT_Update);      //清除TIMx更新中断标志 }
}

2、分析及解决

要看下是哪一段代码导致的,所以先是注释了整个定时器初始化部分,正常,所以问题定位要定时器初始化。

根据参数初始化定时器,感觉没什么问题,写错了也不至于卡死,NVIC配置的话由于涉及到中断,所以可能是中断这部分的问题,注释了NVIC_Init正常了,所以问题就在定时器中断这部分的配置。

灵光一现,想到了个错误(其实不是哈哈哈),main函数里没有设置NVIC分组,然后发现F030就没NVIC分组这回事。

然后,根据这个现象查找资料,大家不同问题导致各有各的解决方法,最终是在TIM_ITConfig前加了清除中断标志TIM_ClearITPendingBit(TIM2, TIM_IT_Update);   ,奇怪,以前我也没加没遇到这个问题,难道是F030特有的?如有知道,不吝赐教,谢谢。

现代码:

//初始化定时器2,10ms,NVIC设置中断优先级
static void timer2_init(void)
{TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;NVIC_InitTypeDef         NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);//定时器TIM2初始化 -> 10msTIM_TimeBaseStructure.TIM_Period = 99;                  //自动重装载寄存器周期的值  TIM_TimeBaseStructure.TIM_Prescaler = 7199;            //设置用来作为TIMx时钟频率除数的预分频值TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_timTIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//TIM向上计数模式TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);      //根据指定的参数初始化TIMx的时间基数单位 //中断优先级NVIC设置NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;   //TIM2中断NVIC_InitStructure.NVIC_IRQChannelPriority = 1;    //优先级NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;   //IRQ通道被使能NVIC_Init(&NVIC_InitStructure);                   //初始化NVIC寄存器TIM_ClearITPendingBit(TIM2, TIM_IT_Update);         //清除TIMx更新中断标志 TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);             //使能指定的TIM2中断,允许更新中断TIM_Cmd(TIM2,ENABLE);                               //使能定时器
}

F030使用定时器中断卡死的问题相关推荐

  1. STM32-通用定时器-定时器中断

    1 STM32的定时器 STM32F103ZET6一共有8个定时器,其中分别为:高级定时器(TIM1.TIM8):通用定时器(TIM2.TIM3.TIM4.TIM5):基本定时器(TIM6.TIM7) ...

  2. [笔记].如何使用Nios II的中断:PIO中断与定时器中断

    引子 定时器中断,我以前在艾米电子论坛发帖讨论过:PIO中断我在博客里也讨论过,最近发现以前的总结有一点小错误.于是结合我最近玩触摸屏的一点点心得,写篇博文. 软硬件环境 硬件:艾米电子EP2C8核心 ...

  3. stm32定时器中断_stm32F4之定时器的基本使用

    概述 上一篇说了stm32F4GPIO的使用,这篇说说定时器的使用 一. stm32F407的定时器资源介绍: ​ STM32F407有14个定时器,其中有12个16位的定时器,2个32位的定时器 这 ...

  4. STC10F10XE定时器中断输出10KHz的方波程序

    //咱做硬件的也动手做点测试程序,为了测试新做的电机驱动板,找了个51的板子当10K信号发生器测试IGBT开关延时时间. #include <STC_NEW_8051.H> #includ ...

  5. 【STM32】定时器中断实验代码详解

    文章目录 main.c timer.c timer.h STM32 的通用定时器是一个通过可编程预分频器(PSC)驱动的 16 位自动装载计数器(CNT)构成. STM32 的通用定时器可以被用于:测 ...

  6. 单片机定时报警C语言程序,51单片机 定时器 中断程序 (C语言)

    EA     是 中断总开关, 不管是定时器,串口还是外部中断,都需要打开 EA 才能触发中断; ET0   是 定时器0 的专用中断开关, 也就是说: 打开了EA.而不打开ET0,定时器0是无法触发 ...

  7. stm32定时器中断类型分析

    一直在用的stm32定时器的中断都是TIM_IT_Update更新中断,也没问为什么,直到碰到有人使用TIM_IT_CC1中断,才想到这定时器的中断类型究竟有什么区别,都怪当时学习stm32的时候不够 ...

  8. java 定时器 的中断程序,STM32定时器中断

    我试图在STM32L073中使用定时器外设但我有问题 . 我在STM32Cube中生成了设置代码,并且只使用了HAL API提供的函数 . 问题是定时器中断只发生一次,它应该始终发生溢出 . 我不知道 ...

  9. 单片机原理及其应用——单片机定时器中断实验(八段数码管依次显示0~9数字)

    目录 一.实验要求 二.知识要点 (一)单片机定时器/计数器 (二)相关的特殊功能寄存器 1.工作方式寄存器TMOD 2.定时器/计数器控制寄存器TCON (三)定时器/计数器的工作方式 1.工作方式 ...

最新文章

  1. 中国出版业,九死一生
  2. 沁恒RISC-V MCU 为全国大学生智能汽车竞赛加速
  3. JQuery EasyUI 动态隐藏
  4. 关于Java中serialUID的序列化的问题
  5. mac vscode设置中文_VSCode编写latex
  6. 技术转管理:应该如何识人、带人和用人?
  7. 剑指offer——25.合并两个排序的链表
  8. 计算机用户可用内存容量,基于 Windows 7 的计算机的可用内存可能低于安装内存...
  9. QNAP+Transmission
  10. SG3525芯片简介
  11. GM(General MIDI)128种标准音色表
  12. 【游戏建模模型制作全流程】ZBrush蜥蜴模型雕刻教程
  13. 联想用u盘重装系统步骤_联想t430怎么用u盘重装系统
  14. php 图片指定留白叠加缩放
  15. 红黑树的创建、插入节点
  16. STM32F0 使用ST-LINK实现对外部Flash芯片的烧录
  17. 全球名校AI课程库(22)| Harvard哈佛 · 计算机科学导论课程『Introduction to Computer Science』
  18. JAVA中的IO系统
  19. 昆明有那些计算机专科学校,昆明计算机网络技术专科学校排名
  20. 002 Canny Edge Detection

热门文章

  1. 【程序人生】让谷歌变得伟大的友谊:The Friendship That Made Google Huge
  2. 估值4000亿,超越京东,又一互联网巨头横空出世!
  3. 教你免费制作个人红包封面|这个年我们不抢红包了,抢红包皮
  4. Web前端开发之CSS学习笔记11—文本格式和动画设计
  5. Windows 安装器安装和卸载 MySQL 8.0
  6. tl-微服务专题07-RibbonFeign介绍及使用详解
  7. 基于单片机的智慧窗帘控制系统设计(#0414)
  8. 别让甲醛检测仪继续“野蛮生长”
  9. 3D人体姿态估计(介绍及论文归纳)
  10. Zelix KlassMaster(ZKM) java代码混淆软件使用指南