初中生
最后登录1970-1-1
在线时间 小时
注册时间2018-5-23
|
本帖最后由 Rheinmetal 于 2018-5-24 10:19 编辑
- 函数版本1是照函数版本1着书上抄的,但是不能延时,函数版本2是在百度搜的,可以用,两个都差不多啊,为什么版本1 的不能延时呢?(完完全全照着书上写的) .初学不知道怎么处理求大神解释下谢谢?
复制代码
void Delay(__IO u32 ms)
{
//SysTick延时函数版本 1 (照着书上写的)
#if 0
uint32_t count=0;
SysTick_Config(SystemCoreClock/1000000);
for(count=0;count<ms;++count)
{
//当计数器的值减到0时,CTRL寄存器的位16会置1
//当值1时,读取该位会清0
while(!((SysTick->CTRL)&(1<<16)));
}
// 关闭 SysTick 定时器
SysTick->CTRL &=~SysTick_CTRL_ENABLE_Msk;
#endif
//SysTick延时函数版本 2 (网上找的代码)
#if 0
u32 temp=0;
SysTick->LOAD=microsec*9000; //设置重装值 (72MHz时)
SysTick->CTRL=0x01; //使能
SysTick->VAL=0x00; //清空计数器
do
{
temp=SysTick->CTRL; //读取当前值;
}while((temp&0x01)&&(!(temp &(1<<16))));//等待时间到达
SysTick->CTRL=0x00; //关闭计数器
SysTick->VAL=0x00;
#endif
} |
|