yugong 发表于 2016-5-14 19:01:59

stm32有关systick中断配置

以下是我测试公共的代码,我没有配置NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);但是测试却成功了,请问是什么原因,谢谢
int        main (void)
{
        rcc_config ();                //        .\config.c
        nvic_config ();                //        .\config.c
        gpio_config ();                //        .\config.c
      usart_config ();        //        .\config.c
        systick_config ();        //        .\config.c
        while (1)
        {       
   GPIO_SetBits(GPIOB, GPIO_Pin_6);
                if(upload_cnt<=5)                                       
                {GPIO_SetBits(GPIOB, GPIO_Pin_5);
           USART_SendData (USART1, upload_cnt);      
               while ( USART_GetFlagStatus (USART1, USART_FLAG_TXE) == FALSE );}
                else if(upload_cnt<=10)
               {GPIO_ResetBits(GPIOB, GPIO_Pin_5);}
                else
               {upload_cnt=0;}
        }

}

void my_systick_IRQHandler (void)                                                                        //        ¶¨Ê±Æ÷ÖжϷþÎñ³ÌÐò
{
        upload_cnt++;                                                                                                        //        ¶¨Ê±Æ÷¼ÆÊý±äÁ¿¼ÓÒ»
        //adc_event = TRUE;
}
void systick_config (void)
{
        SysTick_CLKSourceConfig (SysTick_CLKSource_HCLK_Div8);        //        8·ÖƵ£º8M * 9 /8 = 9M
       //NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);
        SysTick_SetReload (9000);                                                                  //        1ms
        SysTick_ITConfig (ENABLE);                                                                //        ´ò¿ªSystickÖжÏ
        SysTick_CounterCmd(SysTick_Counter_Enable);                        //        ʹÄÜSystick
}

void SysTick_CLKSourceConfig(u32 SysTick_CLKSource)
{
/* Check the parameters */
assert_param(IS_SYSTICK_CLK_SOURCE(SysTick_CLKSource));

if (SysTick_CLKSource == SysTick_CLKSource_HCLK)
{
    SysTick->CTRL |= SysTick_CLKSource_HCLK;
}
else
{
    SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8;
}
}

void SysTick_SetReload(u32 Reload)
{
/* Check the parameters */
assert_param(IS_SYSTICK_RELOAD(Reload));

SysTick->LOAD = Reload;
}

void SysTick_ITConfig(FunctionalState NewState)
{
/* Check the parameters */
assert_param(IS_FUNCTIONAL_STATE(NewState));

if (NewState != DISABLE)
{
    SysTick->CTRL |= CTRL_TICKINT_Set;
}
else
{
    SysTick->CTRL &= CTRL_TICKINT_Reset;
}
}

void SysTick_CounterCmd(u32 SysTick_Counter)
{
/* Check the parameters */
assert_param(IS_SYSTICK_COUNTER(SysTick_Counter));

if (SysTick_Counter == SysTick_Counter_Enable)
{
    SysTick->CTRL |= SysTick_Counter_Enable;
}
else if (SysTick_Counter == SysTick_Counter_Disable)
{
    SysTick->CTRL &= SysTick_Counter_Disable;
}
else /* SysTick_Counter == SysTick_Counter_Clear */
{
    SysTick->VAL = SysTick_Counter_Clear;
}   
}


页: [1]
查看完整版本: stm32有关systick中断配置