标题:
STM32定时器中断控制一个LED1s闪,另一个2s闪
[打印本页]
作者:
伊森亨特
时间:
2018-7-3 17:21
标题:
STM32定时器中断控制一个LED1s闪,另一个2s闪
暂时没有想到好的办法,大家想到更好的方法可以跟帖留言
tim2的配置
void TIM2_Config(u16 arr,u16 pre)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
TIM_TimeBaseInitStructure.TIM_ClockDivision=0;
TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInitStructure.TIM_Period=(arr-1);
TIM_TimeBaseInitStructure.TIM_Prescaler=(pre-1);
TIM_TimeBaseInitStructure.TIM_RepetitionCounter=0;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);
NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
NVIC_Init(&NVIC_InitStructure);
TIM_Cmd(TIM2, ENABLE);
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
}
复制代码
tim2的中断服务函数
void TIM2_IRQHandler(void)
{
static u8 led=0,led2=0;
static u8 flag=0;
if(TIM_GetITStatus(TIM2, TIM_IT_Update)==1)
{
flag++;
led=~led;
if(led==0)
{
LED1_ON();
}
else
{
LED1_OFF();
}
if(flag==2)
{
led2=~led2;
flag=0;
}
if(led2==0)
{
LED3_ON();
}
else
{
LED3_OFF();
}
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
}
}
复制代码
作者:
675315461
时间:
2018-7-3 19:31
谢谢很好
作者:
zsyzdx
时间:
2018-7-4 11:30
可以两路输出!!!!!!!!!!!!!!!
作者:
长风007
时间:
2020-12-21 08:37
这个思路以是可以实现了。增加变量的方式也可以实现。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1