硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1043|回复: 5
收起左侧

[有问必答] 函数bsp_DelayMS 为什么要关闭中断呢?

[复制链接]

4

主题

11

回帖

23

积分

新手上路

积分
23
发表于 2024-12-15 21:16:27 | 显示全部楼层 |阅读模式

有点不太理解,延时函数,为什么要关闭中断?

[C] 纯文本查看 复制代码
/*
*********************************************************************************************************
*	函 数 名: bsp_DelayMS
*	功能说明: ms级延迟,延迟精度为正负1ms
*	形    参:  n : 延迟长度,单位1 ms。 n 应大于2
*	返 回 值: 无
*********************************************************************************************************
*/
void bsp_DelayMS(uint32_t n)
{
	if (n == 0)
	{
		return;
	}
	else if (n == 1)
	{
		n = 2;
	}

[b][color=#ff0000]	DISABLE_INT();  			/* 关中断 */

	s_uiDelayCount = n;
	s_ucTimeOutFlag = 0;

	ENABLE_INT();  				/* 开中断 */[/color][/b]

	while (1)
	{
		bsp_Idle();				/* CPU空闲执行的操作, 见 bsp.c 和 bsp.h 文件 */

		/*
			等待延迟时间到
			注意:编译器认为 s_ucTimeOutFlag = 0,所以可能优化错误,因此 s_ucTimeOutFlag 变量必须申明为 volatile
		*/
		if (s_ucTimeOutFlag == 1)
		{
			break;
		}
	}
}




回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117529
QQ
发表于 2024-12-16 08:16:35 | 显示全部楼层
DISABLE_INT();              /* 关中断 */
s_uiDelayCount = n;
s_ucTimeOutFlag = 0;
ENABLE_INT();               /* 开中断 */

中断里面也有操作到,属于是临界段处理
回复

使用道具 举报

4

主题

11

回帖

23

积分

新手上路

积分
23
 楼主| 发表于 2024-12-17 21:10:48 | 显示全部楼层
eric2013 发表于 2024-12-16 08:16
DISABLE_INT();              /* 关中断 */
s_uiDelayCount = n;
s_ucTimeOutFlag = 0;

延时这样的操作方法,不知道对DMA中断 或者 串口中断正在传输的数据 是否有影响?
回复

使用道具 举报

4

主题

11

回帖

23

积分

新手上路

积分
23
 楼主| 发表于 2024-12-17 21:27:57 | 显示全部楼层
这个延时相比
void delay(void)
{
uint32_t i=99999;
while(i--);
}
这个延时,有哪些优势呢?
1.延时更精准
2.好像也是等待延时
3.好像按键用不了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117529
QQ
发表于 2024-12-18 08:46:22 | 显示全部楼层
tao2008 发表于 2024-12-17 21:27
这个延时相比
void delay(void)
{

软件延迟精度受到IDE的优化影响,没有精度可言。

DWT实现一个精确微秒延迟的参考例程
https://forum.anfulai.cn/forum.p ... 9128&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

2

主题

48

回帖

54

积分

初级会员

积分
54
发表于 2024-12-27 15:20:48 | 显示全部楼层
6666666666  学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 15:25 , Processed in 0.042306 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表