小学生
最后登录1970-1-1
在线时间 小时
注册时间2017-3-3
|
楼主 |
发表于 2017-3-3 18:02:31
|
显示全部楼层
可以了,从开机例程改来的
void Delay_us( __IO u32 nus )
{
uint32_t ticks;
uint32_t told,tnow,tcnt=0;
ticks = nus * (SystemCoreClock / 1000000); /* 需要的节拍数 */
ticks = ticks/72*100; /* 改了后时长就对了*/
tcnt = 0;
told = (uint32_t)CPU_TS_TmrRd(); /* 刚进入时的计数器值 */
while(1)
{
tnow = (uint32_t)CPU_TS_TmrRd();
if(tnow != told)
{
/* 32位计数器是递增计数器 */
if(tnow > told)
{
tcnt += tnow - told;
}
/* 重新装载 */
else
{
tcnt += UINT32_MAX - told + tnow;
}
told = tnow;
/*时间超过/等于要延迟的时间,则退出 */
if(tcnt >= ticks)break;
}
}
}
|
|