您的位置 首页 解答

STM32学习笔记之SysTick

defineSYSTICK_COUNTFLAG16初始化延迟函数voiddelay_init(void){uint32_tticks;ticks=SystemFrequency1000;if(tick

#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 << SYST%&&&&&%K_ENABLE);
SysTick->VAL =0X00;//清空计数器
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/jieda/258053.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部