⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t_event.c

📁 dsp28xx在CCS31下能编译运行的一个工程文件
💻 C
字号:
/*************************************************************************

* $RCSfile: t_event.c,v $

* $Revision: 1.18 $

* $Date: 2001/03/19 16:58:09 $

* Copyright (c) 1997-2000 Texas Instruments Incorporated

*

* Target Event Example:

*____________________________________________________________________

* - Sends 3 events to the host:

*      - boiling  (event without data)

*              - this event is triggered whenever the critical

*                temperature of boiling is reached.

*      - freezing (event without data)

*              - this event is triggered whenever the critical

*                temperature of freezing is reached.

*      - read_gauge (event with data)

*              - this event is triggered at regular intervals when a

*                temperature sample is taken.

* - Events without data are logged via a call to RTDX_Log_Event().

* - Events with data are logged via a call to RTDX_Log_Event_Data().

*

* - The program completes after 100 samples have been taken.

*

* - This TARGET example shows:

*              - the use of Event Classes.

*              - how data can be recorded with the event.

*************************************************************************/

#include <stdio.h>              /* fprintf(), puts()        			*/

#include <stdlib.h>             /* abort()                  			*/

#include <rtdx.h>               /* RTDX Target Interface                */

#include <rtdx_evt.h>           /* RTDX Target Event Interface          */

#include "target.h"             /* TARGET_INITIALIZE()      			*/



/* Define critical temperatures (celcius)                           	*/

#define BOILING                 100

#define FREEZING                0

#define MIN_TEMP                -30

#define MAX_TEMP                +130



#define NUMBER_OF_SAMPLES       100



/*************************************************************************

* Internal Function Prototypes & Data structures

*************************************************************************/

void read_temperature(void);



/* Define classes of events                                         	*/

#define Critical_Temp_Class     0x0001  /* critical temp. class	    	*/

#define Sample_Temp_Class       0x0002	/* sample temp. class       	*/



/* Declare events & give class                                      	*/

RTDX_event boiling              = { Critical_Temp_Class };

RTDX_event freezing             = { Critical_Temp_Class };

RTDX_event read_gauge           = { Sample_Temp_Class };



typedef enum { FALSE, TRUE } BOOL;





/*************************************************************************

* The main application.

* - read temperature gauge in a loop until all samples taken.

*************************************************************************/

void main( void )

{    

    register unsigned Samples = NUMBER_OF_SAMPLES;



    /* Target initialization for RTDX                                   */

    TARGET_INITIALIZE();

    

    /* Loop until "NUMBER_OF_SAMPLES" are taken...                      */

    do { 

        read_temperature();     /* Check temperature "sensor"           */

    } while( Samples-- > 0 );

    

    puts("\nProgram Completed!");

}





/*************************************************************************

* Simulate a temperature control by linearly changing the

* temperature from BOILING to FREEZING and back

*************************************************************************/

void read_temperature(void)

{

    static int temp = 50;	    /* Initial temperature                  */

    static int increment = 10;  /* Temperature increment                */

    

    /* Log temperature sample                   */

    if ( !RTDX_Log_Event_Data( &read_gauge, &temp, sizeof temp) ) {

        fprintf(stderr, "\nError: RTDX_Log_Event_Data() failed!\n");

        abort();

    }

    

    /* Check for critical temperatures                                  */

    if( (temp >= BOILING) || (temp <= FREEZING) ) {

        

        /* Determine which critical temperature.                        */

        RTDX_event *pEvent;

        if ( temp >= BOILING ) {

            pEvent = &boiling;

        } else if ( temp <= FREEZING ) {

            pEvent = &freezing;

        }

        if ( RTDX_Log_Event(pEvent) ) {

            /* Disable critical event class                             */

            /* - disables future critical events so only appears once.  */

            RTDX_Disable_Event_Class( Critical_Temp_Class );

        } else {

            fprintf(stderr, "\nError: RTDX_Log_Event() failed!\n");

            abort();

        }

        

    } else {

        /* Temperature no longer outside critical limits.               */

        /* - Re-enable critical event class to re-enabling future       */

        /*   critical events to appear again.                           */

        RTDX_Enable_Event_Class( Critical_Temp_Class );

    }

    

    /* Wait for data transfer                                           */

    while ( RTDX_writing != NULL ) {

#if RTDX_POLLING_IMPLEMENTATION

        RTDX_Poll();            /* Call Poll to do data transfer        */

#endif

    }

    

    if( (temp <= MIN_TEMP) || (temp >= MAX_TEMP) ) {

        increment *= -1;        /* Reverse increment direction          */

    }

    temp += increment;          /* Change temperature                   */

    

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -