| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | /*** | 
					
						
							|  |  |  |  | 	*************************************************************************** | 
					
						
							|  |  |  |  | 	*	@file  	delay.c | 
					
						
							| 
									
										
										
										
											2025-10-18 13:58:40 +08:00
										 |  |  |  | 	*	@version V1.0.0 | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | 	*	@brief   delay接口相关函数 | 
					
						
							|  |  |  |  |    *************************************************************************** | 
					
						
							|  |  |  |  |    *  @description | 
					
						
							|  |  |  |  | 	* | 
					
						
							|  |  |  |  | 	*  SysTick定时器配置为1ms中断,实现毫秒延时 | 
					
						
							| 
									
										
										
										
											2025-10-18 13:58:40 +08:00
										 |  |  |  | 	* | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | 	*************************************************************************** | 
					
						
							|  |  |  |  | ***/ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | #include "delay.h" | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-10-18 13:58:40 +08:00
										 |  |  |  | static __IO uint32_t TimingDelay;  //计数变量 | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //	函数:延时初始化 | 
					
						
							|  |  |  |  | //	说明:配置 SysTick 为1ms中断,并启动定时器 | 
					
						
							|  |  |  |  | // | 
					
						
							|  |  |  |  | void Delay_Init(void) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	SysTick_Config(SystemCoreClock / 1000);  //配置SysTick时钟为1ms中断 | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //	函数:计时函数 | 
					
						
							|  |  |  |  | //	说明:在 SysTick 中断服务函数里被调用 | 
					
						
							|  |  |  |  | // | 
					
						
							|  |  |  |  | void OS_CPU_SysTickHandler(void) | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 	if (TimingDelay != 0) | 
					
						
							| 
									
										
										
										
											2025-10-18 13:58:40 +08:00
										 |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | 		TimingDelay--; | 
					
						
							|  |  |  |  | 	} | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //	函数:毫秒延时 | 
					
						
							|  |  |  |  | // 参数:nTime - 延时时间,单位ms | 
					
						
							| 
									
										
										
										
											2025-10-18 13:58:40 +08:00
										 |  |  |  | //	说明:每次调用都会重新给TimingDelay赋值,实现 n 毫秒的延时,最大延时 4294967295 ms。 | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | // | 
					
						
							| 
									
										
										
										
											2025-10-18 13:58:40 +08:00
										 |  |  |  | void Delay_ms(uint32_t nTime) | 
					
						
							|  |  |  |  | { | 
					
						
							| 
									
										
										
										
											2025-06-27 00:32:57 +08:00
										 |  |  |  | 	TimingDelay = nTime; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	while(TimingDelay != 0); | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 |