赞
踩
步骤:
设置SysTick定时器时钟源;
设置SysTcik定时器的重装初始值
清零SysTick定时器当前计数器的值
打开SysTick定时器
#include "SysTick.h"
static u8 fac_us=0;
static u16 fac_ms=0;
void SystemTick_Init(u8 SYSCLK)
{
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
fac_us=SYSCLK/8;
fac_ms=(u16)fac_us*1000;
}
void delay_us(u32 nus)
{
u32 temp=0;
SysTick->LOAD=nus;
SysTick->VAL=0x00;
SysTick->CTRL |= 1;
do
{
temp=SysTick->CALIB;
}while ((temp&0x01)&&(!temp&(1<<16)));
SysTick->CTRL &= ~0x01;//1111 1110
SysTick->VAL=0x00;
}
void delay_ms(u16 nms)
{
u32 temp=0;
SysTick->LOAD=nms;
SysTick->VAL=0x00;
SysTick->CTRL |= 1;
do
{
temp=SysTick->CALIB;
}while ((temp&0x01)&&(!temp&(1<<16)));
SysTick->CTRL &= ~0x01;//1111 1110
SysTick->VAL=0x00;
}
main函数:
#include "led.h"
#include "system.h"
#include "SysTick.h"
void delay(u32 ms)//yan shi
{
while(ms--);
}
int main()
{
LED_Init() ;
SystemTick_Init(72);
while(1)
{
LED1=0;
delay_us(500);
LED1=0;
delay_ms(500);//0.5s
//GPIO_ResetBits(LED1_PORT, LED1_PIN);//dian liang
delay(60000);
//GPIO_SetBits(LED1_PORT,LED1_PIN);//dian liang
//delay(60000);
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。