初学者看原子哥的视频,跟着例程写的定时器中断程序,然而每次都无法执行中断服务程序。我用的是F407的核心板。
#include<timer.h>
#include<led.h>
void TIMER3_Init(uint32_t arr,uint32_t psc)
{
TIM_TimeBaseInitTypeDef TIM_ST;
NVIC_InitTypeDef NVIC_ST;
RCC_APB1PeriphClockLPModeCmd(RCC_APB1Periph_TIM3,ENABLE);
TIM_ST.TIM_Period=arr;
TIM_ST.TIM_Prescaler=psc;
TIM_ST.TIM_CounterMode=TIM_CounterMode_Up;
TIM_ST.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInit(TIM3,&TIM_ST);
TIM_ClearFlag(TIM3, TIM_FLAG_Update);
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
NVIC_ST.NVIC_IRQChannel=TIM3_IRQn;
NVIC_ST.NVIC_IRQChannelPreemptionPriority=0X01;
NVIC_ST.NVIC_IRQChannelSubPriority=0X03;
NVIC_ST.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_ST);
TIM_Cmd(TIM3,ENABLE);
}
void TIM3_IRQHandler(void)
{
if(TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET)
{
TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
LED1=!LED1;
}
}
#include<stm32f4xx.h>
#include<usart.h>
#include<delay.h>
#include<timer.h>
#include<led.h>
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
delay_init(168);
LED_Init();
TIMER3_Init(4999,7199);
while(1)
{
LED2=~LED2;
delay_ms(200);
}
}
执行后只有LED2在200ms闪烁,LED1没反应,求助各位大佬!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
RCC_APB1PeriphClockCmd()应该用这各函数把
一周热门 更多>