你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32L0 us延时误差大,不知原因!好心人指教!谢谢!

[复制链接]
nigel1983 提问时间:2019-4-16 12:39 /
void  Configure_TIMTimeBase(void)
{
    uint32_t v;
//TIM2使用的时钟为HSI 16MHz(AHB,APB1总线未分频)
  LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM2);
  LL_TIM_SetPrescaler(TIM2, 16);
  LL_TIM_SetCounterMode(TIM2,LL_TIM_COUNTERMODE_DOWN);     
}


void  DelayUs(uint16_t us)
{      
    LL_TIM_SetCounter(TIM2,us);   
    LL_TIM_EnableCounter(TIM2);   
    while( LL_TIM_IsEnabledCounter(TIM2) && !LL_TIM_IsActiveFlag_UPDATE(TIM2))
    {
    }   
    LL_TIM_ClearFlag_UPDATE(TIM2);
    LL_TIM_DisableCounter(TIM2);   
}
延时误差相当大,延时越长误差越大。没搞懂原因. 2ms  误差0.14ms (140us)。
用SYSTICK定时器精度正常,误差一直在14us左右(由于HSI是RC时钟和代码的原因导致,在可接受范围内)
收藏 1 评论9 发布时间:2019-4-16 12:39

举报

9个回答
edmundlee 回答时间:2019-4-16 13:00:54
LL_TIM_SetPrescaler(TIM2, 15);

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

MrJiu 回答时间:2019-4-16 14:17:37
不知道什么东西需要那么高的要求!!!我一般us级别的延时,都是用的while,差不多就可以了。。。如果要高要求,以你的这种写法肯定不行,进函数,出函数,都需要时间的,甚至都达到us级别了。。。用寄存器,而且最好是能够计算到进栈,出栈,甚至定位到汇编,一句一句计算。。。这也才是最精确的!!!

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

七哥 回答时间:2019-4-16 14:29:48
用定时器死等,还不如软件死等呢。
用while做延时粗调,NOP做短延时补尝微调。
要求高的话,还可以分段细化延时,比如Delay_us()、Delay_10us()、Delay_100us()、Delay_ms()、Delay_10ms()、Delay_100ms()。

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

Kevin_G 回答时间:2019-4-16 15:50:18
LL_TIM_SetPrescaler(TIM2, 15);
可以用更少的分频,更多的计数 看一看。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

nigel1983 回答时间:2019-4-16 16:44:40
感谢这么多人关注指教!感谢大家,我只是奇怪精度为什么差这么多!我再试试!
nigel1983 回答时间:2019-4-16 16:49:32
我测试了一下 16MHz时钟  空跑while一次约0.44us,控制得好也算比较精准  我的MCU是L073R8t6
edmundlee 回答时间:2019-4-16 16:50:34
nigel1983 发表于 2019-4-16 16:44
感谢这么多人关注指教!感谢大家,我只是奇怪精度为什么差这么多!我再试试! ...

LL_TIM_SetPrescaler(TIM2, 15);
我的回复你都没看明白?
分频16, 是写成16-1的, 你写16就变成分频17了, 明白?
nigel1983 回答时间:2019-4-19 09:38:32
好的,谢谢!明白了!
Dylan疾风闪电 回答时间:2019-4-19 09:53:29
延时可以使用滴答器 systick,
例如:
配置中断触发间隔1us;
SysTick_Handler中断只计数count。
应用时只需要对count监测差值,就能得到准确的us延时。其精度取决于时钟源/晶振

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版