Systick定时器

步骤:

  1. 设置SysTick定时器时钟源;

  1. 设置SysTcik定时器的重装初始值

  1. 清零SysTick定时器当前计数器的值

  1. 打开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);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值