当前位置:   article > 正文

Systick定时器_systick->load = 1*nus; systick->val=0x00; systick-

systick->load = 1*nus; systick->val=0x00; systick->ctrl=0x01;

步骤:

  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);

}

}

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/755713
推荐阅读
相关标签
  

闽ICP备14008679号