hpw422移植新的sdk
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
#include "Includes.h"
|
||||
|
||||
#define u32 uint32_t
|
||||
|
||||
volatile uint32_t GulSystickCount=0;
|
||||
void SysTick_Handler(void)
|
||||
{
|
||||
GulSystickCount++;//
|
||||
gpio_output_low(0);
|
||||
gpio_output_high(0);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
nus:要延时的us数.
|
||||
nus:0~204522252(最大值即(2^32)/32)
|
||||
*/
|
||||
|
||||
//#define TICK_PER_US 16
|
||||
//#define TICK_PER_US 32
|
||||
//#define TICK_PER_US 12
|
||||
#define TICK_PER_US 24
|
||||
|
||||
void delay_us(u32 nus)
|
||||
{
|
||||
u32 ticks;
|
||||
u32 told,tnow,tcnt=0;
|
||||
u32 reload=SysTick->LOAD; //LOAD的值
|
||||
ticks=nus*TICK_PER_US; //需要的节拍数 32M速度 1us需要32个时钟周期
|
||||
told=SysTick->VAL; //刚进入时的计数器值
|
||||
while(1)
|
||||
{
|
||||
tnow=SysTick->VAL;
|
||||
if(tnow!=told)
|
||||
{
|
||||
if(tnow<told)tcnt+=told-tnow; //这里注意一下SYSTICK是一个递减的计数器就可以了.
|
||||
else tcnt+=reload-tnow+told;
|
||||
told=tnow;
|
||||
if(tcnt>=ticks)break; //时间超过/等于要延迟的时间,则退出.
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
void delay_ms(u32 nms)
|
||||
{
|
||||
for(uint32_t i=0;i<nms;i++) delay_us(1000);
|
||||
}
|
||||
|
||||
//#define configCPU_CLOCK_HZ ( ( unsigned long ) 16000000 )
|
||||
//#define configCPU_CLOCK_HZ ( ( unsigned long ) 32000000 )
|
||||
//#define configCPU_CLOCK_HZ ( ( unsigned long ) 12000000 )
|
||||
#define configCPU_CLOCK_HZ ( ( unsigned long ) 24000000 )
|
||||
|
||||
//#define configTICK_RATE_HZ ( 20 ) //50ms滴答定时器中断一次调度一次
|
||||
#define configTICK_RATE_HZ ( 1000 ) //1ms滴答定时器中断一次调度一次
|
||||
void delay_Init(void)
|
||||
{
|
||||
// SysTick->LOAD=( configCPU_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL;
|
||||
// SysTick->CTRL|=SysTick_CTRL_CLKSOURCE_Msk;
|
||||
// SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;
|
||||
SysTick_Config(configCPU_CLOCK_HZ / configTICK_RATE_HZ);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void test_systick(void)
|
||||
{
|
||||
gpio_mux_ctl(0,0);gpio_fun_inter(0,0);gpio_fun_sel(0,0);gpio_direction_output(0);
|
||||
gpio_mux_ctl(1,0);gpio_fun_inter(1,0);gpio_fun_sel(1,0);gpio_direction_output(1);
|
||||
SysTick_Config(configCPU_CLOCK_HZ / configTICK_RATE_HZ);
|
||||
while(1)
|
||||
{
|
||||
#if 0
|
||||
delay_ms(5);
|
||||
gpio_output_low(1);
|
||||
delay_ms(5);
|
||||
gpio_output_high(1);
|
||||
#endif
|
||||
|
||||
#if 1
|
||||
delay_us(200);
|
||||
gpio_output_low(1);
|
||||
delay_us(200);
|
||||
gpio_output_high(1);
|
||||
#endif
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user