📄 ports.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 + -