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

📄 global.h

📁 ST7540 Demo 下位机C程序
💻 H
字号:
//*********************************************************************************
//*               ST 7538/40 DEMOBOARD SOFTWARE 	  global.h                      *
//*                                                                               *
//*               Global constants/macros/variables     V2.0                      *
//*
//*
//*
//* Structure of file:
//*			- Type Definition --> Definition of new types
//*			- Headers         --> File headers
//*     - Data used:      --> Data (constant and variable) and macros
//*           - Main 			--> FW and Board, CR and dual channel data
//*						- Timer     --> Timers used in all sections
//*           - Phy Layer --> SPI and Pin control data
//*           - Ping      --> Ping data
//*********************************************************************************


#ifndef __GLOBAL_H__
    #define __GLOBAL_H__

  #define _DEFVAR   
  #ifdef _DEFVAR
    #define EXTRN
  #else
    #define EXTRN extern
  #endif

  // Types definition
  typedef unsigned char  BYTE;
  typedef unsigned short WORD;

  typedef union { unsigned char field[4];
  	unsigned long whole;
  } long_type;
  
  #define	TRUE 	1
  #define FALSE	0

  // Headers
  #include <stdio.h>
  #include <string.h>
  #include <stdlib.h>

  #include "PLM_Map_7265.h"
  #include "IO.h"
  #include "timer.h"
  #include "Phy_Layer.h"
  #include "ping.h"
  #include "crc.h"
  #include "debug.h"

  #pragma DATA_SEG APP_RAM
  
  //*********************************************************
  // Main 
  //*********************************************************
  // Macros
  #define DI				asm sim;		// Interrupt
  #define EI				asm rim;
  #define SET_PLM_ID_PORT()	PCDDR&=~0x80;PCOR&=~0x80;PDDDR&=~0x40;PDOR&=~0x40			    // PLM Board ID (PC7-PD6)
  #define GET_PLM_ID()		((PCDR&0x80)|(PDDR&0x40))
  #define CH2_SELECT()		(CH2_PORT=((CH2_PORT&~(CH2_MASK|NCH2_MASK))|(CH2_MASK)))	  // Dual channel
  #define CH2_DESELECT()		(CH2_PORT=((CH2_PORT&~(CH2_MASK|NCH2_MASK))|(NCH2_MASK)))
  
  //Constants
  #define   CH2_PORT	    PEDR	        // Dual Channel port
  #define   CH2_DIR		    PEDDR
  #define   CH2_OPT	    	PEOR
  #define   CH2_MASK	    0x02
  #define   NCH2_MASK   	0x10
  #define   ST7538	    	0x00	        // PC7=0 | PD6=0
  #define   ST7540	    	0x40	        // PC7=0 | PD6=1
  //#define OTHER1	    	0x80	        // PC7=1 | PD6=0
  //#define OTHER2	    	0xC0          // PC7=1 | PD6=1
  #define		bps600	  	  0x00          //CR bits of possible baud rates
  #define		bps1200      	0x08
  #define		bps2400    	  0x10
  #define		bps4800     	0x18
  #define   Fw_Desc_PId_ST7540			"ST7540    "	 //must be 10 length (or terminated by \0 char)
  #define   Fw_Desc_PId_ST7538			"ST7538    "
  #define   Fw_Desc_Type      		  "PLM"
  #define   Fw_Desc_Rev      		    "4.0 r"
  #define   Fw_Desc_App_String	    "STM Eval tools"

  // Variables                  
  EXTRN unsigned long	ST7538_CR;						// ST7538/40 Control register (bits from 23 to 0)
  EXTRN BYTE          Modem_Id;							//PLM Board identification code  
  EXTRN char          *Product_Id;            
  EXTRN char          ch;                   // dual channel
  //  EXTRN unsigned char Button; 
  
  
  //*********************************************************
  // Timer 
  //*********************************************************
  // Macros
  #define _200mS_Delay_Elapsed()	TIMEOUT_Expired(tim200ms) //Tx timer (transmission repeated and ping)	 
  #define refresh_200mS_Delay()	TIMEOUT_Refresh(tim200ms)

  #define _4mS_Delay_Elapsed()	TIMEOUT_Expired(tim4ms)			//Ping CDMA slot Timer
  #define refresh_4mS_Delay()		TIMEOUT_Refresh(tim4ms)

  #define _5mS_Delay_Elapsed()	TIMEOUT_Expired(tim5ms)			//WD Timer
  #define refresh_5mS_Delay()		TIMEOUT_Refresh(tim5ms)
  
  // Variables
  EXTRN BYTE          tim4ms,							  //Ping CDMA Timer	 
                      tim5ms,							  //WD Timer
                      tim200ms,             //Tx timer (transmission repeated and ping)
                      timIntA,							//Ping CDMA Max Wait Timer
                      timWait;							//Ping Master Wait Time Timer
  
                      
  //*********************************************************
  // Physical Layer
  //*********************************************************
  // Macros
  #define SET_LED_TOUT(x)		((x)?(PFDR&=~0x08):(PFDR|=0x08))	// LEDs
  #define SET_LED_CDPD(x)		((x)?(PFDR&=~0x10):(PFDR|=0x10))
  #define SET_LED_TX(x)		((x)?(PFDR&=~0x40):(PFDR|=0x40))
  #define SET_LED_RX(x)		((x)?(PFDR&=~0x20):(PFDR|=0x20))
  
  // Constants
  #define SPI_BUFFER_SIZE		128
  #define SPI_BUFFER_MASK		0x7F
 
  #define		SPI_IN_TX_BIT		  0x00	// flag which means SPI in TX MODE
  #define		SPI_IN_RX_BIT		  0x01	// flag which means SPI in RX MODE      
  #define		SPI_LOOP_BIT		  0x03	// makes the program LOOP the data transmission
  #define	  SPI_RXED_SYN_BIT	0x04	// Flag to indicate that Synchromous RX mode is ON
  #define		SPI_REG_BIT			  0x05	// flag which means SPI used in register access
  #define 	SPI_SYNCHRO_BIT		0x06	// Flag to see if we are in synchro mode


  #define		SPI_IN_TX_MASK	    (1<<SPI_IN_TX_BIT)
  #define		SPI_IN_RX_MASK	    (1<<SPI_IN_RX_BIT)
  #define		SPI_LOOP_MASK		    (1<<SPI_LOOP_BIT)
  #define		SPI_RXED_SYN_MASK	  (1<<SPI_RXED_SYN_BIT)       
  #define		SPI_REG_MASK		    (1<<SPI_REG_BIT)
  #define		SPI_SYNCHRO_MASK	  (1<<SPI_SYNCHRO_BIT)
  
  #define	RX_NO_SYN 	0 		// Type of RX
  #define	RX_SYN	    1
  #define	RX_TXDH	    2
  #define	RX_SYN_TXDH	3

  // Variables
  EXTRN char          SPI_Buffer[SPI_BUFFER_SIZE];		//SPI interface to the PLM
  EXTRN BYTE			    SPI_Flags;
  EXTRN unsigned char Repeating_Number;
  EXTRN enum          {REPEAT_MODE_ON=0, REPEAT_MODE_OFF=1} Repeated_Mode;

 
  //*********************************************************
  // Ping 
  //*********************************************************
  // Constants
  
  #define	PS_STOP		0     // Ping status
  #define PS_START	1
  #define PS_WAIT		2
  #define PS_NORX		3
  #define PS_RXOK		4
  #define PS_SEND		5
  
  #define PF_SYNCHRO 0x01 // Ping Flags
  #define PF_RECV		 0x02
  #define PF_MASTER	 0x04
  #define PF_FEC		 0x10
  
  #define PR_OK		  0		  // reponses to PC
  #define PR_FCS		1
  #define PR_NOACK	2
  #define PR_FEC		3
  
  #define NO_ 0x00    // CDMA
  #define	BU_	0x01		// detect if "Band in use" signal is present
  #define	PD_	0x02		// detect if "Preamble detect" signal is present

  // Variables
  EXTRN BYTE 		PING_Flags;
  EXTRN BYTE 		PING_Status;
  EXTRN BYTE		rep_count;
  EXTRN BYTE		repetition;
  EXTRN BYTE		CDMA_Mode;
  EXTRN BYTE		max_slots;
  EXTRN WORD		max_time;
  EXTRN WORD		Wait_time;
  EXTRN long_type msg_num,
  				      old_msg_num,
  				      max_msg_num,
  				      ok_msg,
  				      wrong_msg,
  				      corr_msg,
  				      more_msg;
  EXTRN BYTE		Mast_Add,
  				      Slave_Add,
  				      Slave_Num,
  				      CDMA_flags,Master_Stat[6];



#endif









⌨️ 快捷键说明

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