Files
checker_slave/source/elec_det/hardware/gpio_cfg.c
ranchuan bff9b1b774 V2.05
重写延时等待函数,解决与模块之间通信间隔有可能过短的问题
    修改硬件版本号时自动修改can波特率
2023-11-13 17:34:05 +08:00

139 lines
3.8 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "gpio_cfg.h"
#include "base/delay.h"
void CtrlGpio_DefInit(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
//GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE);
PAout(LAVC_M_Pin_Nu) = 0;
//GPIO 配置
GPIO_InitStructure.GPIO_Pin=LAVC_M_Pin;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_ResetBits(GPIOA,GPIO_InitStructure.GPIO_Pin);
GPIO_InitStructure.GPIO_Pin = SEG0_Pin;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,&GPIO_InitStructure);
PBout(R10_ON_Pin_Nu) = 1;
PBout(R510_ON_Pin_Nu) = 0;
PBout(LED1_Pin_Nu) = 0;
PBout(IO_APD12_Pin_Nu) = 0;
PBout(LED2_Pin_Nu) = 0;
PBout(OUTAL_Pin_Nu) = 0;
PBout(OUTBL_Pin_Nu) = 0;
PBout(OUTAH_Pin_Nu) = 0;
PBout(IO_CAP_AD_Pin_Nu) = 0;
//GPIO 配置
GPIO_InitStructure.GPIO_Pin=\
R10_ON_Pin|R510_ON_Pin|LED1_Pin|IO_APD12_Pin|LED2_Pin|OUTAL_Pin|OUTBL_Pin|OUTAH_Pin|IO_CAP_AD_Pin;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_ResetBits(GPIOB,GPIO_InitStructure.GPIO_Pin);
GPIO_InitStructure.GPIO_Pin = FIRE_TEST_Pin;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOB,&GPIO_InitStructure);
PCout(R100_ON_Pin_Nu) = 0;
PCout(OUTBH_Pin_Nu) = 0;
PCout(POWER_ON_Pin_Nu) = 0;
PCout(IO_APD22_Pin_Nu) = 0;
PCout(IO_APD21_Pin_Nu) = 0;
PCout(IO_APD11_Pin_Nu) = 0;
GPIO_InitStructure.GPIO_Pin=\
R100_ON_Pin|OUTBH_Pin|POWER_ON_Pin|IO_APD22_Pin|IO_APD21_Pin|IO_APD11_Pin;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIO_InitStructure);
//GPIO 配置
GPIO_InitStructure.GPIO_Pin=SEG4_Pin|SEG3_Pin|SEG1_Pin|SEG2_Pin;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIO_InitStructure);
}
/*
@brief 获取设备地址
@param 无
@rtv 设备地址
*/
uint8_t Gpio_GetDeivceAddr(void)
{
uint16_t ul_addr ;
ul_addr = (PCin(SEG4_Pin_Nu) & 0x01) <<4;
ul_addr |= ((PCin(SEG3_Pin_Nu) & 0x01) <<3);
ul_addr |= ((PCin(SEG2_Pin_Nu) & 0x01) <<2);
ul_addr |= ((PCin(SEG1_Pin_Nu) & 0x01) <<1);
ul_addr |= (PAin(SEG0_Pin_Nu) & 0x01);
return ul_addr;
// return 1;
}
/*
@brief 4限制电阻测量通道切换
@param 0 全关
1 通道1-4通过桥丝
2 通道2-3通过桥丝
3 通道1-3通测阻抗
4 通道2-4通测阻抗
*/
void Gpio_ResistorSwitch(uint8_t uc_r)
{
/*
1 2
3 4
*/
switch(uc_r)
{
//1-4通过桥丝电阻
case 1: PCout(IO_APD11_Pin_Nu) = 1;PBout(IO_APD12_Pin_Nu) = 0;PCout(IO_APD22_Pin_Nu) = 1;PCout(IO_APD21_Pin_Nu) = 0; break;
//2-3通过桥丝测电阻
case 2: PCout(IO_APD11_Pin_Nu) = 0;PBout(IO_APD12_Pin_Nu) = 1;PCout(IO_APD22_Pin_Nu) = 0;PCout(IO_APD21_Pin_Nu) = 1; break;
//1-3通, 测阻抗
case 3: PCout(IO_APD11_Pin_Nu) = 1;PBout(IO_APD12_Pin_Nu) = 1; PCout(IO_APD22_Pin_Nu) = 0; PCout(IO_APD21_Pin_Nu) = 0; break;
//2-4通测阻抗
case 4: PCout(IO_APD11_Pin_Nu) = 0; PBout(IO_APD12_Pin_Nu) = 0; PCout(IO_APD22_Pin_Nu) = 1; PCout(IO_APD21_Pin_Nu) = 1; break;
//全关
default: PCout(IO_APD11_Pin_Nu) = 0; PBout(IO_APD12_Pin_Nu) = 0;PCout(IO_APD22_Pin_Nu) = 0; PCout(IO_APD21_Pin_Nu) = 0; break;
}
}
/*
@brief 测量电容电压压降GPIO配置
*/
void Gpio_CAPSwitch(uint8_t uc_sw)
{
Gpio_ResistorSwitch(0);
if(uc_sw > 0)
{
PBout(IO_CAP_AD_Pin_Nu) = 1;
}else{
PBout(IO_CAP_AD_Pin_Nu) = 0;
}
}