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

📄 ports.c

📁 该程序是ST7MC驱动BLDC120
💻 C
字号:
/**************** (c) 2004 STMicroelectronics **********************

PROJECT  : ST7MC demokit
COMPILER : ST7 METROWERKS C (HIWARE) / COSMIC

MODULE  :  ports.c
LIBRARY VERSION  :  1.0.2

CREATION DATE :    04.2005
AUTHOR :      Jiang Jian-guo	/  Microcontroller Competence center  / ST Shang Hai

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

DESCRIPTION :  I/O line control routines

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

 ******************************************************************************
 THE SOFTWARE INCLUDED IN THIS FILE IS FOR GUIDANCE ONLY. ST MICROELECTRONICS
 SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES
 WITH RESPECT TO ANY CLAIMS ARISING FROM USE OF THIS SOFTWARE.
 ******************************************************************************
              
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

******************************************************************************/
                            
#include "lib.h"
#include "ST7MC_hr.h"
#include "ports.h"
#include "it_ST7MC.h"
/*
#define  START_BUTTON			4
#define  START_BUTTON_PORT		PADR
#define  V_PLUS_BUTTON			2
#define  V_PLUS_BUTTON_PORT		PFDR
#define  V_MINUS_BUTTON			7
#define  V_MINUS_BUTTON_PORT	PCDR
*/
#define		Led			((u8)0x20)	// PA5
#define 	LEDPort		PADR
//#define		PB7		7

//u8 key_state;      // status of key panel
#define KEY_IDLE		0
#define KEY_IDLE_NEXT	1
#define KEY_PUSHED		2

//u8 Flag_port;      // flag used for LED on/off reference


/*-----------------------------------------------------------------------------
ROUTINE NAME : PORTS_Init
INPUT/OUTPUT : None

DESCRIPTION  : Configure the ports

COMMENTS     :
-----------------------------------------------------------------------------*/
void PORTS_Init(void)       // Setting for 56 pins case of Starter kit
{

	PADDR    = 0x20;       	//PA7,PA6, PA4-PA0, floating Input
	PAOR	 = 0x20;        //PA5 push pull output
	PADR	|= 0x20;		//led off

  	PBDDR    = 0x00; 		//PB7 to PB0 floating Input
	PBOR     = 0x00;        

	PCDDR    = 0x40; 		//PC7,PC5 to PC0 floating Input
	PCOR     = 0x40;        //PC6 output

	PDDDR    = 0x82; 		//PD6 to PD0 floating Input
	PDOR     = 0x82;        //PD7,PD1 push-pull Output   
	PDDR	|= 0x80;		//TD0: 1(Mark)
    
//	PEDDR    = 0x00;        //PE7 to PE0 floating Input            
//	PEOR     = 0x00;        

//	PFDDR    = 0x00;        //PF7 to PF0 floating Input           
//	PFOR     = 0x00;        

	//Flag_port=key_state=0;
//	key_state=0;
}


/*-----------------------------------------------------------------------------
ROUTINE NAME : PORTS_RedLedOn; PORTS_RedLedOff; PORTS_RedLedToggle
					PORTS_GreenLedOn; PORTS_GreenLedOff; PORTS_GreenLedToggle
					PORTS_RedGreenLedToggle; PORTS_BothLedOff
INPUT/OUTPUT : None

DESCRIPTION  : Set/Reset/Toggle Red or Green  or Both LED

COMMENTS     :
-----------------------------------------------------------------------------*/
void PORTS_LedOn(void)
{
//	Flag_port &= (u8)~BothLedFlash;          // stop flashing LED if previously selected

//	PBDDR |= Led; 					//PB7 push-pull Output
//	PBOR  |= Led;        
	LEDPort  &= (u8)(~Led);			// ((u8)0x80)
}

void PORTS_LedOff(void)
{
//	Flag_port &= (u8)~BothLedFlash;          // stop flashing LED if previously selected

//	PBOR  &= (u8)~Led;      // touch PBOR first
//	PBDDR &= (u8)~Led; 		// then PBDDR -> PB7 Floating Input
	LEDPort  |= Led;			 
}
/*
void PORTS_RedLedToggle(void)
{
if (ValBit(PBDDR,PB7))    // push-pull config?
		{
		PBOR  &= (u8)~Led;
		PBDDR &= (u8)~Led; 				//Toggle PB7 direction (Floating Input or push-pull Output)
    	}
else
		{
		PBDDR |= Led; 				//Toggle PB7 direction (Floating Input or push-pull Output)
		PBOR  |= Led;
		PBDR  |= Led;				// ((u8)0x80)
		}
}

void PORTS_GreenLedOn(void)
{
	Flag_port &= (u8)~BothLedFlash;          // stop flashing LED if previously selected

	PBDDR |= Led; 				//PB7 push-pull Output
	PBOR  |= Led;        
	PBDR 	&= (u8)~Led;		// ((u8)0x00)
}

void PORTS_GreenLedOff(void)
{
	Flag_port &= (u8)~BothLedFlash;          // stop flashing LED if previously selected
       
	PBOR  &= (u8)~Led;      // touch first PBOR
	PBDDR &= (u8)~Led; 		// then PBDDR -> PB7 Floating Input
}

void PORTS_GreenLedToggle(void)
{
	if (ValBit(PBDDR,PB7))          // output config?
		{
		PBOR  &= (u8)~Led;
		PBDDR &= (u8)~Led; 				//Toggle PB7 direction (Floating Input or push-pull Output)
    	}
	else
		{
		PBDDR |= Led; 				//Toggle PB7 direction (Floating Input or push-pull Output)
		PBOR  |= Led;
		PBDR  &= (u8)~Led;		// ((u8)0x00)
		}
}

void PORTS_RedGreenLedToggle(void)
{
if (!ValBit(PBDDR,PB7))
	{
	PBDDR |= Led; 				//Toggle PB7 direction (Floating Input or push-pull Output)
	PBOR  |= Led; 
	}
	PBDR ^= Led;
}	

void PORTS_BothLedOff(void)
{
	Flag_port &= (u8)~BothLedFlash;          // stop flashing LED if previously selected

	PBDDR &= (u8)~Led; 		//PB7 Floating Input
	PBOR  &= (u8)~Led;
}


void Flash_Red_Led(void)
{
	Flag_port &= (u8)~BothLedFlash;          // flash red LED 
	Flag_port |= RedLedFlash;
}

void Flash_Green_Led(void)
{
	Flag_port &= (u8)~BothLedFlash;          // flash green LED
	Flag_port |= GreenLedFlash;
}

void Flash_Both_Led(void)
{
Flag_port |= BothLedFlash;                  // flah red & green LED
}

*/
/*-----------------------------------------------------------------------------
ROUTINE Name :  key_scan
Description :  return TRUE if button is pushed and released
-----------------------------------------------------------------------------*/ 
/*
u8 key_scan(void)
{
	if ( !ValBit(START_BUTTON_PORT,START_BUTTON) || !ValBit(V_PLUS_BUTTON_PORT,V_PLUS_BUTTON) || !ValBit(V_MINUS_BUTTON_PORT,V_MINUS_BUTTON) ) // Button released (Pull-up resistor)
	{
  		switch(key_state)
		{
			case KEY_PUSHED:
               	if (DebounceButton == 0) 
		    	{
		    		key_state = KEY_IDLE_NEXT;
		    		if (!ValBit(START_BUTTON_PORT,START_BUTTON)) return(START_KEY);
		    		else if (!ValBit(V_PLUS_BUTTON_PORT,V_PLUS_BUTTON)) return(V_PLUS_KEY);
		    		else return(V_MINUS_KEY);		    	
		    	}
//				else return(IDLE_KEY);
				break;
			case KEY_IDLE:
				DebounceButton = 5;	// 50ms debounce time
	            key_state = KEY_PUSHED;
//				return(IDLE_KEY);
				break;
        	case KEY_IDLE_NEXT:
			default:
//				return(IDLE_KEY);
				break;
		}
	}
	else 
	{
		key_state = KEY_IDLE;		
//		return(IDLE_KEY);
	}
	return(IDLE_KEY);			
}
*/
/*** (c) 2004  STMicroelectronics ****************** END OF FILE ***/


⌨️ 快捷键说明

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