NANO130_H2Press/User/gpio_vcc.c

231 lines
10 KiB
C
Raw Permalink Normal View History

2025-04-10 14:54:41 +08:00
/*
*********************************************************************************************************
* IAR Development Kits
* on the
*
* M451
*
* Filename : gpio_vcc.c
* Version : V1.00
* Programmer(s) : Qian Xianghong
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* INCLUDE FILES
*********************************************************************************************************
*/
#include "includes.h"
volatile uint8_t LCD_Disabled = 0;
void Vcc_Init()
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>Ĭ<EFBFBD><C4AC>״̬<D7B4><CCAC>
// PA.9~8ΪSC0_TXRX
// PF.4Ϊ<EFBFBD><EFBFBD><EFBFBD>ٶȼƵ<EFBFBD>INT1
// PE.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>
// PA.9~8
GPIO_DISABLE_DIGITAL_PATH(PA, 0x0300ul);
// PE.0
GPIO_DISABLE_DIGITAL_PATH(PE, 0x0001ul);
// PF.4
GPIO_DISABLE_DIGITAL_PATH(PF, 0x0010ul);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
/* Set GPA as VCC_SENSOR_5V */
SYS->PA_L_MFP &= ~SYS_PA_L_MFP_PA7_MFP_Msk;
SYS->PA_L_MFP |= SYS_PA_L_MFP_PA7_MFP_GPA7;
GPIO_SetMode(PA, 1 << 7, GPIO_PMD_OUTPUT);
VCC_SENSOR_5V_OFF();
// PC.12 as VCC_SFLASH_FRAM
SYS->PC_H_MFP &= ~SYS_PC_H_MFP_PC12_MFP_Msk;
SYS->PC_H_MFP |= SYS_PC_H_MFP_PC12_MFP_GPC12;
GPIO_SetMode(PC, 1 << 12, GPIO_PMD_OUTPUT); // <20>͵<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>
VCC_SFLASH_FRAM_ON();
/* Set GPE as VCC_GSM */
SYS->PE_L_MFP &= ~SYS_PE_L_MFP_PE5_MFP_Msk;
SYS->PE_L_MFP |= SYS_PE_L_MFP_PE5_MFP_GPE5;
GPIO_SetMode(PE, 1 << 5, GPIO_PMD_OUTPUT);
VCC_GSM_OFF();
/* Set GPE as VCC_GPS */
SYS->PE_L_MFP &= ~SYS_PE_L_MFP_PE6_MFP_Msk;
SYS->PE_L_MFP |= SYS_PE_L_MFP_PE6_MFP_GPE6;
GPIO_SetMode(PE, 1 << 6, GPIO_PMD_OUTPUT); // <20>͵<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>
VCC_GPS_OFF();
/* Set GPC as VCC_RF */
SYS->PC_H_MFP &= ~SYS_PC_H_MFP_PC13_MFP_Msk;
SYS->PC_H_MFP |= SYS_PC_H_MFP_PC13_MFP_GPC13;
GPIO_SetMode(PC, 1 << 13, GPIO_PMD_OUTPUT);
VCC_RF_OFF();
/* Set GPB as VCC_BD */ // <20><>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><E6B1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// SYS->PB_H_MFP &= ~SYS_PB_H_MFP_PB9_MFP_Msk;
// SYS->PB_H_MFP |= SYS_PB_H_MFP_PB9_MFP_GPB9;
// GPIO_SetMode(PB, 1 << 9, GPIO_PMD_OUTPUT);
// VCC_BD_OFF();
}
// <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void Vcc_Disable()
{
// <20>ѳ<EFBFBD><D1B3>˰<EFBFBD><CBB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6>жϡ<D0B6><CFA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A1A2><EFBFBD>ƿ<EFBFBD><C6BF>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// PA.15~12,6~0
// PB.11~10,5~4
// PC.11~8,1~0
// PD.3~0
// PE.4~1
// PF.3~2
SYS->PA_H_MFP &= ~(SYS_PA_H_MFP_PA15_MFP_Msk | SYS_PA_H_MFP_PA14_MFP_Msk | SYS_PA_H_MFP_PA13_MFP_Msk | SYS_PA_H_MFP_PA12_MFP_Msk);
SYS->PA_H_MFP |= (SYS_PA_H_MFP_PA15_MFP_GPA15 | SYS_PA_H_MFP_PA14_MFP_GPA14 | SYS_PA_H_MFP_PA13_MFP_GPA13 | SYS_PA_H_MFP_PA12_MFP_GPA12);
SYS->PA_L_MFP &= ~(SYS_PA_L_MFP_PA6_MFP_Msk | SYS_PA_L_MFP_PA5_MFP_Msk | SYS_PA_L_MFP_PA4_MFP_Msk);
SYS->PA_L_MFP |= (SYS_PA_L_MFP_PA6_MFP_GPA6 | SYS_PA_L_MFP_PA5_MFP_GPA5 | SYS_PA_L_MFP_PA4_MFP_GPA4);
SYS->PA_L_MFP &= ~(SYS_PA_L_MFP_PA3_MFP_Msk | SYS_PA_L_MFP_PA2_MFP_Msk | SYS_PA_L_MFP_PA1_MFP_Msk | SYS_PA_L_MFP_PA0_MFP_Msk);
SYS->PA_L_MFP |= (SYS_PA_L_MFP_PA3_MFP_GPA3 | SYS_PA_L_MFP_PA2_MFP_GPA2 | SYS_PA_L_MFP_PA1_MFP_GPA1 | SYS_PA_L_MFP_PA0_MFP_GPA0);
GPIO_SetMode(PA, BIT15, GPIO_PMD_INPUT);
GPIO_SetMode(PA, BIT14, GPIO_PMD_INPUT);
GPIO_SetMode(PA, BIT13, GPIO_PMD_INPUT);
GPIO_SetMode(PA, BIT12, GPIO_PMD_INPUT);
GPIO_SetMode(PA, BIT6, GPIO_PMD_INPUT);
GPIO_SetMode(PA, BIT5, GPIO_PMD_INPUT);
GPIO_SetMode(PA, BIT4, GPIO_PMD_INPUT);
GPIO_SetMode(PA, BIT3, GPIO_PMD_INPUT);
GPIO_SetMode(PA, BIT2, GPIO_PMD_INPUT);
GPIO_SetMode(PA, BIT1, GPIO_PMD_INPUT);
GPIO_SetMode(PA, BIT0, GPIO_PMD_INPUT);
SYS->PB_H_MFP &= ~(SYS_PB_H_MFP_PB11_MFP_Msk | SYS_PB_H_MFP_PB10_MFP_Msk);
SYS->PB_H_MFP |= (SYS_PB_H_MFP_PB11_MFP_GPB11 | SYS_PB_H_MFP_PB10_MFP_GPB10);
SYS->PB_L_MFP &= ~(SYS_PB_L_MFP_PB5_MFP_Msk | SYS_PB_L_MFP_PB4_MFP_Msk);
SYS->PB_L_MFP |= (SYS_PB_L_MFP_PB5_MFP_GPB5 | SYS_PB_L_MFP_PB4_MFP_GPB4);
GPIO_SetMode(PB, BIT11, GPIO_PMD_INPUT);
GPIO_SetMode(PB, BIT10, GPIO_PMD_INPUT);
GPIO_SetMode(PB, BIT5, GPIO_PMD_INPUT);
GPIO_SetMode(PB, BIT4, GPIO_PMD_INPUT);
SYS->PC_H_MFP &= ~(SYS_PC_H_MFP_PC11_MFP_Msk | SYS_PC_H_MFP_PC10_MFP_Msk | SYS_PC_H_MFP_PC9_MFP_Msk | SYS_PC_H_MFP_PC8_MFP_Msk);
SYS->PC_H_MFP |= (SYS_PC_H_MFP_PC11_MFP_GPC11 | SYS_PC_H_MFP_PC10_MFP_GPC10 | SYS_PC_H_MFP_PC9_MFP_GPC9 | SYS_PC_H_MFP_PC8_MFP_GPC8);
SYS->PC_L_MFP &= ~(SYS_PC_L_MFP_PC1_MFP_Msk | SYS_PC_L_MFP_PC0_MFP_Msk);
SYS->PC_L_MFP |= (SYS_PC_L_MFP_PC1_MFP_GPC1 | SYS_PC_L_MFP_PC0_MFP_GPC0);
GPIO_SetMode(PC, BIT11, GPIO_PMD_INPUT);
GPIO_SetMode(PC, BIT10, GPIO_PMD_INPUT);
GPIO_SetMode(PC, BIT9, GPIO_PMD_INPUT);
GPIO_SetMode(PC, BIT8, GPIO_PMD_INPUT);
GPIO_SetMode(PC, BIT1, GPIO_PMD_INPUT);
GPIO_SetMode(PC, BIT0, GPIO_PMD_INPUT);
SYS->PD_L_MFP &= ~(SYS_PD_L_MFP_PD3_MFP_Msk | SYS_PD_L_MFP_PD2_MFP_Msk | SYS_PD_L_MFP_PD1_MFP_Msk | SYS_PD_L_MFP_PD0_MFP_Msk);
SYS->PD_L_MFP |= (SYS_PD_L_MFP_PD3_MFP_GPD3 | SYS_PD_L_MFP_PD2_MFP_GPD2 | SYS_PD_L_MFP_PD1_MFP_GPD1 | SYS_PD_L_MFP_PD0_MFP_GPD0);
GPIO_SetMode(PD, BIT3, GPIO_PMD_INPUT);
GPIO_SetMode(PD, BIT2, GPIO_PMD_INPUT);
GPIO_SetMode(PD, BIT1, GPIO_PMD_INPUT);
GPIO_SetMode(PD, BIT0, GPIO_PMD_INPUT);
SYS->PE_L_MFP &= ~SYS_PE_L_MFP_PE4_MFP_Msk;
SYS->PE_L_MFP |= SYS_PE_L_MFP_PE4_MFP_GPE4;
SYS->PE_L_MFP &= ~(SYS_PE_L_MFP_PE3_MFP_Msk | SYS_PE_L_MFP_PE2_MFP_Msk | SYS_PE_L_MFP_PE1_MFP_Msk | SYS_PE_L_MFP_PE0_MFP_Msk);
SYS->PE_L_MFP |= (SYS_PE_L_MFP_PE3_MFP_GPE3 | SYS_PE_L_MFP_PE2_MFP_GPE2 | SYS_PE_L_MFP_PE1_MFP_GPE1 | SYS_PE_L_MFP_PE0_MFP_GPE0);
GPIO_SetMode(PE, BIT4, GPIO_PMD_INPUT);
GPIO_SetMode(PE, BIT3, GPIO_PMD_INPUT);
GPIO_SetMode(PE, BIT2, GPIO_PMD_INPUT);
GPIO_SetMode(PE, BIT1, GPIO_PMD_INPUT);
GPIO_SetMode(PE, BIT0, GPIO_PMD_INPUT);
SYS->PF_L_MFP &= ~(SYS_PF_L_MFP_PF3_MFP_Msk | SYS_PF_L_MFP_PF2_MFP_Msk);
SYS->PF_L_MFP |= (SYS_PF_L_MFP_PF3_MFP_GPF3 | SYS_PF_L_MFP_PF2_MFP_GPF2);
GPIO_SetMode(PF, BIT3, GPIO_PMD_INPUT);
GPIO_SetMode(PF, BIT2, GPIO_PMD_INPUT);
// <20>ص<EFBFBD><D8B5>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>
// PA.15~12,6~0
GPIO_DISABLE_DIGITAL_PATH(PA, 0xF07Ful);
// PB.11~10,5~4
GPIO_DISABLE_DIGITAL_PATH(PB, 0x0C30ul);
// PC.11~8,1~0
GPIO_DISABLE_DIGITAL_PATH(PC, 0x0F03ul);
// PD.3~0
GPIO_DISABLE_DIGITAL_PATH(PD, 0x000Ful);
// PE.4~1
GPIO_DISABLE_DIGITAL_PATH(PE, 0x001Eul);
// PF.3~2
GPIO_DISABLE_DIGITAL_PATH(PF, 0x000Cul);
}
// <20>ָ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void Vcc_Enable()
{
/* Set GPB multi-function pins for UART1 RXD and TXD */
SYS->PB_L_MFP &= ~(SYS_PB_L_MFP_PB4_MFP_Msk | SYS_PB_L_MFP_PB5_MFP_Msk);
SYS->PB_L_MFP |= (SYS_PB_L_MFP_PB4_MFP_UART1_RX | SYS_PB_L_MFP_PB5_MFP_UART1_TX);
GPIO_ENABLE_DIGITAL_PATH(PB, 0x0010ul); // PB.4: RXD
/* Configure the PA6<41><36>BAT_VAL), PA5(P), PA4(DP), PA3-2(T_2), PA1-0(T_1) analog input pins. */
SYS->PA_L_MFP &= ~(SYS_PA_L_MFP_PA6_MFP_Msk | SYS_PA_L_MFP_PA5_MFP_Msk | SYS_PA_L_MFP_PA4_MFP_Msk);
SYS->PA_L_MFP |= (SYS_PA_L_MFP_PA6_MFP_ADC_CH6 | SYS_PA_L_MFP_PA5_MFP_ADC_CH5 | SYS_PA_L_MFP_PA4_MFP_ADC_CH4);
SYS->PA_L_MFP &= ~(SYS_PA_L_MFP_PA3_MFP_Msk | SYS_PA_L_MFP_PA2_MFP_Msk
| SYS_PA_L_MFP_PA1_MFP_Msk | SYS_PA_L_MFP_PA0_MFP_Msk);
SYS->PA_L_MFP |= (SYS_PA_L_MFP_PA3_MFP_ADC_CH3 | SYS_PA_L_MFP_PA2_MFP_ADC_CH2
| SYS_PA_L_MFP_PA1_MFP_ADC_CH1 | SYS_PA_L_MFP_PA0_MFP_ADC_CH0);
/* Disable the PA6~0 digital input path to avoid the leakage current. */
GPIO_DISABLE_DIGITAL_PATH(PA, 0x007Ful);
// // PA.15 as CAP_CAPTURE
// SYS->PA_H_MFP &= ~SYS_PA_H_MFP_PA15_MFP_Msk;
// SYS->PA_H_MFP |= SYS_PA_H_MFP_PA15_MFP_PWM0_CH3;
// GPIO_ENABLE_DIGITAL_PATH(PA, 0x8000ul);
// // PB.8 as CAP_TRIGGER
// SYS->PB_H_MFP &= ~SYS_PB_H_MFP_PB8_MFP_Msk;
// SYS->PB_H_MFP |= SYS_PB_H_MFP_PB8_MFP_GPB8;
// GPIO_SetMode(PB, BIT8, GPIO_PMD_OUTPUT);
SYS->PC_H_MFP &= ~(SYS_PC_H_MFP_PC8_MFP_Msk | SYS_PC_H_MFP_PC9_MFP_Msk | SYS_PC_H_MFP_PC10_MFP_Msk | SYS_PC_H_MFP_PC11_MFP_Msk);
SYS->PC_H_MFP |= (SYS_PC_H_MFP_PC8_MFP_SPI1_SS0 | SYS_PC_H_MFP_PC9_MFP_SPI1_SCLK | SYS_PC_H_MFP_PC10_MFP_SPI1_MISO0 | SYS_PC_H_MFP_PC11_MFP_SPI1_MOSI0);
GPIO_ENABLE_DIGITAL_PATH(PC, 0x0600ul); // SCLK<4C><4B>MISO
SYS->PE_L_MFP &= ~(SYS_PE_L_MFP_PE1_MFP_Msk | SYS_PE_L_MFP_PE2_MFP_Msk | SYS_PE_L_MFP_PE3_MFP_Msk | SYS_PE_L_MFP_PE4_MFP_Msk);
SYS->PE_L_MFP |= (SYS_PE_L_MFP_PE1_MFP_SPI0_SS0 | SYS_PE_L_MFP_PE2_MFP_SPI0_SCLK | SYS_PE_L_MFP_PE3_MFP_SPI0_MISO0 | SYS_PE_L_MFP_PE4_MFP_SPI0_MOSI0);
GPIO_ENABLE_DIGITAL_PATH(PE, 0x000Cul); // SCLK<4C><4B>MISO
SYS->PD_L_MFP &= ~(SYS_PD_L_MFP_PD0_MFP_Msk | SYS_PD_L_MFP_PD1_MFP_Msk | SYS_PD_L_MFP_PD2_MFP_Msk | SYS_PD_L_MFP_PD3_MFP_Msk);
SYS->PD_L_MFP |= (SYS_PD_L_MFP_PD0_MFP_SPI2_SS0 | SYS_PD_L_MFP_PD1_MFP_SPI2_SCLK | SYS_PD_L_MFP_PD2_MFP_SPI2_MISO0 | SYS_PD_L_MFP_PD3_MFP_SPI2_MOSI0);
GPIO_ENABLE_DIGITAL_PATH(PD, 0x0006ul); // SCLK<4C><4B>MISO
/* Set PC.0 and PC.1 pin for SC UART mode */
SYS->PC_L_MFP &= ~(SYS_PC_L_MFP_PC0_MFP_Msk | SYS_PC_L_MFP_PC1_MFP_Msk);
SYS->PC_L_MFP |= (SYS_PC_L_MFP_PC0_MFP_SC1_CLK | SYS_PC_L_MFP_PC1_MFP_SC1_DAT);
GPIO_ENABLE_DIGITAL_PATH(PC, 0x0002ul); // PC1: RXD
/* Set GPA multi-function pins for UART0 RXD and TXD */
SYS->PA_H_MFP &= ~(SYS_PA_H_MFP_PA14_MFP_Msk | SYS_PA_H_MFP_PA15_MFP_Msk);
SYS->PA_H_MFP |= (SYS_PA_H_MFP_PA14_MFP_UART0_RX | SYS_PA_H_MFP_PA15_MFP_UART0_TX);
GPIO_ENABLE_DIGITAL_PATH(PA, 0x4000ul); // PA14: RXD
// RF MD0, MD1
SYS->PA_H_MFP &= ~(SYS_PA_H_MFP_PA13_MFP_Msk | SYS_PA_H_MFP_PA12_MFP_Msk);
SYS->PA_H_MFP |= (SYS_PA_H_MFP_PA13_MFP_GPA13 | SYS_PA_H_MFP_PA12_MFP_GPA12);
GPIO_SetMode(PA, 1 << 13, GPIO_PMD_OUTPUT);
GPIO_SetMode(PA, 1 << 12, GPIO_PMD_OUTPUT);
/* Set PB.10 and PB.11 pin for SC UART mode */
SYS->PB_H_MFP &= ~(SYS_PB_H_MFP_PB10_MFP_Msk | SYS_PB_H_MFP_PB11_MFP_Msk);
SYS->PB_H_MFP |= (SYS_PB_H_MFP_PB10_MFP_SC2_CLK | SYS_PB_H_MFP_PB11_MFP_SC2_DAT);
GPIO_ENABLE_DIGITAL_PATH(PB, 0x0800ul); // PB11: RXD
// <20>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
VCC_SFLASH_FRAM_ON();
}