STM32延迟(休眠)函数delay/sleep

这篇具有很好参考价值的文章主要介绍了STM32延迟(休眠)函数delay/sleep。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 参考

MSP432(Keil5)——3.delay延时驱动_keil5delay函数_大写的小写字母的博客-CSDN博客

亲手测试过, 好用。用while太愚蠢,而且不好控制。

  • 下载链接

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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Shell 命令集合 系统管理 】⭐⭐Linux 让进程休眠 sleep命令 使用指南

    Shell 命令专栏:Linux Shell 命令全解析 在Linux中,sleep命令用于在一段指定的时间内暂停当前进程的执行。它的作用是让进程休眠,暂停执行一段时间,然后继续执行后续的指令。 使用sleep命令可以在脚本中设置延迟,以便在执行后续操作之前等待一段时间。这对于需要在特定

    2024年02月07日
    浏览(71)
  • STM32MP157驱动开发——按键驱动(休眠与唤醒)

    当应用程序必须等待某个事件发生,比如必须等待按键被按下时,可以使用“休眠-唤醒”机制: ① APP 调用 read 等函数试图读取数据,比如读取按键; ② APP 进入内核态,也就是调用驱动中的对应函数,发现有数据则复制到用户空间并马上返回; ③ 如果 APP 在内核态,也就

    2024年02月16日
    浏览(42)
  • 关于STM32使用HAL_Delay(),程序卡死,的解决办法。

    在使用STM32的Hal库开发时,存在在中断中使用Hal_Delay()时程序会卡死的问题,这是由于Hal_Delay()是使用定时器实现的,并且它的定时器中断优先级为15是最低的。需要给它重新设置中断优先级,实际操作方式如下: 这会把Hal_Delay()的优先级提到最高,同时要查看另一个中断优先

    2024年02月16日
    浏览(47)
  • STM32独立看门狗IWDG和休眠(低功耗)共存那些事儿

    1.寄存器写入标志位方法为主要手段 2.看门狗初始化放在标志位判断后方 3.合理利用单片机复位,标志位复位后不会丢失的特点 4.不同系列单片机寄存器不一样 调试进入断点时不管停留多久,都不会触发看门狗 论坛TM32在休眠模式下怎么使用看门狗? 现在你只有2个办法: 1)使

    2024年02月12日
    浏览(49)
  • golang实现延迟队列(delay queue)

    延迟队列:处理需要在未来某个特定时间执行的任务。这些任务被添加到队列中,并且指定了一个执行时间,只有达到指定的时间点时才能从队列中取出并执行。 应用场景: 邮件提醒 订单自动取消(超过多少时间未支付,就取消订单) 对超时任务的处理等 由于任务的执行

    2024年02月22日
    浏览(39)
  • STM32G0x0系列-软件定时器解决HAL_Delay问题

    目录 HAL_Delay函数源码 软件定时器 创建工程试验 1.将对应文件移动到项目位置 2.添加现有文件放到工程中   3.重定向printf 3.验证自己的软件定时器 4.查看现象          HAL_Delay函数使用了中断机制来实现延时功能,当在中断函数中调用HAL_Delay函数需要考虑中断优先级问题。

    2024年02月07日
    浏览(53)
  • ros::Rate loop_rate(10); loop_rate.sleep(); 在程序中是休眠到一定时间,并不占用CPU时间

    如题 ros::Rate loop_rate(10); loop_rate.sleep(); 在ROS C++ 编写订阅者等功能包时,会用到以上两个函数 经过本人测试和查询,sleep()函数并不占用CPU时间,故如果想用定时器来记录程序执行时间,并不会把休眠的时间加进去(休眠其实就是不占用CPU时间的意思). 实际上,执行sleep()函

    2024年02月02日
    浏览(34)
  • 【STM32笔记】低功耗模式、WFI命令等进入不了休眠的可能原因(系统定时器SysTick一直产生中断)

    【STM32】低功耗模式、WFI命令等进入不了休眠的可能原因(系统定时器SysTick一直产生中断) 【STM32笔记】低功耗模式配置及避坑汇总 前文: blog.csdn.net/weixin_53403301/article/details/128216064 【STM32笔记】HAL库低功耗模式配置(ADC唤醒无法使用、低功耗模式无法烧录解决方案) __WFI

    2024年02月10日
    浏览(51)
  • Docker中为RabbitMQ安装rabbitmq_delayed_message_exchange延迟队列插件

    1、前言 rabbitmq_delayed_message_exchange是一款向RabbitMQ添加延迟消息传递(或计划消息传递)的插件。 插件下载地址:https://www.rabbitmq.com/community-plugins.html 1、下载插件 首先需要确定我们当前使用的RabbitMQ的版本,我们可以直接登录Web端的管理界面查看版本   也可以在RabbitMQ容器中

    2024年02月12日
    浏览(49)
  • STM32之HAL库微妙延迟(借助Systick)

    2024年02月11日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包