132 lines
6.1 KiB
C
132 lines
6.1 KiB
C
#ifndef _REG_EXTI_H_
|
|
#define _REG_EXTI_H_
|
|
|
|
#include "reg_base.h"
|
|
|
|
//================================
|
|
//BLOCK EXTI define
|
|
|
|
#define EXTI_BASE ((uint32_t)0x40028000)
|
|
#define EXTI_IER_ADDR_OFFSET 0x000
|
|
#define EXTI_IDR_ADDR_OFFSET 0x004
|
|
#define EXTI_IVS_ADDR_OFFSET 0x008
|
|
#define EXTI_RIF_ADDR_OFFSET 0x00c
|
|
#define EXTI_IFM_ADDR_OFFSET 0x010
|
|
#define EXTI_ICR_ADDR_OFFSET 0x014
|
|
#define EXTI_RTS_ADDR_OFFSET 0x018
|
|
#define EXTI_FTS_ADDR_OFFSET 0x01c
|
|
#define EXTI_SWI_ADDR_OFFSET 0x020
|
|
#define EXTI_ADTE_ADDR_OFFSET 0x024
|
|
#define EXTI_DB_ADDR_OFFSET 0x028
|
|
#define EXTI_DBC_ADDR_OFFSET 0x02c
|
|
|
|
//================================
|
|
//BLOCK EXTI reg struct define
|
|
typedef union //0x000
|
|
{
|
|
struct
|
|
{
|
|
uint32_t EXTI_SRC0: 1; // bit0
|
|
uint32_t EXTI_SRC1: 1; // bit1
|
|
uint32_t EXTI_SRC2: 1; // bit2
|
|
uint32_t EXTI_SRC3: 1; // bit3
|
|
uint32_t EXTI_SRC4: 1; // bit4
|
|
uint32_t EXTI_SRC5: 1; // bit5
|
|
uint32_t EXTI_SRC6: 1; // bit6
|
|
uint32_t EXTI_SRC7: 1; // bit7
|
|
uint32_t EXTI_SRC8: 1; // bit8
|
|
uint32_t EXTI_SRC9: 1; // bit9
|
|
uint32_t EXTI_SRC10: 1; // bit10
|
|
uint32_t EXTI_SRC11: 1; // bit11
|
|
uint32_t EXTI_SRC12: 1; // bit12
|
|
uint32_t EXTI_SRC13: 1; // bit13
|
|
uint32_t EXTI_SRC14: 1; // bit14
|
|
uint32_t EXTI_SRC15: 1; // bit15
|
|
uint32_t EXTI_SRC16: 1; // bit16
|
|
uint32_t EXTI_SRC17: 1; // bit17
|
|
uint32_t EXTI_SRC18: 1; // bit18
|
|
uint32_t EXTI_SRC19: 1; // bit19
|
|
uint32_t RSV_END: 12; // bit[31:20]
|
|
};
|
|
uint32_t Word;
|
|
} EXTI_LOCA_TypeDef; //0x000
|
|
|
|
//================================
|
|
#define EXTI_LOCAL_SRC0_POS 0
|
|
#define EXTI_LOCAL_SRC1_POS 1
|
|
#define EXTI_LOCAL_SRC2_POS 2
|
|
#define EXTI_LOCAL_SRC3_POS 3
|
|
#define EXTI_LOCAL_SRC4_POS 4
|
|
#define EXTI_LOCAL_SRC5_POS 5
|
|
#define EXTI_LOCAL_SRC6_POS 6
|
|
#define EXTI_LOCAL_SRC7_POS 7
|
|
#define EXTI_LOCAL_SRC8_POS 8
|
|
#define EXTI_LOCAL_SRC9_POS 9
|
|
#define EXTI_LOCAL_SRC10_POS 10
|
|
#define EXTI_LOCAL_SRC11_POS 11
|
|
#define EXTI_LOCAL_SRC12_POS 12
|
|
#define EXTI_LOCAL_SRC13_POS 13
|
|
#define EXTI_LOCAL_SRC14_POS 14
|
|
#define EXTI_LOCAL_SRC15_POS 15
|
|
#define EXTI_LOCAL_SRC16_POS 16
|
|
#define EXTI_LOCAL_SRC17_POS 17
|
|
#define EXTI_LOCAL_SRC18_POS 18
|
|
#define EXTI_LOCAL_SRC19_POS 19
|
|
//================================
|
|
|
|
typedef union //0x02c
|
|
{
|
|
struct
|
|
{
|
|
uint32_t DB_CNT: 3; // bit[2:0] --- debounce cnts, db_cnt = db_cnt_val + 1
|
|
uint32_t RSV_NOUSE1: 5; // bit[7:3] --- Ignore me
|
|
uint32_t DB_PRE: 8; // bit[15:8]--- debounce one cnt include current clk cycles, db_pre = db_pre_val + 1
|
|
uint32_t RSV_END: 16; // bit[31:16]
|
|
};
|
|
uint32_t Word;
|
|
} EXTI_DBC_TypeDef; //0x02c
|
|
|
|
|
|
|
|
//================================
|
|
#define EXTI_DB_CNT_LSB 0
|
|
#define EXTI_DB_CNT_WIDTH 3
|
|
#define EXTI_DB_PRE_LSB 8
|
|
#define EXTI_DB_PRE_WIDTH 8
|
|
//================================
|
|
|
|
//================================
|
|
//BLOCK EXTI top struct define
|
|
typedef struct
|
|
{
|
|
__O EXTI_LOCA_TypeDef IER; // 0x000,
|
|
// exti interrupt enable register
|
|
__O EXTI_LOCA_TypeDef IDR; // 0x004,
|
|
// exti interrupt disable register
|
|
__I EXTI_LOCA_TypeDef IVS; // 0x008,
|
|
// exti interrupt valid status register
|
|
__I EXTI_LOCA_TypeDef RIF; // 0x00c,
|
|
// exti raw interrupt flag status register
|
|
__I EXTI_LOCA_TypeDef IFM; // 0x010,
|
|
// exti interrupt flag masked status register
|
|
__O EXTI_LOCA_TypeDef ICR; // 0x014,
|
|
// exti interrupt clear register
|
|
__IO EXTI_LOCA_TypeDef RTS; // 0x018,
|
|
// exti rising edge trigger selection register
|
|
__IO EXTI_LOCA_TypeDef FTS; // 0x01c,
|
|
// exti falling edge trigger selection register
|
|
__IO EXTI_LOCA_TypeDef SWI; // 0x020,
|
|
// exti software interrupt event register
|
|
__IO EXTI_LOCA_TypeDef ADTE; // 0x024,
|
|
// exti ad trigger enable
|
|
__IO EXTI_LOCA_TypeDef DB; // 0x028,
|
|
// exti input debounce enable register
|
|
__IO EXTI_DBC_TypeDef DBC; // 0x02c,
|
|
// exti input debounce sample rate control register
|
|
} EXTI_TypeDef;
|
|
|
|
|
|
#define EXTI (( EXTI_TypeDef *) EXTI_BASE)
|
|
|
|
#endif
|