打印
[STM32F1]

不用死循环

[复制链接]
628|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
happy_10|  楼主 | 2019-4-20 08:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近用一个wifi芯片(ESP8266),看了别人的程序,用了FreeRTOS系统。对这个系统不熟,只是了解吧。看的这个程序没有while(1)这样的死循环,只有一个定时器,请问是不是开了定时器,不用while(1),程序也不会结束。

使用特权

评论回复
沙发
happy_10|  楼主 | 2019-4-20 08:24 | 只看该作者
#include "ets_sys.h"
#include "osapi.h"

#include "user_interface.h"

#include "user_devicefind.h"
#include "user_webserver.h"

#include "gpio16.h"
#include "gpio.h"

#include "c_types.h"

#if ESP_PLATFORM
#include "user_esp_platform.h"
#endif

/** 定时器结构体 */
static os_timer_t os_timer;

/** LED操作命令 */
void Led_Cmd( bool status )
{
    if ( status == true )
    {
        gpio16_output_set( 0 );
    }
    else
    {
        gpio16_output_set( 1 );
    }
}

/** LED任务运行程序 */
void Led_Task_Run( void )
{
    static bool status = false;

    if ( status == true )
    {
        status = false;
    }
    else
    {
        status = true;
    }
    Led_Cmd( status );
}

/** LED模块初始化程序 */
void Led_Init( void )
{
    gpio16_output_conf();
    Led_Cmd( false );

    /** 关闭该定时器 */
    os_timer_disarm( &os_timer );
    /** 配置该定时器回调函数 */
    os_timer_setfn( &os_timer, (ETSTimerFunc *) ( Led_Task_Run ), NULL );
    /** 启动该定时器 */
    os_timer_arm( &os_timer, 500, true );
}

/** 初始化程序 */
void user_init(void)
{
    Led_Init();
}
user_init(相当于main)

使用特权

评论回复
板凳
chenho| | 2019-4-20 08:28 | 只看该作者

这个只是用了定时器回调函数。
定时器回调函数不可以是无限循环。

使用特权

评论回复
地板
huanghuac| | 2019-4-20 08:31 | 只看该作者
任务就是个循环;

使用特权

评论回复
5
happy_10|  楼主 | 2019-4-20 08:36 | 只看该作者
这样的话,执行一遍就结束了吗?

使用特权

评论回复
6
happy_10|  楼主 | 2019-4-20 08:39 | 只看该作者
有点不是很明白,能不能说的更具体一点

使用特权

评论回复
7
wenfen| | 2019-4-20 08:44 | 只看该作者
总会有个地方需要while(1) 这样的循环的

使用特权

评论回复
8
戈卫东| | 2019-4-20 08:45 | 只看该作者
每个任务进程/线程仍然必须是while(1)循环。

使用特权

评论回复
9
happy_10|  楼主 | 2019-4-20 08:47 | 只看该作者
这样说就明白了,谢谢

使用特权

评论回复
10
tian111| | 2019-4-20 08:53 | 只看该作者
定时器回调函数是OS提供的工具,会根据你指定的时间间隔重复调用。

使用特权

评论回复
11
zwll| | 2019-4-20 08:57 | 只看该作者
如果它是无限循环将会破坏系统的运行。

使用特权

评论回复
12
juventus9554| | 2019-4-20 09:01 | 只看该作者
定时器回调函数不可以是无限循环

使用特权

评论回复
13
happy_10|  楼主 | 2019-4-20 09:05 | 只看该作者

嗯,预料中的结果,先结贴吧,多谢大家啦

使用特权

评论回复
14
八层楼| | 2019-5-10 09:09 | 只看该作者
其实在别的地方有代码的

使用特权

评论回复
15
观海| | 2019-5-10 09:17 | 只看该作者
不是呀 你要看系统里边用了多少中断啊

使用特权

评论回复
16
guanjiaer| | 2019-5-10 09:30 | 只看该作者
楼主多多读代码就知道了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

744

主题

7973

帖子

6

粉丝