void delay10us(uint32_t u32Cnt)
{
uint32_t Cur = SysTick->VAL;
uint32_t Mod = SysTick->LOAD;
uint32_t Cnt = (u32Cnt * SystemCoreClock) / 100000;
boolean_t Dec = FALSE;
while (Cnt > Mod)
{
if (SysTick->VAL >= Cur)
{
if (Dec == FALSE)
{
Cnt -= Mod;
Dec = TRUE;
}
}
else
Dec = FALSE;
}
if (Cnt > Cur)
{
while (SysTick->VAL < Cur){};
while (SysTick->VAL > Mod + Cur - Cnt){};
}
else
while (SysTick->VAL > Cnt - Cur){};
}
重写ddl.c中的延时函数。
赞0
void delay10us(uint32_t u32Cnt)
{
uint32_t Cur = SysTick->VAL;
uint32_t Mod = SysTick->LOAD;
uint32_t Cnt = (u32Cnt * SystemCoreClock) / 100000;
boolean_t Dec = FALSE;
while (Cnt > Mod)
{
if (SysTick->VAL >= Cur)
{
if (Dec == FALSE)
{
Cnt -= Mod;
Dec = TRUE;
}
}
else
Dec = FALSE;
}
if (Cnt > Cur)
{
while (SysTick->VAL < Cur){};
while (SysTick->VAL > Mod + Cur - Cnt){};
}
else
while (SysTick->VAL > Cnt - Cur){};
}
重写ddl.c中的延时函数。
评论
2023-01-04
赞0
是的,如果你要使用systick和delay函数,最好自己重新写一下delay函数
评论
2023-01-04
赞0
void Bgr_BgrEnable(void)
{
M0P_BGR->CR |= 0x1u;
delay10us(2);
}
这个函数中的 delay10us(2);把寄存器清了。
评论
2023-01-03
您需要登录后才可以回复 登录 | 注册