找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7551|回复: 11
打印 上一主题 下一主题
收起左侧

关于STM32 hal库微秒级延时函数的问题

[复制链接]
跳转到指定楼层
楼主
keil里这个代码微秒级延时为什么没有运行,代码和CUBE库设置
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:521487 发表于 2019-4-25 16:21 | 只看该作者
编译没有报错,运行到delay_us处就停下来了
回复

使用道具 举报

板凳
ID:362398 发表于 2019-4-25 20:36 | 只看该作者
hal库生成的定时器初始化函数最后没有使能定时器,需要自己添加代码使能
回复

使用道具 举报

地板
ID:250696 发表于 2019-4-25 21:35 | 只看该作者
你把优化设成0级看看
回复

使用道具 举报

5#
ID:521487 发表于 2019-4-25 22:28 | 只看该作者
sky505050w 发表于 2019-4-25 20:36
hal库生成的定时器初始化函数最后没有使能定时器,需要自己添加代码使能

delay函数里HAL_TIME_BASE_START不是使能了吗
回复

使用道具 举报

6#
ID:521487 发表于 2019-4-25 22:34 | 只看该作者
sky505050w 发表于 2019-4-25 20:36
hal库生成的定时器初始化函数最后没有使能定时器,需要自己添加代码使能

delay函数里不是使能了吗HAL_TIM_BASE_START
回复

使用道具 举报

7#
ID:521487 发表于 2019-4-26 01:00 | 只看该作者
delay函数的hal_tim_set不是使能了吗
回复

使用道具 举报

8#
ID:625566 发表于 2019-10-22 12:38 | 只看该作者
兄弟,问题最后怎么解决的啊?
回复

使用道具 举报

9#
ID:628258 发表于 2019-10-22 16:18 | 只看该作者
我一般使用这个:
void delay_us(__IO uint32_t nTime)
{
    int old_val,new_val,val;

    if(nTime > 900)
    {
        for(old_val = 0; old_val < nTime/900; old_val++)
        {
            delay_us(900);
        }
        nTime = nTime%900;
    }

    old_val = SysTick->VAL;
    new_val = old_val - CPU_FREQUENCY_MHZ*nTime;
    if(new_val >= 0)
    {
        do
        {
            val = SysTick->VAL;
        }
        while((val < old_val)&&(val >= new_val));
    }
    else
    {
        new_val += CPU_FREQUENCY_MHZ*1000;
        do
        {
            val = SysTick->VAL;
        }
        while((val <= old_val)||(val > new_val));

    }
}
回复

使用道具 举报

10#
ID:628308 发表于 2019-10-22 16:30 | 只看该作者
tim13不需要设置中断吗
回复

使用道具 举报

11#
ID:583334 发表于 2020-7-3 21:40 | 只看该作者
cyc2009 发表于 2019-10-22 16:18
我一般使用这个:
void delay_us(__IO uint32_t nTime)
{

Cube生成的工程文件,很多有时是靠systick进行判断的,所以调用systick会出问题
回复

使用道具 举报

12#
ID:764088 发表于 2020-7-4 08:33 | 只看该作者
定时器3 应是不能 support 比 us 低 1/n 倍的 中断,换句话说,是 您的微秒延时思路是 分钟式延时的思路。
当 同一频繁中断不断发生,而中断处理来不及 时,就是这种情况。
应改用  systemtick 来实现 微秒延时, 查下百度就有了。
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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