打印
[应用相关]

STM32中3个延时函数

[复制链接]
251|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
而服务器人|  楼主 | 2022-7-27 23:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
第一个延时函数
void delay(u16 num)
{
  u16 i,j;
  for(i=0;i<num;i++)
    for(j=0;j<0x800;j++);
}
eg:delay(50);


使用特权

评论回复
沙发
而服务器人|  楼主 | 2022-7-27 23:58 | 只看该作者
第二个延时函数:
void Delayms(u16 ms)
{
  u16 i,j;
  u8 k;
  for(i=0;i<ms;i++)
    for(j=0;j<0x0500;j++) k++;
}

使用特权

评论回复
板凳
而服务器人|  楼主 | 2022-7-28 22:55 | 只看该作者
第三个延时函数:

使用特权

评论回复
地板
而服务器人|  楼主 | 2022-7-28 23:06 | 只看该作者
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;       //清空计数器         
}

使用特权

评论回复
5
稳稳の幸福| | 2022-7-29 11:18 | 只看该作者
谢谢分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

204

帖子

0

粉丝