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

📄 t_event.c

📁 TMS320F2812的C++ examples 各个模块的程序
💻 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 + -