程序要求:通过定时器中断配置,每500ms中断一次,然后中断服务函数中控制LED实现LED1状态取反
下面给出几个主要文件的程序模板
timer.h:
#ifndef __TIMER_H
#define __TIMER_H
#include "sys.h"
void TIM3_init(u16 arr, u16 psc);
#endif
timer.c
#include "timer.h"
#include "led.h"
//tim的相关函数去stm32f4xx_tim.h中去找
void TIM3_init(u16 arr, u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //使能定时器时钟
TIM_TimeBaseInitStructure.TIM_Prescaler = psc; //预分频系数=psc
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; //计数模式
TIM_TimeBaseInitStructure.TIM_Period = arr; //自动装载值=arr
TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; //(这里没有太大作用)
TIM_TimeBaseInit(TIM3, &T