新手上路
- 积分
- 47
- 金钱
- 47
- 注册时间
- 2014-8-4
- 在线时间
- 0 小时
|
5金钱
用Systick定时器自己写了一个精确延时
配置Systick定时器为什么这样写会卡死?
void Init_SysTick(void)
{
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
if (SysTick_Config((SystemCoreClock>>3) / 1000000))
{
while (1);
}
SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;
}
这样写不会卡死
void Init_SysTick(void)
{
//SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
if (SysTick_Config(SystemCoreClock / 1000000))
{
while (1);
}
SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;
}
/***********************************************************
中断服务程序
void SysTick_Handler(void)
{
Systick_time();
}
void Systick_time(void)
{
if (Timedate != 0x00)
{
Timedate--;
}
}
延时函数
void delay_us(__IO u32 nTime)
{
Timedate = nTime;
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
while(TimeDate != 0);
}
|
|