1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- #include "delay.h"
- static u8 fac_us=0;
- static u16 fac_ms=0;
-
- void delay_init()
- {
- SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
- fac_us=SystemCoreClock/8000000;
- fac_ms=(u16)fac_us*1000;
- }
- void delay_us(u32 nus)
- {
- u32 temp;
- SysTick->LOAD=nus*fac_us;
- SysTick->VAL=0x00;
- SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;
- do
- {
- temp=SysTick->CTRL;
- }while((temp&0x01)&&!(temp&(1<<16)));
- SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;
- SysTick->VAL =0X00;
- }
- void delay_ms(u16 nms)
- {
- u32 temp;
- SysTick->LOAD=(u32)nms*fac_ms;
- SysTick->VAL =0x00;
- SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;
- do
- {
- temp=SysTick->CTRL;
- }while((temp&0x01)&&!(temp&(1<<16)));
- SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;
- SysTick->VAL =0X00;
- }
|