2023-10-06 18:47:05 +08:00
|
|
|
|
#ifndef GPIO_CFG_H_
|
|
|
|
|
#define GPIO_CFG_H_
|
|
|
|
|
#include "base/define.h"
|
|
|
|
|
|
|
|
|
|
//具体实现思想,参考<<CM3权威指南>>第五章(87页~92页).
|
|
|
|
|
//IO口操作宏定义
|
|
|
|
|
#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))
|
|
|
|
|
#define MEM_ADDR_(addr) *((volatile unsigned long *)(addr))
|
|
|
|
|
#define BIT_ADDR_(addr, bitnum) MEM_ADDR_(BITBAND(addr, bitnum))
|
|
|
|
|
//IO口地址映射
|
|
|
|
|
#define GPIOA_ODR_Addr (GPIOA_BASE+12) //0x4001080C
|
|
|
|
|
#define GPIOB_ODR_Addr (GPIOB_BASE+12) //0x40010C0C
|
|
|
|
|
#define GPIOC_ODR_Addr (GPIOC_BASE+12) //0x4001100C
|
|
|
|
|
#define GPIOD_ODR_Addr (GPIOD_BASE+12) //0x4001140C
|
|
|
|
|
#define GPIOE_ODR_Addr (GPIOE_BASE+12) //0x4001180C
|
|
|
|
|
#define GPIOF_ODR_Addr (GPIOF_BASE+12) //0x40011A0C
|
|
|
|
|
#define GPIOG_ODR_Addr (GPIOG_BASE+12) //0x40011E0C
|
|
|
|
|
|
|
|
|
|
#define GPIOA_IDR_Addr (GPIOA_BASE+8) //0x40010808
|
|
|
|
|
#define GPIOB_IDR_Addr (GPIOB_BASE+8) //0x40010C08
|
|
|
|
|
#define GPIOC_IDR_Addr (GPIOC_BASE+8) //0x40011008
|
|
|
|
|
#define GPIOD_IDR_Addr (GPIOD_BASE+8) //0x40011408
|
|
|
|
|
#define GPIOE_IDR_Addr (GPIOE_BASE+8) //0x40011808
|
|
|
|
|
#define GPIOF_IDR_Addr (GPIOF_BASE+8) //0x40011A08
|
|
|
|
|
#define GPIOG_IDR_Addr (GPIOG_BASE+8) //0x40011E08
|
|
|
|
|
|
|
|
|
|
//IO口操作,只对单一的IO口!
|
|
|
|
|
//确保n的值小于16!
|
|
|
|
|
#define PAout(n) BIT_ADDR_(GPIOA_ODR_Addr,n) //输出
|
|
|
|
|
#define PAin(n) BIT_ADDR_(GPIOA_IDR_Addr,n) //输入
|
|
|
|
|
|
|
|
|
|
#define PBout(n) BIT_ADDR_(GPIOB_ODR_Addr,n) //输出
|
|
|
|
|
#define PBin(n) BIT_ADDR_(GPIOB_IDR_Addr,n) //输入
|
|
|
|
|
|
|
|
|
|
#define PCout(n) BIT_ADDR_(GPIOC_ODR_Addr,n) //输出
|
|
|
|
|
#define PCin(n) BIT_ADDR_(GPIOC_IDR_Addr,n) //输入
|
|
|
|
|
|
|
|
|
|
#define PDout(n) BIT_ADDR_(GPIOD_ODR_Addr,n) //输出
|
|
|
|
|
#define PDin(n) BIT_ADDR_(GPIOD_IDR_Addr,n) //输入
|
|
|
|
|
|
|
|
|
|
#define PEout(n) BIT_ADDR_(GPIOE_ODR_Addr,n) //输出
|
|
|
|
|
#define PEin(n) BIT_ADDR_(GPIOE_IDR_Addr,n) //输入
|
|
|
|
|
|
|
|
|
|
#define PFout(n) BIT_ADDR_(GPIOF_ODR_Addr,n) //输出
|
|
|
|
|
#define PFin(n) BIT_ADDR_(GPIOF_IDR_Addr,n) //输入
|
|
|
|
|
|
|
|
|
|
#define PGout(n) BIT_ADDR_(GPIOG_ODR_Addr,n) //输出
|
|
|
|
|
#define PGin(n) BIT_ADDR_(GPIOG_IDR_Addr,n) //输入
|
|
|
|
|
|
|
|
|
|
#define VCC_2V5_Pin GPIO_Pin_1
|
|
|
|
|
#define VCC_2V5_Pin_Nu 1
|
|
|
|
|
#define VCC_2V5_GPIO_Port GPIOA
|
|
|
|
|
|
|
|
|
|
#define R_AD_01_Pin GPIO_Pin_3
|
|
|
|
|
#define R_AD_01_Nu 3
|
|
|
|
|
#define R_AD_01_Port GPIOA
|
|
|
|
|
|
|
|
|
|
#define VCC_1V25_Pin GPIO_Pin_3
|
|
|
|
|
#define VCC_1V25_Pin_Nu 3
|
|
|
|
|
#define VCC_1V25_GPIO_Port GPIOA
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define C_H_DAC_Pin GPIO_Pin_4
|
|
|
|
|
#define C_H_DAC_Pin_Nu 4
|
|
|
|
|
#define C_H_DAC_GPIO_Port GPIOA
|
|
|
|
|
|
|
|
|
|
#define C_M_DAC_Pin GPIO_Pin_5
|
|
|
|
|
#define C_M_DAC_Pin_Nu 5
|
|
|
|
|
#define C_M_DAC_GPIO_Port GPIOA
|
|
|
|
|
|
|
|
|
|
#define V_LA_M_Pin GPIO_Pin_6
|
|
|
|
|
#define V_LA_M_Pin_Nu 6
|
|
|
|
|
#define V_LA_M_GPIO_Port GPIOA
|
|
|
|
|
|
|
|
|
|
#define V_LA_H_Pin GPIO_Pin_7
|
|
|
|
|
#define V_LA_H_Pin_Nu 7
|
|
|
|
|
#define V_LA_H_GPIO_Port GPIOA
|
|
|
|
|
|
|
|
|
|
#define LAVC_M_Pin GPIO_Pin_8
|
|
|
|
|
#define LAVC_M_Pin_Nu 8
|
|
|
|
|
#define LAVC_M_GPIO_Port GPIOA
|
|
|
|
|
|
|
|
|
|
#define USART1_TX_Pin GPIO_Pin_9
|
|
|
|
|
#define USART1_TX_Pin_Nu 9
|
|
|
|
|
#define USART1_TX_GPIO_Port GPIOA
|
|
|
|
|
|
|
|
|
|
#define USART1_RX_Pin GPIO_Pin_10
|
|
|
|
|
#define USART1_RX_Pin_Nu 10
|
|
|
|
|
#define USART1_RX_GPIO_Port GPIOA
|
|
|
|
|
|
|
|
|
|
#define CAN1_RX_Pin GPIO_Pin_10
|
|
|
|
|
#define CAN1_RX_Pin_Nu 11
|
|
|
|
|
#define CAN1_RX_GPIO_Port GPIOA
|
|
|
|
|
|
|
|
|
|
#define CAN1_TX_Pin GPIO_Pin_11
|
|
|
|
|
#define CAN1_TX_Pin_Nu 12
|
|
|
|
|
#define CAN1_TX_GPIO_Port GPIOA
|
|
|
|
|
|
|
|
|
|
#define SEG0_Pin GPIO_Pin_15
|
|
|
|
|
#define SEG0_Pin_Nu 15
|
|
|
|
|
#define SEG0_GPIO_Port GPIOA
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define R10_ON_Pin GPIO_Pin_0
|
|
|
|
|
#define R10_ON_Pin_Nu 0
|
|
|
|
|
#define R10_ON_GPIO_Port GPIOB
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define R510_ON_Pin GPIO_Pin_1
|
|
|
|
|
#define R510_ON_Pin_Nu 1
|
|
|
|
|
#define R510_ON_GPIO_Port GPIOB
|
|
|
|
|
|
|
|
|
|
#define LED1_Pin GPIO_Pin_2
|
|
|
|
|
#define LED1_Pin_Nu 2
|
|
|
|
|
#define LED1_GPIO_Port GPIOB
|
|
|
|
|
|
|
|
|
|
#define IO_CAP_AD_Pin GPIO_Pin_5
|
|
|
|
|
#define IO_CAP_AD_Pin_Nu 5
|
|
|
|
|
#define IO_CAP_AD_Port GPIOB
|
|
|
|
|
|
|
|
|
|
#define FIRE_TEST_Pin GPIO_Pin_8
|
|
|
|
|
#define FIRE_TEST_Pin_Nu 8
|
|
|
|
|
#define FIRE_TEST_Port GPIOB
|
|
|
|
|
|
|
|
|
|
#define IO_APD12_Pin GPIO_Pin_9
|
|
|
|
|
#define IO_APD12_Pin_Nu 9
|
|
|
|
|
#define IO_APD12_GPIO_Port GPIOB
|
|
|
|
|
|
|
|
|
|
#define I2IC_SCL_Pin GPIO_Pin_10
|
|
|
|
|
#define I2IC_SCL_Pin_Nu 10
|
|
|
|
|
#define I2IC_SCL_GPIO_Port GPIOB
|
|
|
|
|
|
|
|
|
|
#define I2IC_SDA_Pin GPIO_Pin_11
|
|
|
|
|
#define I2IC_SDA_Pin_Nu 11
|
|
|
|
|
#define I2IC_SDA_GPIO_Port GPIOB
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define LED2_Pin GPIO_Pin_12
|
|
|
|
|
#define LED2_Pin_Nu 12
|
|
|
|
|
#define LED2_GPIO_Port GPIOB
|
|
|
|
|
|
|
|
|
|
#define OUTAL_Pin GPIO_Pin_13
|
|
|
|
|
#define OUTAL_Pin_Nu 13
|
|
|
|
|
#define OUTAL_GPIO_Port GPIOB
|
|
|
|
|
|
|
|
|
|
#define OUTBL_Pin GPIO_Pin_14
|
|
|
|
|
#define OUTBL_Pin_Nu 14
|
|
|
|
|
#define OUTBL_GPIO_Port GPIOB
|
|
|
|
|
|
|
|
|
|
#define OUTAH_Pin GPIO_Pin_15
|
|
|
|
|
#define OUTAH_Pin_Nu 15
|
|
|
|
|
#define OUTAH_GPIO_Port GPIOB
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define AD_OUTA_Pin GPIO_Pin_0
|
|
|
|
|
#define AD_OUTA_Pin_Nu 0
|
|
|
|
|
#define AD_OUTA_Port GPIOC
|
|
|
|
|
|
|
|
|
|
#define AD_OUTB_Pin GPIO_Pin_1
|
|
|
|
|
#define AD_OUTB_Pin_Nu 1
|
|
|
|
|
#define AD_OUTB_Port GPIOC
|
|
|
|
|
|
|
|
|
|
#define AN_UA_Pin GPIO_Pin_2
|
|
|
|
|
#define AN_UA_Pin_Nu 2
|
|
|
|
|
#define AN_UA_Port GPIOC
|
|
|
|
|
|
|
|
|
|
#define AN_MAL_Pin GPIO_Pin_3
|
|
|
|
|
#define AN_MAL_Pin_Nu 3
|
|
|
|
|
#define AN_MAL_Port GPIOC
|
|
|
|
|
|
|
|
|
|
#define R100_ON_Pin GPIO_Pin_4
|
|
|
|
|
#define R100_ON_Pin_Nu 4
|
|
|
|
|
#define R100_ON_GPIO_Port GPIOC
|
|
|
|
|
|
|
|
|
|
#define AN_CAP_AD_Pin GPIO_Pin_5
|
|
|
|
|
#define AN_CAP_AD_Pin_Nu 5
|
|
|
|
|
#define AN_CAP_AD_Port GPIOC
|
|
|
|
|
|
|
|
|
|
#define OUTBH_Pin GPIO_Pin_6
|
|
|
|
|
#define OUTBH_Pin_Nu 6
|
|
|
|
|
#define OUTBH_GPIO_Port GPIOC
|
|
|
|
|
|
|
|
|
|
#define POWER_ON_Pin GPIO_Pin_7
|
|
|
|
|
#define POWER_ON_Pin_Nu 7
|
|
|
|
|
#define POWER_ON_GPIO_Port GPIOC
|
|
|
|
|
|
|
|
|
|
#define SEG4_Pin GPIO_Pin_8
|
|
|
|
|
#define SEG4_Pin_Nu 8
|
|
|
|
|
#define SEG4_GPIO_Port GPIOC
|
|
|
|
|
|
|
|
|
|
#define SEG3_Pin GPIO_Pin_9
|
|
|
|
|
#define SEG3_Pin_Nu 9
|
|
|
|
|
#define SEG3_GPIO_Port GPIOC
|
|
|
|
|
|
|
|
|
|
#define SEG1_Pin GPIO_Pin_10
|
|
|
|
|
#define SEG1_Pin_Nu 10
|
|
|
|
|
#define SEG1_GPIO_Port GPIOC
|
|
|
|
|
|
|
|
|
|
#define SEG2_Pin GPIO_Pin_11
|
|
|
|
|
#define SEG2_Pin_Nu 11
|
|
|
|
|
#define SEG2_GPIO_Port GPIOC
|
|
|
|
|
|
|
|
|
|
#define U3_TXD_Pin GPIO_Pin_10
|
|
|
|
|
#define U3_TXD_Pin_Nu 10
|
|
|
|
|
#define U3_TXD_GPIO_Port GPIOC
|
|
|
|
|
|
|
|
|
|
#define U3_RXD_Pin GPIO_Pin_11
|
|
|
|
|
#define U3_RXD_Pin_Nu 11
|
|
|
|
|
#define U3_RXD_GPIO_Port GPIOC
|
|
|
|
|
|
|
|
|
|
#define IO_APD22_Pin GPIO_Pin_13
|
|
|
|
|
#define IO_APD22_Pin_Nu 13
|
|
|
|
|
#define IO_APD22_GPIO_Port GPIOC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define IO_APD21_Pin GPIO_Pin_14
|
|
|
|
|
#define IO_APD21_Pin_Nu 14
|
|
|
|
|
#define IO_APD21_GPIO_Port GPIOC
|
|
|
|
|
|
|
|
|
|
#define IO_APD11_Pin GPIO_Pin_15
|
|
|
|
|
#define IO_APD11_Pin_Nu 15
|
|
|
|
|
#define IO_APD11_GPIO_Port GPIOC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define LED2_Out PBout(LED2_Pin_Nu)
|
|
|
|
|
#define LED1_Out PBout(LED1_Pin_Nu)
|
|
|
|
|
#define LED1_Out_On PBout(LED1_Pin_Nu)=0
|
|
|
|
|
#define LED1_Out_Off PBout(LED1_Pin_Nu)=1
|
|
|
|
|
|
|
|
|
|
//电源开关
|
|
|
|
|
|
|
|
|
|
#define POWER_ON {PCout(POWER_ON_Pin_Nu) = 1;}
|
|
|
|
|
#define POWER_OFF {PCout(POWER_ON_Pin_Nu) = 0;}
|
|
|
|
|
|
|
|
|
|
//桥驱动
|
|
|
|
|
#define HMOS_SWITCH_W_1 {PAout(LAVC_M_Pin_Nu)=0; PCout(OUTBH_Pin_Nu)=0;PBout(OUTAL_Pin_Nu)=0; delay_nop(50); PBout(OUTBL_Pin_Nu)=1;PBout(OUTAH_Pin_Nu)=1;}
|
|
|
|
|
#define HMOS_SWITCH_W_0 {PAout(LAVC_M_Pin_Nu)=0; PBout(OUTBL_Pin_Nu)=0;PBout(OUTAH_Pin_Nu)=0; delay_nop(50); PBout(OUTAL_Pin_Nu)=1;PCout(OUTBH_Pin_Nu)=1;}
|
|
|
|
|
|
|
|
|
|
#define HMOS_SWITCH_RW_1 {PCout(OUTBH_Pin_Nu)=0;PBout(OUTAL_Pin_Nu)=0; delay_nop(50); PBout(OUTBL_Pin_Nu)=1;PBout(OUTAH_Pin_Nu)=1;PAout(LAVC_M_Pin_Nu)=1;}
|
|
|
|
|
#define HMOS_SWITCH_RW_0 {PAout(LAVC_M_Pin_Nu)=0; PBout(OUTBL_Pin_Nu)=0;PBout(OUTAH_Pin_Nu)=0; delay_nop(50); PBout(OUTAL_Pin_Nu)=1;PCout(OUTBH_Pin_Nu)=1;}
|
|
|
|
|
|
|
|
|
|
#define HMOS_SWITCH_GND {PCout(OUTBH_Pin_Nu)=0; PAout(LAVC_M_Pin_Nu)=0;PBout(OUTAH_Pin_Nu)=0;delay_nop(50);PBout(OUTBL_Pin_Nu)=1;PBout(OUTAL_Pin_Nu)=1;}
|
|
|
|
|
#define HMOS_SWITCH_OFF {PCout(OUTBH_Pin_Nu)=0; PAout(LAVC_M_Pin_Nu)=0;PBout(OUTAH_Pin_Nu)=0;delay_nop(50);PBout(OUTBL_Pin_Nu)=0;PBout(OUTAL_Pin_Nu)=0;}
|
|
|
|
|
#define HMOS_FAST_DISCHG {PCout(POWER_ON_Pin_Nu) = 0; PCout(OUTBH_Pin_Nu)=0; PAout(LAVC_M_Pin_Nu)=0;PBout(OUTBL_Pin_Nu)=0;delay_nop(50);PBout(OUTAH_Pin_Nu)=1;PBout(OUTAL_Pin_Nu)=1;}
|
|
|
|
|
#define HMOS_SWITCH_ON {PAout(LAVC_M_Pin_Nu)=0;PCout(OUTBH_Pin_Nu)=0; PBout(OUTAL_Pin_Nu)=0;delay_nop(50);PBout(OUTBL_Pin_Nu)=1;PBout(OUTAH_Pin_Nu)=1;}
|
|
|
|
|
|
|
|
|
|
//芯跳桥驱动
|
|
|
|
|
#define XTBus_POWER_Out HMOS_SWITCH_W_1//总线模式开关
|
|
|
|
|
#define XTBUS_ON HMOS_SWITCH_ON
|
|
|
|
|
#define XTBUS_OFF HMOS_SWITCH_OFF
|
|
|
|
|
#define XTBUS_W_1 HMOS_SWITCH_W_1
|
|
|
|
|
#define XTBUS_W_0 HMOS_SWITCH_W_0
|
|
|
|
|
#define XTBUS_WR_1 HMOS_SWITCH_W_1
|
|
|
|
|
#define XTBUS_WR_0 HMOS_SWITCH_W_0
|
|
|
|
|
|
|
|
|
|
//JQ 桥驱动
|
|
|
|
|
|
|
|
|
|
#define JQBus_POWER_Out HMOS_SWITCH_W_1 //总线模式开关
|
|
|
|
|
#define JQBUS_ON HMOS_SWITCH_ON
|
|
|
|
|
#define JQBUS_OFF HMOS_SWITCH_OFF
|
|
|
|
|
#define JQBUS_W_1 HMOS_SWITCH_W_1
|
|
|
|
|
#define JQBUS_W_0 HMOS_SWITCH_W_0
|
|
|
|
|
|
|
|
|
|
//EW 桥驱动
|
|
|
|
|
#define EW_SINGLE_MOD_M {PCout(OUTBH_Pin_Nu)=0;PBout(OUTAL_Pin_Nu)=0;PBout(OUTAH_Pin_Nu)=0; delay_nop(50); PBout(OUTBL_Pin_Nu)=1;PAout(LAVC_M_Pin_Nu)=1;}
|
|
|
|
|
#define EW_SINGLE_MOD_H HMOS_SWITCH_W_1
|
|
|
|
|
|
2023-10-12 18:43:17 +08:00
|
|
|
|
//#define EW_DIFF_MOD_M {PCout(OUTBH_Pin_Nu)=0;PBout(OUTAL_Pin_Nu)=0; delay_nop(50); PBout(OUTBL_Pin_Nu)=1;PBout(OUTAH_Pin_Nu)=1;PAout(LAVC_M_Pin_Nu)=1;}
|
|
|
|
|
#define EW_DIFF_MOD_M {PCout(OUTBH_Pin_Nu)=0;PBout(OUTAL_Pin_Nu)=0;PBout(OUTAH_Pin_Nu)=0; delay_nop(50); PBout(OUTBL_Pin_Nu)=1;PAout(LAVC_M_Pin_Nu)=1;}
|
2023-10-07 18:15:52 +08:00
|
|
|
|
|
2023-10-06 18:47:05 +08:00
|
|
|
|
#define EW_DIFF_MOD_H HMOS_SWITCH_W_1
|
|
|
|
|
#define EW_DIFF_MOD_L HMOS_SWITCH_W_0
|
|
|
|
|
#define EW_BUS_OFF HMOS_SWITCH_OFF
|
2023-10-31 18:12:21 +08:00
|
|
|
|
#define EW_BUS_ON HMOS_SWITCH_ON
|
2023-10-06 18:47:05 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CtrlGpio_DefInit(void);
|
|
|
|
|
/*
|
|
|
|
|
@brief 获取设备地址
|
|
|
|
|
@param 无
|
|
|
|
|
@rtv 设备地址
|
|
|
|
|
*/
|
|
|
|
|
uint8_t Gpio_GetDeivceAddr(void);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
@brief 4限制电阻测量通道切换
|
|
|
|
|
@param 0 全关
|
|
|
|
|
1 通道1-4通,过桥丝
|
|
|
|
|
2 通道2-3通,过桥丝
|
|
|
|
|
3 通道1-3通,测阻抗
|
|
|
|
|
4 通道2-4通,测阻抗
|
|
|
|
|
*/
|
|
|
|
|
void Gpio_ResistorSwitch(uint8_t uc_r);
|
|
|
|
|
/*
|
|
|
|
|
@brief 测量电容电压压降GPIO配置
|
|
|
|
|
*/
|
|
|
|
|
void Gpio_CAPSwitch(uint8_t uc_sw);
|
|
|
|
|
#endif
|
|
|
|
|
|