本帖最后由 xyz549040622 于 2023-3-22 22:40 编辑
MSPM0的库函数中有一个延时函数,delay_cycles(cycles)
这个函数在dl_core.h中进行了宏定义
#define delay_cycles(cycles) DL_Common_delayCycles(cycles)
DL_Common_delayCycles(cycles)这个函数其实在dl_common.c中进行了定义
#include <stdint.h>
#include <ti/driverlib/dl_common.h>
void DL_Common_delayCycles(uint32_t cycles)
{
/* There will be a 2 cycle delay here to fetch & decode instructions
* if branch and linking to this function */
/* Subtract 2 net cycles for constant offset: +2 cycles for entry jump,
* +2 cycles for exit, -1 cycle for a shorter loop cycle on the last loop,
* -1 for this instruction */
#ifdef __GNUC__
__asm(".syntax unified");
#endif
__asm volatile(
"SUBS r0, r0, #2; \n"
"DL_Common_delayCyclesLoop: \n"
"SUBS r0, r0, #4; \n"
"NOP; \n"
"BHS DL_Common_delayCyclesLoop; \n"
/* Return: 2 cycles */
);
}
数据手册中对这个函数的介绍如下所示:
这个函数的作用是消耗指定的CPU周期数,可以通过这个值进行大概的时间延时。
|