新手入门
- 积分
- 10
- 金钱
- 10
- 注册时间
- 2019-5-15
- 在线时间
- 3 小时
|
1金钱
Systick定时器我用内部时钟作led闪烁,怎么时间不对,有大神解答下么
#include"delay1.h"
static u8 fac_us=0;
static u16 fac_ms=0;
void delay1_init()
{
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
fac_us=SystemCoreClock/1000000;
fac_ms=(u16)fac_us有*1000;
}
void delay1_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 delay1_ms(u16 nms)
{
u32 temp;
SysTick->LOAD=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;
}
|
|