初级会员

- 积分
- 95
- 金钱
- 95
- 注册时间
- 2018-8-29
- 在线时间
- 31 小时
|
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 );
|