微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > ARM技术讨论 > 为什么我的atm32用定时器编写的流水灯不运行啊

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

时间:10-02 整理:3721RD 点击:
#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) /*ê1ó?ía2?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 ?¤è????o′?ê1?ü*/
//    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
    /* Flash 2 wait state £? FLASH′?′¢?÷?óê±ê±?ó?ü?úêy*/
//   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);
}

感谢分享,小编长命百岁

这个程序有问题啊

呵呵,表示路过。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top