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