为什么我的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);
}
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);
}
感谢分享,小编长命百岁
这个程序有问题啊
呵呵,表示路过。