stm32f407–通用定时器6,2秒翻转亮灯
#include "tim6.h"
void tim6_Init(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
NVIC_InitTypeDef NVIC_InitStruct;
/**
*S1:开启通用定时器6的时钟
*/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE);
/**
*S2:TIM6外设配置
*/
TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1; //?
TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInitStruct.TIM_Period = (10000- 1);//10ms
TIM_TimeBaseInitStruct.TIM_Prescaler = (83 - 1);//分频后为1MHz
//TIM_TimeBaseInitStruct.TIM_RepetitionCounter
TIM_TimeBaseInit(TIM6, &TIM_TimeBaseInitStruct);
/**
*S3:TIM6中断开启
*/
TIM_ITConfig(TIM6, TIM_IT_Update,ENABLE);
/**
*S4:中断向量控制器配置
*/
NVIC_InitStruct.NVIC_IRQChannel = TIM6_DAC_IRQn;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
NVIC_Init(&NVIC_InitStruct);
/**
*S5:中断向量控制器配置
*/
TIM_Cmd(TIM6, ENABLE);
}
static volatile uint8_t count;
void TIM6_DAC_IRQHandler(void)
{
if(TIM_GetITStatus(TIM6, TIM_IT_Update) != RESET )
{
TIM_ClearITPendingBit(TIM6, TIM_IT_Update);
count++;
if(count == 100)
{
count = 0;
GPIO_ToggleBits(GPIOF, GPIO_Pin_9);
}
}
}