- 参考
MSP432(Keil5)——3.delay延时驱动_keil5delay函数_大写的小写字母的博客-CSDN博客
亲手测试过, 好用。用while太愚蠢,而且不好控制。文章来源:https://www.toymoban.com/news/detail-527601.html
- 下载链接
https://download.csdn.net/download/quantum7/87982408文章来源地址https://www.toymoban.com/news/detail-527601.html
- delay.h
#ifndef __DELAY_H__
#define __DELAY_H__
#include "system.h"
#define sleep_us delay_us
#define sleep_ms delay_ms
void Delay_Init(void);
void delay_us(uint32_t nus);
void delay_ms(uint16_t nms);
#endif
- delay.c
#include "delay.h"
static uint8_t g_fac_us=0;
void Delay_Init(void)
{
g_fac_us = SystemCoreClock / 1000000;
}
//延时us
void delay_us(uint32_t nus)
{
uint32_t temp;
SysTick->LOAD=(uint32_t)(nus*g_fac_us);
SysTick->VAL=0x00;
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_CLKSOURCE_Msk;
do
{
temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<<16)));
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;
SysTick->VAL =0X00;
}
//延时ms
void delay_ms(uint16_t nms)
{
uint16_t i = 0;
for(i=0;i<nms;i++)
{
delay_us(1000);
}
}
到了这里,关于STM32延迟(休眠)函数delay/sleep的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!