add imxrt1052 board mdelay function

This commit is contained in:
Liu_Weichao
2023-01-10 17:21:10 +08:00
parent f8b845ca62
commit c621db2ca7
10 changed files with 975 additions and 25 deletions
@@ -83,6 +83,33 @@ extern int Imxrt1052HwLcdInit(void);
extern int HwTouchInit();
#endif
void ImxrtMsDelay(uint32 ms)
{
uint64 ticks = 0;
uint32 told, tnow, tcnt = 0;
uint32 reload = SysTick->LOAD;
ticks = ((uint64)ms * ((uint64)reload + 1) * TICK_PER_SECOND) / 1000;
told = SysTick->VAL;
//KPrintf("%s reload %u ms %u ticks %u told %u\n", __func__, reload, ms, ticks, told);
while (1) {
tnow = SysTick->VAL;
if (tnow != told) {
if (tnow < told) {
tcnt += told - tnow;
} else {
tcnt += reload - tnow + told;
}
told = tnow;
if (tcnt >= ticks) {
break;
}
}
}
}
void BOARD_SD_Pin_Config(uint32_t speed, uint32_t strength)
{
IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B0_00_USDHC1_CMD,
@@ -291,7 +318,6 @@ void SysTick_Handler(int irqn, void *arg)
{
TickAndTaskTimesliceUpdate();
}
DECLARE_HW_IRQ(SYSTICK_IRQN, SysTick_Handler, NONE);
struct InitSequenceDesc _board_init[] =
{