STM32中3个延时函数「建议收藏」

STM32中3个延时函数「建议收藏」第一个延时函数:voiddelay(u16num){u16i,j;for(i=0;i<num;i++)for(j=0;j<0x800;j++);}eg:delay(50);第二个延时函数:staticu8fac_us=0;//us延时倍乘数staticu16fac_ms=0;//ms延时倍乘数//初始化延迟函数//SYSTICK的时钟固…

大家好,又见面了,我是你们的朋友全栈君。

第一个延时函数:

void delay(u16 num)
{
  u16 i,j;
  for(i=0;i<num;i++)
    for(j=0;j<0x800;j++);
}
eg:delay(50);

第二个延时函数:

void Delayms(u16 ms)
{
  u16 i,j;
  u8 k;
  for(i=0;i<ms;i++)
    for(j=0;j<0x0500;j++) k++;
}

第三个延时函数:

static u8  fac_us=0;//us延时倍乘数
static u16 fac_ms=0;//ms延时倍乘数
//初始化延迟函数
//SYSTICK的时钟固定为HCLK时钟的1/8
//SYSCLK:系统时钟
void delay_init(u8 SYSCLK)
{
	SysTick->CTRL&=0xfffffffb;//bit2清空,选择外部时钟  HCLK/8
	fac_us=SYSCLK/8;		    
	fac_ms=(u16)fac_us*1000;
}								    
//延时nms
//注意nms的范围
//SysTick->LOAD为24位寄存器,所以,最大延时为:
//nms<=0xffffff*8*1000/SYSCLK
//SYSCLK单位为Hz,nms单位为ms
//对72M条件下,nms<=1864 
void delay_ms(u16 nms)
{	 		  	  
	u32 temp;		   
	SysTick->LOAD=(u32)nms*fac_ms;//时间加载(SysTick->LOAD为24bit)
	SysTick->VAL =0x00;           //清空计数器
	SysTick->CTRL=0x01 ;          //开始倒数  
	do
	{
		temp=SysTick->CTRL;
	}
	while(temp&0x01&&!(temp&(1<<16)));//等待时间到达   
	SysTick->CTRL=0x00;       //关闭计数器
	SysTick->VAL =0X00;       //清空计数器	  	    
}   
//延时nus
//nus为要延时的us数.		    								   
void delay_us(u32 nus)
{		
	u32 temp;	    	 
	SysTick->LOAD=nus*fac_us; //时间加载	  		 
	SysTick->VAL=0x00;        //清空计数器
	SysTick->CTRL=0x01 ;      //开始倒数 	 
	do
	{
		temp=SysTick->CTRL;
	}
	while(temp&0x01&&!(temp&(1<<16)));//等待时间到达   
	SysTick->CTRL=0x00;       //关闭计数器
	SysTick->VAL =0X00;       //清空计数器	 
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151733.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月20日 下午11:46
下一篇 2022年6月21日 上午6:00


相关推荐

  • js免费调用天气API

    js免费调用天气APIjs调用天气API文档参考链接:天气API文档1、首先登陆天气API进行用户注册点击右上角进行注册、登录2、打开API文档如下图其中appid和appsecret则在天气API控制器中查看其中appid和version和appsecret3者为必填选项,例如https://www.tianqiapi.com/api?version=v9&appid=84122144&appsecret=m70vbv6Acityid、city、ip则代表三种查询方式(三选一)(城市i

    2022年10月8日
    9
  • 在Android Library的Module中按渠道依赖

    在Android Library的Module中按渠道依赖

    2021年6月15日
    124
  • java中的io流知识总结_java数据流

    java中的io流知识总结_java数据流无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。内容概要JavaIO流的设计不得不让人拍案叫绝,佩服设计者鬼斧天工的手法。如果你是Java初学者,我敢保证第一次接触Java的IO类,一定会”狂晕!”,倒不是因为它有多么难学而是太多,而且及其让人有种“不识庐山…

    2022年10月20日
    4
  • eBPF 介绍_bcp方案是什么意思

    eBPF 介绍_bcp方案是什么意思eBPF介绍Tcpdump是Linux平台常用的网络数据包抓取及分析工具,tcpdump主要通过libpcap实现,而libpcap就是基于eBPF。先介绍BPF(BerkeleyPacketFilter),BPF是基于寄存器虚拟机实现的,支持JIT(Just-In-Time),比基于栈实现的性能高很多。它能载入用户态代码并且在内核环境下运行,内核提供BPF相关的接口,用户可以将代码编译成字节码,通过BPF接口加载到BPF虚拟机中,当然用户代码跑在内核环境中是有风险的

    2026年2月9日
    5
  • CentOS7安装VMware Tools

    CentOS7安装VMware ToolsCentOS7安装VMwareTools的具体步骤如下:一、准备工作点击VMware菜单栏【虚拟机】,选择【安装VMwareTools】;如果安装了早期版本的VMwareTools,则菜单项为[更新VMwareTools]查看【虚拟机>设置>硬件>CD/DVD】是否已装载CD虚拟驱动器,如下图二、检查系统是否挂载成功在虚拟机中,以root身份登录客…

    2022年5月26日
    54
  • 什么是A记录  域名

    什么是A记录  域名

    2021年9月22日
    59

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号