stm32 systick总是没现象,菜鸟求助
[复制链接]
贴出代码,大侠们帮忙看看,先谢谢了! main.c #include "main.h" GPIO_InitTypeDef GPIO_InitStructure; ErrorStatus HSEStartUpStatus;
#define PC0_H GPIO_SetBits(GPIOC, GPIO_Pin_0) // PC3 高电平 #define PC0_L GPIO_ResetBits(GPIOC, GPIO_Pin_0) // PC3 低电平 #define PC3_H GPIO_SetBits(GPIOC, GPIO_Pin_3) // PC3 高电平 #define PC3_L GPIO_ResetBits(GPIOC, GPIO_Pin_3) // PC3 低电平 static __IO uint32_t TimingDelay; /* Private function prototypes -----------------------------------------------*/ void Delay(__IO uint32_t nTime); void RCC_Configuration(void); void GPIO_Configuration(void); void NVIC_Configuration(void); int main(void) { RCC_Configuration(); GPIO_Configuration(); NVIC_Configuration();
if (SysTick_Config(SystemCoreClock / 1000)) { /* Capture error */ while (1); } while (1) { PC3_L ; /* Insert 50 ms delay */ Delay(50); PC3_H; /* Insert 50 ms delay */ Delay(50); } } void RCC_Configuration(void) { /* 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_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) { } } } /* ******************************************************************************** ** 函数名称 : GPIO_Configuration(void) ** 函数功能 : 端口初始化 ** 输 入 : 无 ** 输 出 : 无 ** 返 回 : 无 ******************************************************************************** */ void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); /*使能GPIOA、GPIOC的时钟 LED1->PC0,LED2->PC3,*/ /*配置PC0*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 最高输出速率50MHz GPIO_Init(GPIOC, &GPIO_InitStructure); /*配置PC3*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 最高输出速率50MHz GPIO_Init(GPIOC, &GPIO_InitStructure); // 选择C端口 } void NVIC_Configuration(void) { #ifdef VECT_TAB_RAM /* Set the Vector Table base location at 0x20000000 */ NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); #else /* VECT_TAB_FLASH */ /* Set the Vector Table base location at 0x08000000 */ NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); #endif }
void Delay(__IO uint32_t nTime) { TimingDelay = nTime; while(TimingDelay != 0); }
void TimingDelay_Decrement(void) { if (TimingDelay != 0x00) { TimingDelay--; } }
main.h #ifndef __MAIN_H #define __MAIN_H /* Includes ------------------------------------------------------------------*/ #include "stm32f10x.h" /* Exported types ------------------------------------------------------------*/ /* Exported constants --------------------------------------------------------*/ /* Exported macro ------------------------------------------------------------*/ /* Exported functions ------------------------------------------------------- */ void TimingDelay_Decrement(void);
#endif /* __MAIN_H */ 中断处理函数 void SysTick_Handler(void) { TimingDelay_Decrement(); } 实验目的:LED(PC3接的一个LED,用的是103RBT6的芯片),程序是按着固件库3.5中的例子来做的,可是总是没现象,好像延时函数没什么用。我不怎么会调试程序,还请大侠们帮我看看,附件上我把工程传上,再次表示感谢!
[ 本帖最后由 zxz19890318 于 2012-5-1 03:03 编辑 ]
|