/* ********************************************************************************************************* * 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() { LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; /* GPIO Ports Clock Enable */ // LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_GPIOC); LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_GPIOA); LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_GPIOB); // 设置空闲引脚 GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; // GPIO_InitStruct.Pin = LL_GPIO_PIN_4 |LL_GPIO_PIN_5|LL_GPIO_PIN_11|LL_GPIO_PIN_12|LL_GPIO_PIN_15; LL_GPIO_Init(GPIOA, &GPIO_InitStruct); GPIO_InitStruct.Pin = LL_GPIO_PIN_8|LL_GPIO_PIN_9; LL_GPIO_Init(GPIOB, &GPIO_InitStruct); // PC.14~15 is OSC32 // GPIO_InitStruct.Pin = LL_GPIO_PIN_13|LL_GPIO_PIN_14|LL_GPIO_PIN_15; // LL_GPIO_Init(GPIOC, &GPIO_InitStruct); // 设置输出引脚 GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT; GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; GPIO_InitStruct.Pin = LL_GPIO_PIN_8; LL_GPIO_Init(GPIOA, &GPIO_InitStruct); // 设置开关的默认状态 // VCC_GSM_OFF(); // VCC_GPS_OFF(); // VCC_RS485_OFF(); // VCC_RF_OFF(); // VCC_BD_OFF(); // VCC_SFLASH_FRAM_ON(); // VCC_SENSOR_5V_ON(); VCC_SENSOR_5V_OFF(); // KZ_CHARGE_ENABLE_LOW(); // // 上电先关闭电磁阀 // KZ_CHARGE_DISABLE_HIGH(); //// Charge_Pulse_Time = GetDelayTick(1000); // // KZ_ALARM_OFF(); // KZ_LOW_ALARM_OFF(); // KZ_LOW_LEVEL_OFF(); // KZ_LEVEL_OFF(); } // 禁止引脚输出 void Vcc_Disable() { // 把除了LCD、按键、加速度中断、充电检测、控制开关以外的外设引脚设为模拟输入 LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; //PA0,1,2,3 AIN5 AIN6 AIN7 REF3V //PA6 DIO1 PA7 DIO0 //PA 8 PWNEN 传感器供电 //PA9,10 U1TX // PA.13~14 is JTAG-SW GPIO_InitStruct.Pin =LL_GPIO_PIN_0|LL_GPIO_PIN_1|LL_GPIO_PIN_2|LL_GPIO_PIN_3 |LL_GPIO_PIN_4|LL_GPIO_PIN_5|LL_GPIO_PIN_8 |LL_GPIO_PIN_9|LL_GPIO_PIN_10|LL_GPIO_PIN_11|LL_GPIO_PIN_12 |LL_GPIO_PIN_15; LL_GPIO_Init(GPIOA, &GPIO_InitStruct); //PB0 DIO3 //PB1 U3DE //PB2 LORA-RST //PB10,11 U3TX U3RX // PB3.4.5 KEY // PB.6~7 is lcd (scl, sda) // PB.12 is cs // PB.13~15 is spi_LORA GPIO_InitStruct.Pin =LL_GPIO_PIN_0|LL_GPIO_PIN_1|LL_GPIO_PIN_2 |LL_GPIO_PIN_6|LL_GPIO_PIN_7|LL_GPIO_PIN_8 |LL_GPIO_PIN_9|LL_GPIO_PIN_10|LL_GPIO_PIN_11; LL_GPIO_Init(GPIOB, &GPIO_InitStruct); GPIO_InitStruct.Pin = LL_GPIO_PIN_0|LL_GPIO_PIN_1|LL_GPIO_PIN_2|LL_GPIO_PIN_3 |LL_GPIO_PIN_4|LL_GPIO_PIN_5|LL_GPIO_PIN_6|LL_GPIO_PIN_7|LL_GPIO_PIN_5|LL_GPIO_PIN_8 |LL_GPIO_PIN_9|LL_GPIO_PIN_10|LL_GPIO_PIN_11|LL_GPIO_PIN_12 |LL_GPIO_PIN_13|LL_GPIO_PIN_14|LL_GPIO_PIN_15; LL_GPIO_Init(GPIOC, &GPIO_InitStruct); // PD.0 is KZ_LOW_LEVEL // PD.1 is KZ_LEVEL // PD.10 is accelero-int // PD.11 is VCC_RF/VCC_MA // GPIO_InitStruct.Pin = LL_GPIO_PIN_2|LL_GPIO_PIN_3 // |LL_GPIO_PIN_4|LL_GPIO_PIN_5|LL_GPIO_PIN_6|LL_GPIO_PIN_7 // |LL_GPIO_PIN_8|LL_GPIO_PIN_9 // |LL_GPIO_PIN_12|LL_GPIO_PIN_13|LL_GPIO_PIN_14|LL_GPIO_PIN_15; // LL_GPIO_Init(GPIOD, &GPIO_InitStruct); // // PE.1 is VCC_SENSOR_5V // // PE.2~6 is keys // // PE.7 is ex-power // // PE.8 is leak_in // // PE.9 is KZ_ALARM // GPIO_InitStruct.Pin = LL_GPIO_PIN_0 // |LL_GPIO_PIN_10|LL_GPIO_PIN_11 // |LL_GPIO_PIN_12|LL_GPIO_PIN_13|LL_GPIO_PIN_14|LL_GPIO_PIN_15; // LL_GPIO_Init(GPIOE, &GPIO_InitStruct); // // PB.13~15 is accelero-spi // GPIO_InitStruct.Pin = LL_GPIO_PIN_13|LL_GPIO_PIN_14|LL_GPIO_PIN_15; // GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT; // GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_LOW; // GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; // GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; // LL_GPIO_Init(GPIOB, &GPIO_InitStruct); // LL_GPIO_SetOutputPin(GPIOB, LL_GPIO_PIN_13|LL_GPIO_PIN_14|LL_GPIO_PIN_15); } // 恢复通信引脚输出 extern void SystemClock_Config(); void Vcc_Enable() { SystemClock_Config(); Vcc_Init(); Console_Init(); Console_Open(); //DAC7311_Init(); //Wakeup_Init(); //Slave_Init(); //Sensor_Init(); //Accelero_Init(); Sample_Init(); Sample_Open(); // Sample_ReOpen(); // 休眠唤醒以后需重新执行该函数 Battery_Init(); // DTU_Init(); Key_Init(); LCD_Init(); // 恢复外设引脚 VCC_SFLASH_FRAM_ON(); // 控制电流输出开关 //DAC7311_Open(); }