打印
[其他ST产品]

STM32单片机的延时函数

[复制链接]
354|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
慢醇|  楼主 | 2023-7-8 12:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
函数的延时有普通的方式:

//微秒级的延时
void delay_us(uint32_t delay_us)
{   
  volatile unsigned int num;
  volatile unsigned int t;

  
  for (num = 0; num < delay_us; num++)
  {
    t = 11;
    while (t != 0)
    {
      t--;
    }
  }
}
//毫秒级的延时
void delay_ms(uint16_t delay_ms)
{   
  volatile unsigned int num;
  for (num = 0; num < delay_ms; num++)
  {
    delay_us(1000);
  }
}

直接延时delay_ms(500)

使用特权

评论回复
沙发
慢醇|  楼主 | 2023-7-8 12:37 | 只看该作者
定时器延时

#include "stm32f10x.h"   

volatile uint32_t ms_ticks = 0;

void SysTick_Init(void)
{
    if (SysTick_Config(SystemCoreClock / 1000))
    {
        // 错误处理
        while (1);
    }
}

void SysTick_Handler(void)
{
    ms_ticks++;
}

void delay_ms(uint32_t ms)
{
    uint32_t start_ticks = ms_ticks;

    while ((ms_ticks - start_ticks) < ms);
}

int main(void)
{
    SysTick_Init();
   
    while(1)
    {
        LED1_ON();
        delay_ms(500);
        LED1_OFF();
        delay_ms(500);
    }
}

使用特权

评论回复
板凳
慢醇|  楼主 | 2023-7-8 12:37 | 只看该作者
delay_ms(500);延时500ms;

使用特权

评论回复
地板
慢醇|  楼主 | 2023-7-8 12:37 | 只看该作者
注意
void SysTick_Handler(void)
{
ms_ticks++;
}
这个函数在在stm32f10x_it.c中也有定义,但是没有实现,找到这个在stm32f10x_it.c,大约在135行左右,把他注释掉就好了。

使用特权

评论回复
5
643757107| | 2023-7-9 17:41 | 只看该作者
定时可以使用HAL_Delay()

使用特权

评论回复
6
MessageRing| | 2023-7-9 22:46 | 只看该作者
HAL_Delay()没有微秒

使用特权

评论回复
7
Undshing| | 2023-7-10 23:27 | 只看该作者
MessageRing 发表于 2023-7-9 22:46
HAL_Delay()没有微秒

自己改一下库就有了

使用特权

评论回复
8
Clyde011| | 2024-1-16 09:24 | 只看该作者

使用特权

评论回复
9
万图| | 2024-1-16 11:20 | 只看该作者

理解了共模噪声我们就知道共模电感就知道为什么共模电感会接在交流一侧了

使用特权

评论回复
10
Uriah| | 2024-1-16 12:23 | 只看该作者

这样就可以制作出我们想要的邮票孔了。

使用特权

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

本版积分规则

125

主题

1241

帖子

5

粉丝