OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4727|回复: 1

请教下原子哥的delay_ms函数,是在哪里把滴答定时器设置为us的呢》?

[复制链接]

16

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2020-11-10
在线时间
23 小时
发表于 2020-12-11 16:18:24 | 显示全部楼层 |阅读模式
1金钱
调用了delay_int函数,里面就设置了
HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);//SysTick频率为HCLK
        fac_us=SYSCLK;       

但是hal_init函数中是默认初始化滴答定时器为       

__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
{
  /*Configure the SysTick to have interrupt in 1ms time basis*/
  HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

  /*Configure the SysTick IRQ priority */
  HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority ,0);

  /* Return function status */
  return HAL_OK;
}


//延时nus
//nus为要延时的us数.       
//nus:0~190887435(最大值即2^32/fac_us@fac_us=22.5)         
void delay_us(u32 nus)
{               
        u32 ticks;
        u32 told,tnow,tcnt=0;
        u32 reload=SysTick->LOAD;                                //LOAD的值                     
        ticks=nus*fac_us;                                                 //需要的节拍数
        told=SysTick->VAL;                                        //刚进入时的计数器值
        while(1)
        {
                tnow=SysTick->VAL;       
                if(tnow!=told)
                {            
                        if(tnow<told)tcnt+=told-tnow;        //这里注意一下SYSTICK是一个递减的计数器就可以了.
                        else tcnt+=reload-tnow+told;            
                        told=tnow;
                        if(tcnt>=ticks)break;                        //时间超过/等于要延迟的时间,则退出.
                }  
        };
}

这个滴答定时器是设置为1ms的吗,但是原子的delay_us()中直接用了这个定时器的计数,请问下我是不是哪里看掉了代码,还是我的代码不够新啊???

最佳答案

查看完整内容[请看2#楼]

ticks=nus*fac_us; //需要的节拍数
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2020-12-11 16:18:25 | 显示全部楼层
  ticks=nus*fac_us;                                                 //需要的节拍数
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-13 17:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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