75 lines
1.5 KiB
C
75 lines
1.5 KiB
C
![]() |
/*
|
|||
|
* S32K144<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD>лԭ<EFBFBD>Ӹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
|
|||
|
#include"cpu.h"
|
|||
|
#include"delay.h"
|
|||
|
#include"uart.h"
|
|||
|
|
|||
|
static uint32_t fac_us;
|
|||
|
|
|||
|
/*<2A>ӳٺ<D3B3><D9BA><EFBFBD><EFBFBD>¾<EFBFBD>ԭ<EFBFBD>Ӹ<EFBFBD>*/
|
|||
|
void SysTick_Init(void) //systick <20><> core_clk 48mhz <20><>װ<EFBFBD>ؼĴ<D8BC><C4B4><EFBFBD> FFFFFF Ϊ16 777 215hz 16.77mhz/48mhz Լ<><D4BC><EFBFBD><EFBFBD>333<33><33><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
S32_SysTick->RVR = 0xFFFFFFul; //<2F><>װ<EFBFBD>ؼĴ<D8BC><C4B4><EFBFBD>
|
|||
|
S32_SysTick->CVR = 0ul; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
|||
|
S32_SysTick->CSR = 0u; //<2F><><EFBFBD>ƼĴ<C6BC><C4B4><EFBFBD>
|
|||
|
}
|
|||
|
|
|||
|
/* Enable SysTick counter and interrupt */
|
|||
|
void SysTick_Enable(void)
|
|||
|
{
|
|||
|
S32_SysTick->CSR = S32_SysTick_CSR_TICKINT(1u) | S32_SysTick_CSR_ENABLE(1);
|
|||
|
}
|
|||
|
|
|||
|
/* Disable SysTick */
|
|||
|
void SysTick_Disable(void)
|
|||
|
{
|
|||
|
S32_SysTick->CSR = 0ul;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
static uint32_t fac_us;
|
|||
|
|
|||
|
void delay_us(uint32_t nus)
|
|||
|
{
|
|||
|
uint32_t ticks;
|
|||
|
uint32_t told,tnow,tcnt=0;
|
|||
|
uint32_t reload=S32_SysTick->RVR; //LOAD<41><44>ֵ
|
|||
|
ticks=nus*fac_us; //<2F><>Ҫ<EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
told= S32_SysTick->CVR ; //<2F>ս<EFBFBD><D5BD><EFBFBD>ʱ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
while(1)
|
|||
|
{
|
|||
|
tnow= S32_SysTick->CVR ;
|
|||
|
if(tnow!=told)
|
|||
|
{
|
|||
|
if(tnow<told)tcnt+=told-tnow; //<2F><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>һ<EFBFBD><D2BB>SYSTICK<43><4B>һ<EFBFBD><D2BB><EFBFBD>ݼ<EFBFBD><DDBC>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
else tcnt+=reload-tnow+told;
|
|||
|
told=tnow;
|
|||
|
if(tcnt>=ticks)break; //ʱ<>䳬<EFBFBD><E4B3AC>/<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD>ӳٵ<D3B3>ʱ<EFBFBD><CAB1>,<2C><><EFBFBD>˳<EFBFBD>.
|
|||
|
}
|
|||
|
};
|
|||
|
}
|
|||
|
|
|||
|
void delay_ms(uint32_t nms)
|
|||
|
{
|
|||
|
uint32_t i;
|
|||
|
for(i=0;i<nms;i++) delay_us(1000);
|
|||
|
}
|
|||
|
|
|||
|
int delay_init(void)
|
|||
|
{
|
|||
|
uint32_t frequency;
|
|||
|
CLOCK_SYS_GetFreq(CORE_CLK, &frequency);
|
|||
|
|
|||
|
|
|||
|
|
|||
|
fac_us = frequency / 1000000;// <20>õ<EFBFBD><C3B5><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>mhz <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD><D6AA>1us<75><73><EFBFBD>ٸ<EFBFBD><D9B8><EFBFBD><EFBFBD><EFBFBD>,<2C><>Ҫ<EFBFBD><D2AA> 1 000 000
|
|||
|
SysTick_Init(); //systick <20><> core_clk 48mhz <20><>װ<EFBFBD>ؼĴ<D8BC><C4B4><EFBFBD> FFFFFF Ϊ16 777 215hz 16.77mhz/48mhz 0.333<EFBFBD><EFBFBD> Լ<><D4BC><EFBFBD><EFBFBD>333<33><33><EFBFBD><EFBFBD>
|
|||
|
SysTick_Enable();
|
|||
|
return fac_us;
|
|||
|
}
|
|||
|
|
|||
|
|