STM32_WGY/User/gpio_vcc.c

176 lines
5.0 KiB
C

/*
*********************************************************************************************************
* 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();
}