牛卧堂MCU技术交流
标题:
一个延迟-秒-函数该怎么写
[打印本页]
作者:
arm_nuedu
时间:
2017-8-13 22:06
标题:
一个延迟-秒-函数该怎么写
问题:1:这两个while的延迟时间为什么差别这么大???第一个(注释掉的部分)差不多3秒多,也能接受。第二个整整10s多。
2:最想问还是__NOP运行一次多长时间???它应该跟系统时钟设置有关吧?我该怎设置,使用NOP来做一个更准确的延迟???
void delay_s(uint32_t second)
{
uint32_t i;
uint32_t j = second*1000;
for(i=0;i<second;i++)
{
// while(j>0)
// {
// CLK_SysTickDelay(1000);
// j--;
// }
for(j=0;j<second*1000;j++)
CLK_SysTickDelay(1000);
//
// }
// for(i=0;i<1000000*second;i++)
// {
// __NOP ;
// __NOP ;
// }
}
谢谢,期待你的答复!!!!!!
作者:
a_ziliu
时间:
2017-8-14 11:08
看你的SystemCoreClock
printf("\n\nCPU @ %dHz\n", SystemCoreClock);
作者:
a_ziliu
时间:
2017-8-14 11:11
systick delay時間 是根據你的clock算出來的
/* Update System Core Clock */
SystemCoreClock = u32Freq / u32HclkDiv;
CyclesPerUs = (SystemCoreClock + 500000) / 1000000;
作者:
arm_nuedu
时间:
2017-8-14 16:33
您好,这个问题其实不在这里,我也明白,SystemCoreClockUpdate()是为了在不同时钟的情况下,保证 CLK_SysTickDelay的使用,现在时钟是22.1148M,去调用CLK_SysTickDelay做一个秒级的延迟函数,结果偏差太大。
另外,在22.1148M下,__NOP的延时多少????
欢迎光临 牛卧堂MCU技术交流 (http://nuvoton-mcu.com/)
Powered by Discuz! X3.2