野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13703|回复: 5

跪求大神解决:这个延时函数不能延时哪有问题 真心感谢

[复制链接]
发表于 2016-9-26 23:30:13 | 显示全部楼层 |阅读模式
void delay_init(u8 SYSCLK)
{
  SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
//SysTick->CTRL &= SysTick_CTRL_CLKSOURCE_Msk ;
fac_us=SYSCLK;   
fac_ms=(u32)fac_us*1000;   
}
void delay_xms(u16 nms)
{         
u32 temp;     
SysTick->LOAD=(u32)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;         
}

回复

使用道具 举报

发表于 2016-9-27 08:56:35 | 显示全部楼层
中断服务函数写了没
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-30 22:21:07 | 显示全部楼层
随风 发表于 2016-9-27 08:56
中断服务函数写了没

这个不是用的中断的方式实现的延时
回复 支持 反对

使用道具 举报

发表于 2016-10-4 22:16:18 来自手机 | 显示全部楼层
小鹰 发表于 2016-9-30 22:21
这个不是用的中断的方式实现的延时

初始化出了问题,具体的后天上班再看看。
回复 支持 反对

使用道具 举报

发表于 2016-10-6 09:10:48 | 显示全部楼层
对比下我的代码,看看你的哪里不一样。
  1. // couter 减1的时间 等于 1/systick_clk
  2. // 当counter 从 reload 的值减小到0的时候,为一个循环,如果开启了中断则执行中断服务程序,
  3. // 同时 CTRL 的 countflag 位会置1
  4. // 这一个循环的时间为 reload * (1/systick_clk)

  5. void SysTick_Delay_Us( __IO uint32_t us)
  6. {
  7.         uint32_t i;
  8.         SysTick_Config(SystemCoreClock/1000000);
  9.        
  10.         for(i=0;i<us;i++)
  11.         {
  12.                 // 当计数器的值减小到0的时候,CRTL寄存器的位16会置1       
  13.                 while( !((SysTick->CTRL)&(1<<16)) );
  14.         }
  15.         // 关闭SysTick定时器
  16.         SysTick->CTRL &=~SysTick_CTRL_ENABLE_Msk;
  17. }

  18. void SysTick_Delay_Ms( __IO uint32_t ms)
  19. {
  20.         uint32_t i;       
  21.         SysTick_Config(SystemCoreClock/1000);
  22.        
  23.         for(i=0;i<ms;i++)
  24.         {
  25.                 // 当计数器的值减小到0的时候,CRTL寄存器的位16会置1
  26.                 // 当置1时,读取该位会清0
  27.                 while( !((SysTick->CTRL)&(1<<16)) );
  28.         }
  29.         // 关闭SysTick定时器
  30.         SysTick->CTRL &=~ SysTick_CTRL_ENABLE_Msk;
  31. }
复制代码
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-10-24 20:09:54 | 显示全部楼层
fire 发表于 2016-10-6 09:10
对比下我的代码,看看你的哪里不一样。

好的  谢谢 火哥     
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 06:03 , Processed in 0.027312 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表