最近在排查项目中的问题,delay函数,自己在STM32F4的板子上写了一个while循环测试打印输出printf函数,如下

int main(){

    usart_init();

    while(1){

        printf(".........");

       //delay_ms(10);

     }

}

编译运行了在没加delay_ms函数之前,可以运行循环输出,可加了delay_ms延时函数之后,怎么就运行一次输出一行,就感觉卡了,delay函数用的是配套例程下的原代码。。。是不是什么地方配置遗漏了?

最佳答案

  • sgf201 发表于2018-01-11

    看你的写法,没有问题的,如果调用的是库函数的话那问题应该也没出在delay本身,由于你使用的是库函数,检查下这个函数的实现方式,应该需要init才行,比如它可能是用某个定时器实现的,而你的定时器没有设置,或者定时器设置了,定时器的时钟不合适,导致延时变长,希望你调试顺利,by the way写代码有时靠运气,实在不行拿出例程里的延时demo对比下

    举报 评论 0

其他答案

  • xdsnet 发表于 2018-01-11

    你最好提供一些delay_ms函数的定义,如果是库函数就算了,如果是例程中的,你最好提供出来看看

    举报 评论 0

  • chen0000009 发表于 2018-01-11

    定时器是不是没打开,或者被其他部分占用了

    举报 评论 0

  • chownn 发表于 2018-01-11

    delay函数的配置没有初始化吧

    举报 评论 0

  • 445465396@qq.com 发表于 2018-01-11

    可以贴上delay函数的内容么?

    如果delay函数用定时器或者stick-stock时钟,是需要初始化时钟部分的,不然会有错误。

    举报 评论 0

  • 1219279984@qq.com 发表于 2018-01-11

    看下delay_ms的源代码,比较容易判断。
    如果时通过定期器或者滴答,那就需要初始化相关的设置,如果只是简单的for循环,应该和主频有关,改主频或者修改for循环次数,就可以看到变化。

    举报 评论 0

  • 我是爆米花啊 发表于 2018-01-11

    delay_ms函数是使用滴答定时器来做的吗?如果是的 话,得初始化SysTick。

    举报 评论 0

  • donatello 发表于 2018-01-11

    最好把Delay函数的详细代码发上来看下,是不是里面的代码导致卡死。

    举报 评论 0

  • 18218811680 发表于 2018-01-11

    吧delay函数的代码发上来。程序应该是卡在了delay里面了。

    举报 评论 0

  • @曲终人散@ 发表于 2018-01-11

    看样子程序是死在了delay_ms那里了,你可以调试一下,进入到delay_ms里边看看具体停在了哪里,然后再解决问题

    举报 评论 0

  • 明有几时有 发表于 2018-01-11

    看看这个函数是定时器设置的,还是循环设置的。

    把这个函数的源码贴出来看看。

    举报 评论 0

  • lichangle 发表于 2018-01-12

    一般是延时函数没有初始化,或者是只有声明没有函数实体,都会死在这

    举报 评论 0

  • 小小程序猿 发表于 2018-01-17

    延时函数没有初始化,一运行就会卡死

    举报 评论 0

我来回答

试用推荐

正点原子阿波罗STM32F767开发板

产品总数:3个  申请人数:55

距离结束时间:

推荐达人 更多>

  • 王奕 向ta提问

    Eagleson

    在学习FPGA的道路上 我们一起成长吧!

    在行: FPGA/CPLD

  • 靳飞 向ta提问

    汉云

    在路上的Linuxer

    在行: DSP技术 Linux 系统 STM32讨论区 PIC单片机 PCB技术/设计/定制

  • Angel Cherry 向ta提问

    MOP

    用愛和熱忱寫好每一行Code

    在行: FPGA/CPLD Linux 系统 热门单片机

  • 徐珂靖 向ta提问

    xukejing

    Linux系统 、热门开发板

    在行: Linux 系统

  • 袁建明 向ta提问

    河北博联科技有限公司 研发部经理

    日知其所亡

    在行: Linux 系统 灵动微MCU 电源技术

完成答题
赶快去开启您的宝箱吧
了解详情