
以下是我测试公共的代码,我没有配置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; } } |