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

📄 hal.h

📁 shengji chengxu daoshi hezai xiaznai
💻 H
字号:
/* hal.h */

#ifndef HAL_H
#define HAL_H


#ifdef __cplusplus
extern "C"
{
#endif

#ifdef MSP430F449
#include "Msp430x44x.h"
#else
#include "Msp430x43x.h"
#endif

#define OK 0
#define ERROR 0xFF

#define MCU_WAKEUP_IRQ() (_BIC_SR_IRQ(LPM3_bits))
#define MCU_SLEEP_LPM3() (_BIS_SR(LPM3_bits+GIE))
#define MCU_SLEEP_LPM1() (_BIS_SR(LPM1_bits+GIE))
//reboot, this will cause a PUC through WDT key violate
#define SYS_REBOOT()    (WDTCTL = 0)
// disable interrupt
#define _disable_interrupt()  (_DINT())
#define _enable_interrupt()  (_EINT())
#define _no_operation() (_NOP())
#define _clr_wdt() (WDTCTL=WDT_ADLY_1000)


//      MSP430F123   <---> DataFlash
// +---------------+
// |          P6.6 | ---> DATA_FLASH_WP
// |          P6.7 | <--- DATA_FLASH_SO
// |          P6.5 | ---> DATA_FLASH_CS
// |          P6.4 | ---> DATA_FLASH_SCL
// |          P6.3 | ---> DATA_FLASH_SI
// +---------------+
#define DATA_FLASH_WP                              BIT6
#define DATA_FLASH_WP_OUT                             P6OUT
#define DATA_FLASH_SO                              BIT7
#define DATA_FLASH_SO_IN                             P6IN
#define DATA_FLASH_CS                              BIT5
#define DATA_FLASH_CS_OUT                             P6OUT
#define DATA_FLASH_SCL                              BIT4
#define DATA_FLASH_SCL_OUT                             P6OUT
#define DATA_FLASH_SI                              BIT3
#define DATA_FLASH_SI_OUT                             P6OUT


//      MSP430F123   <---> UART
// +---------------+
// |          P2.6 |  ---> UART_TX_EN
// |          P2.4 |  ---> RD_D
// |          P2.5 | <---  RS_R(Interrupt)
// +---------------+
#define UART_TX_EN                  BIT6
#define UART_TX_EN_DIR             P2DIR
#define UART_TX_EN_OUT             P2OUT

#define UART_TX                  BIT4
#define UART_TX_DIR             P2DIR
#define UART_TX_OUT             P2OUT

#define UART_RX                  BIT5
#define UART_RX_DIR             P2DIR
#define UART_RX_IN               P2IN
#define UART_RX_OUT             P2OUT
#define UART_RX_IE               P2IE
#define UART_RX_IES             P2IES
#define UART_RX_IFG             P2IFG
#define UART_RX_SEL             P2SEL



//      MSP430F123   <---> RF Card        
//;        +---------------+
//;        |          P1.3 <---	RF_RX_PIN/RF_OUT_3V
//;        |               |
//;        |          P1.4 --->   	RF_TX_PIN/RF_IN
//;        |               |
//;        |          P1.5/TACLK<---RF_CLK_PIN/RF_CLK_3V
//;        |               |
//;        |          P2.2 ---> 	RF_PWC_PIN  
//;        +---------------+

/* AT88RF256-12 related definitions */

#define    RF_RX_PIN	BIT3         /* 1.3*/
#define 	 RF_RX_PIN_INIT() { P1SEL &= ~RF_RX_PIN; P1DIR &= ~RF_RX_PIN; }
#define 	 RF_RX_PIN_UNINIT() { P1DIR |= RF_RX_PIN; P1OUT &= ~RF_RX_PIN;}
#define 	 RF_RX_BIT()  (P1IN & RF_RX_PIN)

//TX
#define    RF_TX_PIN 	BIT4        	/* 1.4 */
#define 	 RF_TX_PIN_INIT() { P1SEL &= ~RF_TX_PIN; P1DIR |= RF_TX_PIN; }

#define 	 RF_TX_0()  P1OUT &= ~RF_TX_PIN;
#define 	 RF_TX_1()  P1OUT |= RF_TX_PIN;
//CLK
#define    RF_CLK_PIN  	BIT5    	/* 1.5 */ //rf clk input as TA clock source
#define 	 RF_CLK_PIN_INIT() { P1SEL |= RF_CLK_PIN; P1DIR &= ~RF_CLK_PIN; }
#define 	 RF_CLK_PIN_UNINIT() { P1SEL &= ~RF_CLK_PIN; P1DIR |= RF_CLK_PIN; P1OUT &= ~RF_CLK_PIN; }

//PWC
#define 	 RF_PWC_PIN  	BIT2/* 2.2 */
#define 	 RF_PWC_PIN_INIT() { P2SEL &= ~RF_PWC_PIN; P2DIR |= RF_PWC_PIN; }

#define 	 RF_PWC_ON()  P2OUT &= ~RF_PWC_PIN;
#define 	 RF_PWC_OFF()  P2OUT |= RF_PWC_PIN;


//      MSP430F123   <---> KEY
// +---------------+
// |          P1.7 | <---  KEY(Interrupt)
// +---------------+
#define KEY                  BIT7
#define KEY_DIR             P1DIR
#define KEY_IN               P1IN
#define KEY_OUT             P1OUT
#define KEY_IE               P1IE
#define KEY_IES             P1IES
#define KEY_IFG             P1IFG
#define KEY_SEL             P1SEL

//      MSP430F123   <---> KEY2
// +---------------+
// |          P2.0 | <---  KEY2(Interrupt)
// +---------------+
#define KEY2                  BIT0
#define KEY2_DIR             P2DIR
#define KEY2_IN               P2IN
#define KEY2_OUT             P2OUT
#define KEY2_IE               P2IE
#define KEY2_IES             P2IES
#define KEY2_IFG             P2IFG
#define KEY2_SEL             P2SEL

//      MSP430F123   <---> KEY3
// +---------------+
// |          P2.1 | <---  KEY3(Interrupt)
// +---------------+
#define KEY3                  BIT1
#define KEY3_DIR             P2DIR
#define KEY3_IN               P2IN
#define KEY3_OUT             P2OUT
#define KEY3_IE               P2IE
#define KEY3_IES             P2IES
#define KEY3_IFG             P2IFG
#define KEY3_SEL             P2SEL

// Power FOUT ( MSP430F435 --> PWR_FOUT )
// +---------------+
// |          P1.6 |  <--- PWR_F0
// |          P1.7 |  <--- PWR_F1
// +---------------+
#define PWR_F0                    BIT6
#define PWR_F0_IN                 P1IN

#define PWR_F1                    BIT7
#define PWR_F1_IN                 P1IN

// WDI管脚定义 ( MSP430F435 --> WDI )
// +---------------+
// |          P6.1 |  ---> WDI
// +---------------+
#define WDI                       BIT1
#define WDI_OUT                  P6OUT
#define WDI_DIR                  P6DIR
// 74HC595管脚定义 ( MSP430F435 --> 74HC595 )
// +---------------+
// |          P6.2 |  ---> STCP
// |          P6.3 |  ---> MR
// |          P6.4 |  ---> SHCP
// |          P6.5 |  ---> DS
// +---------------+
#define STCP                      BIT2
#define STCP_OUT                 P6OUT
#define STCP_DIR                 P6DIR

#define MR                        BIT3
#define MR_DIR                   P6DIR
#define MR_OUT                   P6OUT

#define SHCP                      BIT4
#define SHCP_DIR                 P6DIR
#define SHCP_OUT                 P6OUT

#define DS                        BIT5
#define DS_DIR                   P6DIR
#define DS_OUT                   P6OUT

#define EXTIO_PF0()  (P6OUT&=~(STCP|MR|SHCP|DS))

//      MSP430F123   <---> PWR_MONITOR
// +---------------+
// |          P2.3 | <---  PWR_MONITOR(Input)
// +---------------+
#define PWR_MONITOR                  BIT3
#define PWR_MONITOR_DIR             P2DIR
#define PWR_MONITOR_IN               P2IN
#define PWR_MONITOR_OUT             P2OUT
#define PWR_MONITOR_IE               P2IE
#define PWR_MONITOR_IES             P2IES
#define PWR_MONITOR_IFG             P2IFG
#define PWR_MONITOR_SEL             P2SEL



//      MSP430F123   <---> LED
// +---------------+
// |          P3.5 | <---  LED
// +---------------+
#define LED                  BIT5
#define LED_OUT             P3OUT


//      MSP430F123   <---> BEEP
// +---------------+
// |          P3.4 | <---  BEEP
// +---------------+
#define BEEP                  BIT4
#define BEEP_OUT             P3OUT



// I/O init value
// P1.0----no use
// P1.1----no use
// P1.2----no use
// P1.3----RF_OUT_3V
// P1.4----RF_IN
// P1.5----RF_CLK_3V
// P1.6----no use
// P1.7----KEY1
#define P1_NO_USE (BIT0|BIT1|BIT2|BIT6)
#define P1SEL_VAL 0
#define P1DIR_VAL (RF_TX_PIN+RF_CLK_PIN|P1_NO_USE)
#define P1OUT_VAL (RF_TX_PIN+RF_CLK_PIN)
#define P1IES_VAL (0)
#define P1IE_VAL (0)

// P2.0----KEY2
// P2.1----KEY3
// P2.2----RF_PWC_PIN
// P2.3----PWR_MONITOR
// P2.4----UART_TX
// P2.5----UART_RX
// P2.6----UART_TX_EN
// P2.7----no used
#define P2_NO_USE (BIT7)
#define P2SEL_VAL (UART_RX|UART_TX)
#define P2DIR_VAL (UART_TX_EN+RF_PWC_PIN+UART_TX|P2_NO_USE)
#define P2OUT_VAL (UART_TX_EN+RF_PWC_PIN+UART_TX)
#define P2IES_VAL (0)
#define P2IE_VAL (0)
// P3.0----no used
// P3.1----no used
// P3.2----no used
// P3.3----no used
// P3.4----BEEP
// P3.5----LED
// P3.6----no used
// P3.7----no used
#define P3_NO_USE (BIT0|BIT1|BIT2|BIT3|BIT6|BIT7)
#define P3SEL_VAL (P3_NO_USE)
#define P3DIR_VAL (LED+BEEP|P3_NO_USE)
#define P3OUT_VAL (LED+BEEP)

// P4.0----no used
// P4.1----no used
// P4.2----no used
// P4.3----no used
// P4.4----no used
// P4.5----no used
// P4.6----no used
// P4.7----no used
#define P4SEL_VAL (0xFF)
#define P4DIR_VAL (0)
#define P4OUT_VAL (0)

// P5.0----no used
// P5.1----no used
// P5.2----no used
// P5.3----no used
// P5.4----no used
// P5.5----no used
// P5.6----no used
// P5.7----no used
#define P5SEL_VAL (0xFF)
#define P5DIR_VAL (0)
#define P5OUT_VAL (0)

// P6.0----no used
// P6.1----no used
// P6.2----no used
// P6.3----DATA_FLASH_SI
// P6.4----DATA_FLASH_SCL
// P6.5----DATA_FLASH_CS
// P6.6----DATA_FLASH_WP
// P6.7----DATA_FLASH_SO
#define P6DIR_VAL     (STCP+MR+SHCP+DS)
#define P6OUT_VAL     (STCP+MR+SHCP+DS)

#ifdef __cplusplus
}
#endif


#endif /* HAL_H */

⌨️ 快捷键说明

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