我这是跑马灯的程序,为什么我的灯常量,不交互闪烁呢,求兄弟们看看
#include "stm32f10x.h"
void Delay(u32 ns) //延迟n秒
{
u32 temp,us,s,count;
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
us=SystemCoreClock/8000000;//延迟1um的计数
s=1000000*us;//延迟1秒的计数
count=ns*s; //延迟n秒的计数,因为延迟nms的最大数为1864,所以我这里设置的是延迟1秒
SysTick->LOAD=count;
SysTick->VAL&0X00;
SysTick->CTRL|0X01;
do{
temp=SysTick->CTRL;
}while(temp&0x01&&!(temp&(1<<16)));
SysTick->CTRL&0X00;
SysTick->VAL&0X00;
}
int main()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_8);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;
GPIO_Init(GPIOD,&GPIO_InitStructure);
GPIO_SetBits(GPIOD,GPIO_Pin_2);
while(1)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_8);
GPIO_SetBits(GPIOD,GPIO_Pin_2);
Delay(1);
GPIO_SetBits(GPIOA,GPIO_Pin_8);
GPIO_ResetBits(GPIOD,GPIO_Pin_2);
Delay(1);
}
}
|