OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2724|回复: 5

在定时器中断服务函数里加了个标志(flagTIMER),想看看中断了多少次,但是仿真一直是0(初始值),想问问大家这是问什么呢?

[复制链接]

4

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2018-8-29
在线时间
31 小时
发表于 2019-11-10 14:40:04 | 显示全部楼层 |阅读模式
2金钱
timer.c文件:
#include "timer.h"                                                                                                                                                     
#include "delay.h"                 
#include "adc.h"       

extern uint16_t flagTIMER;

void Timer_Init(void)
{
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  NVIC_InitTypeDef         NVIC_InitStructure;

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);         

  TIM_Cmd(TIM2, DISABLE);
  TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);

  //通用定时器时钟84MHz,分频系数84,计数频率1MHz,周期0.000001s,计数500次为0.5ms
  TIM_TimeBaseStructure.TIM_Prescaler = 84-1;
  TIM_TimeBaseStructure.TIM_Period = 500-1;
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up ;
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

  TIM_ARRPreloadConfig(TIM2, ENABLE);
  TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);  

  TIM_Cmd(TIM2, ENABLE);

  NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;  
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;  
  NVIC_InitStructure.NVIC_IRQChannelSubPriority =1;        
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;            
  NVIC_Init(&NVIC_InitStructure);   
}

void TIM2_IRQHandler(void)  
{
  if(TIM_GetITStatus(TIM2, TIM_IT_Update))  
  {  
    TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
    flagTIMER ++;
  }   
}

main.c文件:
#include "stm32f4xx.h"
#include "delay.h"       
#include "adc.h"
#include "dma.h"
#include "timer.h"

u16 flagTIMER = 0;
u16 flagDMA = 0;

int main(void)
{
  ADC_Config();
  DMA_Config();
  Timer_Init();
  while(1);
}

最佳答案

查看完整内容[请看2#楼]

TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update); --> TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE );
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-11-10 14:40:05 | 显示全部楼层
TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);  -->   TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE );
回复

使用道具 举报

4

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2018-8-29
在线时间
31 小时
 楼主| 发表于 2019-11-10 14:42:55 | 显示全部楼层
本帖最后由 kmustH 于 2019-11-10 14:43 编辑

这是仿真的watch1界面,flagTIMER一直是0
仿真.png
回复

使用道具 举报

4

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2018-8-29
在线时间
31 小时
 楼主| 发表于 2019-11-10 21:17:46 | 显示全部楼层
谢谢您,问您一个问题,是不是只有TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update); 这句话,定时器只能做触发其它外设使用,而不是更新中断,是吗?@nashui_sx
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-12-9 10:38:13 | 显示全部楼层
kmustH 发表于 2019-11-10 21:17
谢谢您,问您一个问题,是不是只有TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update); 这句话,定时器 ...

对,,,,,,,,,,,,,,,
回复

使用道具 举报

9

主题

57

帖子

0

精华

高级会员

Rank: 4

积分
963
金钱
963
注册时间
2020-1-6
在线时间
124 小时
发表于 2020-2-26 13:19:04 | 显示全部楼层
这个程序能看到标志位增吗???表示怀疑啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-7 20:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表