微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM32学习笔记之SysTick

STM32学习笔记之SysTick

时间:11-26 来源:互联网 点击:


#define SYSTICK_COUNTFLAG 16

//初始化延迟函数
void delay_init(void)
{
uint32_t ticks;

ticks = SystemFrequency/1000;
if (ticks > SYSTICK_MAXCOUNT)while (1);


SysTick->LOAD=(ticks & SYSTICK_MAXCOUNT) - 1;
NVIC_SetPriority (SysTick_IRQn, (1<__NVIC_PRIO_BITS) - 1);
SysTick->VAL=(0x00);
SysTick->CTRL = (1 < SYSTICK_CLKSOURCE);//选择内核时钟
}

//ms延时
void delay_nms(__IO uint32_t nms)
{
u32 temp;

if(nms == 0)return;
SysTick->VAL = 0x00;//清空计数器

SysTick->CTRL |= (1 < SYSTICK_ENABLE);

while(nms--)
{
do
{
temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<16)));//等待时间到达
}


SysTick->CTRL &= ~(1 < SYSTICK_ENABLE);
SysTick->VAL =0X00;//清空计数器
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top