州滁387 发表于 2022-1-14 08:42

用寄存器导致不能进入定时器中断

void TIM3_UPCount_Init(void)
{
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
   // NVIC_InitTypeDef NVIC_StructInit;
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

    TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
    TIM_TimeBaseStructure.TIM_Period = 50;
    TIM_TimeBaseStructure.TIM_Prescaler = 36000-1;
    //Sampling frequency of digital filter does not affect timer clock
    //Sampling Frequency Dividing Value
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;

    TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

   // interrupt priority configuration
   //NVIC_StructInit.NVIC_IRQChannel = TIM3_IRQn;
   //NVIC_StructInit.NVIC_IRQChannelPriority = 1;
   //NVIC_StructInit.NVIC_IRQChannelCmd = ENABLE;
   //NVIC_Init(&NVIC_StructInit);
       
    TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
    TIM_ClearFlag(TIM3, TIM_FLAG_Update);
    TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
    TIM_ARRPreloadConfig(TIM3, ENABLE);
    TIM_Cmd(TIM3, ENABLE);
}
void NVIC_Configure(u8 ch, u8 pri, u8 sub)
{
    exNVIC_Init_TypeDefNVIC_InitStruct;
    NVIC_InitStruct.NVIC_IRQChannel = ch;
    NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = pri;
    NVIC_InitStruct.NVIC_IRQChannelSubPriority = sub;
    NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;

    exNVIC_Init(&NVIC_InitStruct);
}
s32 main(void)
{
          SystemInit();//36M
    LED_Init();
    DELAY_Init();
          NVIC_Configure(TIM3_IRQn, 0, 1);
          TIM3_UPCount_Init();
    while(1)
                {
                       if(1 == j)
                       {                               
                          // GPIOB->BRR = 0x1000U;
                                GPIO_ResetBits(GPIOB,GPIO_Pin_12);
                       }
                       else
                       {
                       // GPIOB->BSRR = 0x1000U;
                                GPIO_SetBits(GPIOB,GPIO_Pin_12);
                       }       
    }
}
void TIM3_IRQHandler(void)
{
        if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
        {
    TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
                i++;
                if(i>9)
                {
                  i =0;
                        j = !j;
                }
        }
}

州滁387 发表于 2022-1-14 08:45

GPIOB->BRR      GPIOB->BSRR   2个寄存器直接赋值导致不能进去TIM3中断,请问怎么回事呢。芯片是MM32F0133C7P

huquanz711 发表于 2022-1-15 08:59

那应该是寄存器配置有问题吧

豌豆爹 发表于 2022-1-17 10:06

最好先检查一下你的寄存器

yangxiaor520 发表于 2022-1-17 20:56

寄存器配置对没有

gouguoccc 发表于 2022-1-18 08:26

那是没配对的原因

labasi 发表于 2022-2-4 09:32

可以直接对这两个寄存器赋值吗

tpgf 发表于 2022-2-4 09:35

仿真时候看一下寄存器状态

paotangsan 发表于 2022-2-4 09:41

寄存器配置有问题

renzheshengui 发表于 2022-2-4 09:55

这两个标志位是什么 意思来着?

wakayi 发表于 2022-2-4 10:02

都需要配置哪些寄存器呢

wowu 发表于 2022-2-4 10:09

这是将引脚配置成什么状态了啊

match007 发表于 2022-2-11 16:26

这不还是库么
页: [1]
查看完整版本: 用寄存器导致不能进入定时器中断