定時(shí)器中斷配置完,中斷里的打印沒有執(zhí)行,主程序嘗試打印也沒有打印出現(xiàn)
#include "debug.h"
void TIM1_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
void TIM1_Int_Init(u16 arr,u16 psc)
{
? ? GPIO_InitTypeDef GPIO_InitStructure = {0};
? ? RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC , ENABLE);
? ? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
? ? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
? ? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_30MHz;
? ? GPIO_Init(GPIOC, &GPIO_InitStructure);
? ? TIM_TimeBaseInitTypeDef? TIM_TimeBaseStructure;
? ? NVIC_InitTypeDef NVIC_InitStructure;
? ? RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //使能TIM1時(shí)鐘
? ? TIM_TimeBaseStructure.TIM_Period = arr;? ?//指定下次更新事件時(shí)要加載到活動(dòng)自動(dòng)重新加載寄存器中的周期值。
? ? TIM_TimeBaseStructure.TIM_Prescaler =psc; //指定用于劃分TIM時(shí)鐘的預(yù)分頻器值。
? ? TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;? ? ?//時(shí)鐘分頻因子
? ? TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM計(jì)數(shù)模式,向上計(jì)數(shù)模式
? ? TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //根據(jù)指定的參數(shù)初始化TIMx的時(shí)間基數(shù)單位
? ? TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE ); //使能TIM1中斷,允許更新中斷
//? ? TIM_ClearITPendingBit(TIM1, TIM_IT_Update);
//? ? TIM_ClearFlag(TIM1, TIM_FLAG_Update); //清除更新標(biāo)志位
? ??
? ? //初始化TIM NVIC,設(shè)置中斷優(yōu)先級(jí)分組
? ? NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn;? ? ? ? ? ?//TIM1中斷
? ? NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //設(shè)置搶占優(yōu)先級(jí)0
? ? NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;? ? ? ? //設(shè)置響應(yīng)優(yōu)先級(jí)0
? ? NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;? ? ? ? ? ?//使能通道1中斷
? ? NVIC_Init(&NVIC_InitStructure); //初始化NVIC
? ? TIM_Cmd(TIM1, ENABLE);? ? ?//TIM1使能
}
u8 i=0;
int main(void)
{
? ? NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
? ? SystemCoreClockUpdate();
? ? Delay_Init();
#if (SDI_PRINT == SDI_PR_OPEN)
? ? SDI_Printf_Enable();
#else
? ? USART_Printf_Init(115200);
#endif
? ? printf("--111--\r\n");
? ? TIM1_Int_Init(9,4799);? ? //1ms
? ? while(1)
? ? {
//? ? ? ? GPIO_WriteBit(GPIOC, GPIO_Pin_4, (i == 0) ? (i = Bit_SET) : (i = Bit_RESET));
//? ? ? ? printf("--00--\r\n");
//? ? ? ? Delay_Ms(1);
? ? }
}
void TIM1_IRQHandler(void)? ? //1ms
{
? ? if(TIM_GetITStatus(TIM1, TIM_IT_Update) != RESET) //檢查TIM2中斷是否發(fā)生。
? ? ? {
? ? ? ? TIM_ClearITPendingBit(TIM1,TIM_IT_Update);? ? //清除TIM2的中斷掛起位。
? ? ? ? printf("--00--\r\n");
? ? ? ? GPIO_WriteBit(GPIOC, GPIO_Pin_4, (i == 0) ? (i = Bit_SET) : (i = Bit_RESET));
? ? ? }
}