为什么我的atm32用定时器编写的流水灯不运行啊

2019-07-16 09:40发布

#include "STM32f10x.h"
void RCC_Configuration(void);
void init_led(void);
//void delay();
   void Delay_us(__IO u32 nTime);
  void SysTick_init();
   void TimingDelay_Decrement(void);
   static volatile uint32_t TimingDelay;

int main(void)
{

init_led();
SysTick_init();
  while(1)
  {
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
   GPIO_ResetBits (GPIOC,GPIO_Pin_4);
   GPIO_SetBits (GPIOC,GPIO_Pin_5);
   GPIO_SetBits (GPIOB,GPIO_Pin_0);
   GPIO_SetBits (GPIOB,GPIO_Pin_1);
        //delay(1030);
        Delay_us(100);
   GPIO_ResetBits (GPIOC,GPIO_Pin_5);
   GPIO_SetBits (GPIOC,GPIO_Pin_4);
   GPIO_SetBits (GPIOB,GPIO_Pin_0);
   GPIO_SetBits (GPIOB,GPIO_Pin_1);
//        delay(1030);
        Delay_us(100);
        GPIO_ResetBits (GPIOB,GPIO_Pin_0);
   GPIO_SetBits (GPIOC,GPIO_Pin_4);
   GPIO_SetBits (GPIOC,GPIO_Pin_5);
   GPIO_SetBits (GPIOB,GPIO_Pin_1);
        //delay(1030);
        Delay_us(100);
        GPIO_ResetBits (GPIOB,GPIO_Pin_1);
   GPIO_SetBits (GPIOC,GPIO_Pin_4);
   GPIO_SetBits (GPIOC,GPIO_Pin_5);
   GPIO_SetBits (GPIOB,GPIO_Pin_0);
//        delay(1030);
        Delay_us(100);
        SysTick->CTRL &= SysTick_CTRL_ENABLE_Msk;
  }
}
void init_led(void)
{
   GPIO_InitTypeDef GPIO_InitStructure;
   RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOB, ENABLE );

   GPIO_InitStructure.GPIO_Pin=        GPIO_Pin_4|GPIO_Pin_5;
   GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
   GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;
   GPIO_Init (GPIOC,&GPIO_InitStructure);

   GPIO_InitStructure.GPIO_Pin=        GPIO_Pin_0|GPIO_Pin_1;
   GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
   GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;
   GPIO_Init (GPIOB,&GPIO_InitStructure);
}

void delay(int n)
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<5000;j++);
}

void SysTick_init()
{
if(SysTick_Config(SystemCoreClock/100000))
  while(1);
  SysTick->CTRL &= SysTick_CTRL_ENABLE_Msk;
}

void SysTick_Handler(void)
{   
   TimingDelay_Decrement();
  }

void Delay_us(__IO u32 nTime)
{   
  TimingDelay=nTime;
  SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
    while(TimingDelay!=0);  
  }

   void TimingDelay_Decrement(void)
{
   if(TimingDelay!=0)
  { TimingDelay-- ;
}
}


        void RCC_Configuration(void) /*ʹÓÃÍⲿ8M*/
{   
  ErrorStatus HSEStartUpStatus;
  /* RCC system reset(for debug purpose) */
  RCC_DeInit();
  /* Enable HSE */
  RCC_HSEConfig(RCC_HSE_ON);
  /* Wait till HSE is ready */
  HSEStartUpStatus = RCC_WaitForHSEStartUp();
  if(HSEStartUpStatus == SUCCESS)
  {
    /* Enable Prefetch Buffer Ԥȡָ»º´æʹÄÜ*/
//    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
    /* Flash 2 wait state £¬ FLASH´æ´¢Æ÷ÑÓʱʱÖÓÖÜÆÚÊý*/
//   FLASH_SetLatency(FLASH_Latency_2);
    /* HCLK = SYSCLK */
    RCC_HCLKConfig(RCC_SYSCLK_Div1);  
    /* PCLK2 = HCLK */
   RCC_PCLK2Config(RCC_HCLK_Div1);
    /* PCLK1 = HCLK/2 */
    RCC_PCLK1Config(RCC_HCLK_Div2);
    /* PLLCLK = 8MHz * 9 = 72 MHz */
    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
    /* Enable PLL */
    RCC_PLLCmd(ENABLE);
    /* Wait till PLL is ready */
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
    {
    }
    /* Select PLL as system clock source */
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
    /* Wait till PLL is used as system clock source */
    while(RCC_GetSYSCLKSource() != 0x08)
    {
    }
  }
  /* Enable GPIOC clock */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。