53 lines
1.7 KiB
C
53 lines
1.7 KiB
C
/*
|
||
* @Author: jiejie
|
||
* @Github: https://github.com/jiejieTop
|
||
* @Date: 2020-02-15 20:51:38
|
||
* @LastEditTime: 2020-02-16 00:07:34
|
||
* @Description: the code belongs to jiejie, please keep the author information and source code according to the license.
|
||
*/
|
||
#ifndef _BSP_DWT_H
|
||
#define _BSP_DWT_H
|
||
|
||
#include "stdint.h"
|
||
|
||
#define USE_DWT_DELAY 1 /* 使用dwt内核精确延时 */
|
||
|
||
#if USE_DWT_DELAY
|
||
#define USE_TICK_DELAY 0 /* 不使用SysTick延时 */
|
||
#else
|
||
#define USE_TICK_DELAY 1 /* 使用SysTick延时 */
|
||
#endif
|
||
|
||
#if USE_DWT_DELAY
|
||
|
||
/* 获取内核时钟频率 */
|
||
#define get_cpu_clk_freq() (72000000U)
|
||
#define system_clk_freq (72000000U)
|
||
/* 为方便使用,在延时函数内部调用dwt_init函数初始化时间戳寄存器,
|
||
这样每次调用函数都会初始化一遍。
|
||
把本宏值设置为0,然后在main函数刚运行时调用dwt_init可避免每次都初始化 */
|
||
|
||
#define CPU_TS_INIT_IN_DELAY_FUNCTION 0
|
||
|
||
|
||
/*******************************************************************************
|
||
* 函数声明
|
||
******************************************************************************/
|
||
uint32_t dwt_read(void);
|
||
void dwt_init(void);
|
||
|
||
//使用以下函数前必须先调用dwt_init函数使能计数器,或使能宏CPU_TS_INIT_IN_DELAY_FUNCTION
|
||
//最大延时值为60秒
|
||
void dwt_delay_us(uint32_t us);
|
||
#define dwt_delay_ms(ms) dwt_delay_us(ms*1000)
|
||
#define dwt_delay_s(s) dwt_delay_ms(s*1000)
|
||
|
||
/* 最大延时 60s=2的32次方/72000000 */
|
||
#define delay_ms(ms) dwt_delay_ms(ms)
|
||
#define delay_us(us) dwt_delay_us(us)
|
||
#define delay_s(s) dwt_delay_s(s)
|
||
|
||
#endif
|
||
|
||
#endif /* _BSP_DWT_H */
|