You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
1.9 KiB
76 lines
1.9 KiB
#ifndef __DELAY_H |
|
#define __DELAY_H |
|
#include "sys.h" |
|
////////////////////////////////////////////////////////////////////////////////// |
|
//本程序只供学习使用,未经作者许可,不得用于其它任何用途 |
|
//ALIENTEK STM32开发板 |
|
//使用SysTick的普通计数模式对延迟进行管理(适合STM32F10x系列) |
|
//包括delay_us,delay_ms |
|
//正点原子@ALIENTEK |
|
//技术论坛:www.openedv.com |
|
//创建日期:2010/1/1 |
|
//版本:V1.8 |
|
//版权所有,盗版必究。 |
|
//Copyright(C) 广州市星翼电子科技有限公司 2009-2019 |
|
//All rights reserved |
|
//******************************************************************************** |
|
//V1.2修改说明 |
|
//修正了中断中调用出现死循环的错误 |
|
//防止延时不准确,采用do while结构! |
|
//V1.3修改说明 |
|
//增加了对UCOSII延时的支持. |
|
//如果使用ucosII,delay_init会自动设置SYSTICK的值,使之与ucos的TICKS_PER_SEC对应. |
|
//delay_ms和delay_us也进行了针对ucos的改造. |
|
//delay_us可以在ucos下使用,而且准确度很高,更重要的是没有占用额外的定时器. |
|
//delay_ms在ucos下,可以当成OSTimeDly来用,在未启动ucos时,它采用delay_us实现,从而准确延时 |
|
//可以用来初始化外设,在启动了ucos之后delay_ms根据延时的长短,选择OSTimeDly实现或者delay_us实现. |
|
//V1.4修改说明 20110929 |
|
//修改了使用ucos,但是ucos未启动的时候,delay_ms中中断无法响应的bug. |
|
//V1.5修改说明 20120902 |
|
//在delay_us加入ucos上锁,防止由于ucos打断delay_us的执行,可能导致的延时不准。 |
|
//V1.6修改说明 20150109 |
|
//在delay_ms加入OSLockNesting判断。 |
|
//V1.7修改说明 20150319 |
|
//修改OS支持方式,以支持任意OS(不限于UCOSII和UCOSIII,理论上任意OS都可以支持) |
|
//添加:delay_osrunning/delay_ostickspersec/delay_osintnesting三个宏定义 |
|
//添加:delay_osschedlock/delay_osschedunlock/delay_ostimedly三个函数 |
|
//V1.8修改说明 20150519 |
|
//修正UCOSIII支持时的2个bug: |
|
//delay_tickspersec改为:delay_ostickspersec |
|
//delay_intnesting改为:delay_osintnesting |
|
////////////////////////////////////////////////////////////////////////////////// |
|
|
|
void delay_init(void); |
|
void delay_ms(u16 nms); |
|
void delay_us(u32 nus); |
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|