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

📄 led.c

📁 powerpc下led驱动,支持tornado2.2
💻 C
字号:
/****************************************************************************
    File : led.c

    点灯模块
****************************************************************************/
 
#include <vxworks.h>

#if (CPU == PPC860 )
#include "ads852.h"
#include "m852reg.h"
#include "m852mask.h"
#else
#include "ads8260.h"
#include "m8260reg.h"
#include "m8260mask.h"
#endif

#include "base.h"
#include "led.h"

#if ( HARDWARE_VERSION == 8 ) 
U32 record_led_map [] =
{  // 0       1         2        3        4       5        6       7        
    PD16,  PD17,     PD18,    PD19,    PD20,    PD21 ,    PD22,
};
#elif ( HARDWARE_VERSION == 16 ) 
U32 record_led_map [] =
{  // 0       1         2        3        4       5        6       7        
     PD4 ,  PD13  ,  PD5  ,  PD16 ,  PD6 ,  PD17 ,  PD7 ,  PD18 ,  
     PD9 ,  PD19  ,  PD10 ,  PD20 ,  PD11,  PD21 ,  PD12,  PD22
};
#endif
//   Function : init_app_led
// Decription : config led control pin 
void init_app_led     ( void    ) 
{
#if ( HARDWARE_VERSION == 2 )

	
	*EPLD_LED_REG = 0x00 ;
#else
    U32 immBase = vxImmrGet();  
    U32 pin = 0 ;
    int i = 0 ;

    for ( i=0 ; i<MAX_LED_NUM ; i++ )
    {
       pin |= record_led_map[i] ;
    }
    
   
    *M8260_PDODR(immBase) &= ~pin ;
    *M8260_PDPAR(immBase) &= ~pin;
    *M8260_PDDIR(immBase) |=  pin;    
     
    /*Do not need to set PDSO register*/ 
    
    *M8260_PDDAT(immBase) &=  ~pin; 
#endif
}

//   Function : app_led_off
// Decription : turn off one led
void app_led_off( int led )
{
    U32 immBase = vxImmrGet();  
    U32 pin ;

    if( led >= MAX_LED_NUM || led < 0 )
        return ;
        
#if ( CPU == PPC860 )
    pin  =  LED1_MASK << led ;
    
    *EPLD_LED_REG &= ~pin  ;
#else        
    pin = record_led_map[led] ;
    *M8260_PDDAT(immBase) &= ~pin  ;
#endif
}


//   Function : app_led_on
// Decription : turn on one led
void app_led_on( int led ) 
{
    U32 immBase = vxImmrGet();  
    U32 pin ;

    if( led >= MAX_LED_NUM || led < 0 )
        return ;
        
#if ( CPU == PPC860 )
    pin  =  LED1_MASK << led  ;
    
    *EPLD_LED_REG |=  pin  ;
#else        
    
    pin = record_led_map[led] ;
    *M8260_PDDAT(immBase) |=  pin  ;
#endif
       
}

⌨️ 快捷键说明

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