655 lines
19 KiB
C
655 lines
19 KiB
C
|
/** ##########################################################################
|
|||
|
** Filename :
|
|||
|
** Project :
|
|||
|
** Module :
|
|||
|
** Processor :
|
|||
|
** Version :
|
|||
|
** Compiler :
|
|||
|
** Date/Time :
|
|||
|
** Abstract :
|
|||
|
** Contents :
|
|||
|
** Note :
|
|||
|
**
|
|||
|
** (c) Copyright dmdz Co.,Ltd
|
|||
|
** --------------------------------------------------------------------------
|
|||
|
** R E V I S I O N H I S T O R Y
|
|||
|
** --------------------------------------------------------------------------
|
|||
|
** Date Ver Author Description
|
|||
|
|
|||
|
** -20230602- --V1.0-- --mingyea--- --修改--
|
|||
|
|
|||
|
** #########################################################################*/
|
|||
|
|
|||
|
/*---------------------------------------------------------------------------
|
|||
|
- I N C L U D E F I L E S
|
|||
|
----------------------------------------------------------------------------*/
|
|||
|
#include "gpio.h"
|
|||
|
#include "nvic.h"
|
|||
|
#include "wdog.h"
|
|||
|
//#include "power_manager_app.h"
|
|||
|
|
|||
|
static void gpio_ext_interrupt_init(void);
|
|||
|
static void gpio_ext_interrupt_de_init(void);
|
|||
|
static void gpio_pwm_init(void);
|
|||
|
static void gpio_key_init(void);
|
|||
|
static void gpio_adc_init(void);
|
|||
|
static void gpio_can_init(void);
|
|||
|
static void gpio_test_init(void);
|
|||
|
static void gpio_idle_init(void);
|
|||
|
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
u8 state;
|
|||
|
u8 test[8];
|
|||
|
}gpio_cfg_s;
|
|||
|
static gpio_cfg_s g_gpio_cfg;
|
|||
|
|
|||
|
//void gpio_isr_callback(void *device, uint32_t wpara, uint32_t lpara);
|
|||
|
|
|||
|
/**
|
|||
|
* @brief GPIO中断函数
|
|||
|
* @param void
|
|||
|
* @retval void
|
|||
|
*/
|
|||
|
void GPIO_IRQHandler(void)
|
|||
|
{
|
|||
|
g_gpio_cfg.test[0]++;
|
|||
|
//can RX 中断
|
|||
|
if(FL_GPIO_IsActiveFlag_EXTI(GPIO, FL_GPIO_EXTI_LINE_1))
|
|||
|
{
|
|||
|
g_gpio_cfg.test[1]++;
|
|||
|
#ifdef CAN_AUTOSAR_NM_EN
|
|||
|
//cannm_app_set_event(CANNM_EVENT_EXT_KEY);
|
|||
|
#endif
|
|||
|
//power_manage_app_set_wakeup(); //TO MODIFY
|
|||
|
FL_GPIO_ClearFlag_EXTI(GPIO, FL_GPIO_EXTI_LINE_1);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
#if 0
|
|||
|
|
|||
|
/**
|
|||
|
* gpio_led_init
|
|||
|
*
|
|||
|
* @param[in] none
|
|||
|
* @return none
|
|||
|
*
|
|||
|
* @brief init led control gpio
|
|||
|
*
|
|||
|
*/
|
|||
|
void gpio_i2c_init(void)
|
|||
|
{
|
|||
|
FL_GPIO_InitTypeDef GPIO_InitStruct = {0};
|
|||
|
|
|||
|
GPIO_InitStruct.pin = I2C0_SCL_PIN_MASK;
|
|||
|
GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;
|
|||
|
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_OPENDRAIN; //FL_GPIO_OUTPUT_OPENDRAIN
|
|||
|
GPIO_InitStruct.pull = FL_DISABLE;
|
|||
|
GPIO_InitStruct.remapPin = FL_DISABLE;
|
|||
|
GPIO_InitStruct.analogSwitch = FL_DISABLE;
|
|||
|
FL_GPIO_Init(I2C0_SCL_GPIO, &GPIO_InitStruct);
|
|||
|
GPIO_InitStruct.pin = I2C0_SDA_PIN_MASK;
|
|||
|
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_OPENDRAIN;
|
|||
|
FL_GPIO_Init(I2C0_SDA_GPIO, &GPIO_InitStruct);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* gpio_lin_init
|
|||
|
*
|
|||
|
* @param[in] none
|
|||
|
* @return none
|
|||
|
*
|
|||
|
* @brief init led control gpio
|
|||
|
*
|
|||
|
*/
|
|||
|
void gpio_lin_init(void)
|
|||
|
{
|
|||
|
#if PROJECT_NAME_CURRENT == PROJECT_NAME_DEMO
|
|||
|
|
|||
|
FL_GPIO_InitTypeDef GPIO_InitStruct = {0};
|
|||
|
|
|||
|
LIN_SLP_DISABLE();
|
|||
|
|
|||
|
GPIO_InitStruct.pin = LIN_SLP_PIN_MASK;
|
|||
|
GPIO_InitStruct.mode = FL_GPIO_MODE_OUTPUT;
|
|||
|
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
|
|||
|
GPIO_InitStruct.pull = FL_DISABLE;
|
|||
|
FL_GPIO_Init(LIN_SLP_GPIO, &GPIO_InitStruct);
|
|||
|
|
|||
|
/* PA13:UART0-RX PA14:UART0-TX */
|
|||
|
GPIO_InitStruct.pin = LIN_RX_PIN_MASK | LIN_TX_PIN_MASK;
|
|||
|
GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;
|
|||
|
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_OPENDRAIN; /* 推挽输出 */
|
|||
|
GPIO_InitStruct.pull = FL_ENABLE;
|
|||
|
GPIO_InitStruct.remapPin = FL_DISABLE;
|
|||
|
GPIO_InitStruct.analogSwitch = FL_DISABLE;
|
|||
|
FL_GPIO_Init(LIN_RX_GPIO, &GPIO_InitStruct);
|
|||
|
|
|||
|
#else
|
|||
|
|
|||
|
|
|||
|
|
|||
|
#endif
|
|||
|
}
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
//普通输出io的配置
|
|||
|
static void gpio_output_init(void)
|
|||
|
{
|
|||
|
FL_GPIO_InitTypeDef GPIO_InitStruct = {0};
|
|||
|
|
|||
|
GPIO_InitStruct.pin = O_MDT_CTR_PIN_MASK;
|
|||
|
GPIO_InitStruct.mode = FL_GPIO_MODE_OUTPUT;
|
|||
|
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
|
|||
|
GPIO_InitStruct.pull = FL_DISABLE;
|
|||
|
GPIO_InitStruct.remapPin = FL_DISABLE;
|
|||
|
GPIO_InitStruct.analogSwitch = FL_DISABLE;
|
|||
|
FL_GPIO_Init(O_MDT_CTR_GPIO, &GPIO_InitStruct);
|
|||
|
GPIO_InitStruct.pin = O_12V_CTR_PIN_MASK ;
|
|||
|
FL_GPIO_Init(O_12V_CTR_GPIO, &GPIO_InitStruct);
|
|||
|
GPIO_InitStruct.pin = O_5V_CTR_PIN_MASK ;
|
|||
|
FL_GPIO_Init(O_5V_CTR_GPIO, &GPIO_InitStruct);
|
|||
|
GPIO_InitStruct.pin = O_KIT_CTR_PIN_MASK ;
|
|||
|
FL_GPIO_Init(O_KIT_CTR_GPIO, &GPIO_InitStruct);
|
|||
|
|
|||
|
|
|||
|
O_MDT_CTR_DISABLE();
|
|||
|
O_12V_CTR_DISABLE();
|
|||
|
O_5V_CTR_DISABLE();
|
|||
|
O_KIT_CTR_DISABLE();
|
|||
|
O_MDT_PWM_DISABLE();
|
|||
|
O_DEN_CTR_DISABLE();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* gpio_lin_init
|
|||
|
*
|
|||
|
* @param[in] none
|
|||
|
* @return none
|
|||
|
*
|
|||
|
* @brief init led control gpio
|
|||
|
*
|
|||
|
*/
|
|||
|
static void gpio_pwm_init(void)
|
|||
|
{
|
|||
|
FL_GPIO_InitTypeDef GPIO_InitStruct = {0};
|
|||
|
|
|||
|
GPIO_InitStruct.pin = PWM_LED_PIN_MASK;
|
|||
|
GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;
|
|||
|
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
|
|||
|
GPIO_InitStruct.pull = FL_DISABLE;
|
|||
|
GPIO_InitStruct.analogSwitch = FL_DISABLE;
|
|||
|
|
|||
|
GPIO_InitStruct.remapPin = PWM_LED_REPIN;
|
|||
|
FL_GPIO_Init(PWM_LED_GPIO, &GPIO_InitStruct);
|
|||
|
GPIO_InitStruct.remapPin = PWM_HS_REPIN;
|
|||
|
GPIO_InitStruct.pin = PWM_HS_PIN_MASK ;
|
|||
|
FL_GPIO_Init(PWM_HS_GPIO, &GPIO_InitStruct);
|
|||
|
|
|||
|
GPIO_InitStruct.remapPin = PWM_L1_REPIN;
|
|||
|
GPIO_InitStruct.pin = PWM_L1_PIN_MASK ;
|
|||
|
FL_GPIO_Init(PWM_L1_GPIO, &GPIO_InitStruct);
|
|||
|
|
|||
|
GPIO_InitStruct.remapPin = PWM_L2_REPIN;
|
|||
|
GPIO_InitStruct.pin = PWM_L2_PIN_MASK ;
|
|||
|
FL_GPIO_Init(PWM_L2_GPIO, &GPIO_InitStruct);
|
|||
|
|
|||
|
GPIO_InitStruct.remapPin = PWM_R1_REPIN;
|
|||
|
GPIO_InitStruct.pin = PWM_R1_PIN_MASK ;
|
|||
|
FL_GPIO_Init(PWM_R1_GPIO, &GPIO_InitStruct);
|
|||
|
|
|||
|
GPIO_InitStruct.remapPin = PWM_R2_REPIN;
|
|||
|
GPIO_InitStruct.pin = PWM_R2_PIN_MASK ;
|
|||
|
FL_GPIO_Init(PWM_R2_GPIO, &GPIO_InitStruct);
|
|||
|
|
|||
|
GPIO_InitStruct.remapPin = PWM_LH_REPIN;
|
|||
|
GPIO_InitStruct.pin = PWM_LH_PIN_MASK ;
|
|||
|
FL_GPIO_Init(PWM_LH_GPIO, &GPIO_InitStruct);
|
|||
|
|
|||
|
GPIO_InitStruct.remapPin = PWM_RH_REPIN;
|
|||
|
GPIO_InitStruct.pin = PWM_RH_PIN_MASK ;
|
|||
|
FL_GPIO_Init(PWM_RH_GPIO, &GPIO_InitStruct);
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* GPIO_ADC_Init
|
|||
|
*
|
|||
|
* @param[in] none
|
|||
|
* @return none
|
|||
|
*
|
|||
|
* @brief init key control gpio
|
|||
|
*
|
|||
|
*/
|
|||
|
static void gpio_key_init(void)
|
|||
|
{
|
|||
|
|
|||
|
FL_GPIO_InitTypeDef GPIO_InitStruct = {0};
|
|||
|
|
|||
|
GPIO_InitStruct.pin = KEY_1_PIN_MASK;
|
|||
|
GPIO_InitStruct.mode = FL_GPIO_MODE_INPUT;
|
|||
|
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
|
|||
|
GPIO_InitStruct.pull = FL_DISABLE;
|
|||
|
GPIO_InitStruct.remapPin = FL_DISABLE;
|
|||
|
GPIO_InitStruct.analogSwitch = FL_DISABLE;
|
|||
|
FL_GPIO_Init(KEY_1_GPIO, &GPIO_InitStruct);
|
|||
|
GPIO_InitStruct.pin = KEY_2_PIN_MASK;
|
|||
|
FL_GPIO_Init(KEY_2_GPIO, &GPIO_InitStruct);
|
|||
|
GPIO_InitStruct.pin = KEY_3_PIN_MASK;
|
|||
|
FL_GPIO_Init(KEY_3_GPIO, &GPIO_InitStruct);
|
|||
|
GPIO_InitStruct.pin = KEY_4_PIN_MASK;
|
|||
|
FL_GPIO_Init(KEY_4_GPIO, &GPIO_InitStruct);
|
|||
|
GPIO_InitStruct.pin = KEY_5_PIN_MASK;
|
|||
|
FL_GPIO_Init(KEY_5_GPIO, &GPIO_InitStruct);
|
|||
|
GPIO_InitStruct.pin = KEY_6_PIN_MASK;
|
|||
|
FL_GPIO_Init(KEY_6_GPIO, &GPIO_InitStruct);
|
|||
|
|
|||
|
GPIO_InitStruct.pin = KEY_1_ENCODE_PIN_MASK;
|
|||
|
FL_GPIO_Init(KEY_1_ENCODE_GPIO, &GPIO_InitStruct);
|
|||
|
|
|||
|
GPIO_InitStruct.pin = KEY_2_ENCODE_PIN_MASK;
|
|||
|
FL_GPIO_Init(KEY_2_ENCODE_GPIO, &GPIO_InitStruct);
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* GPIO_ADC_Init
|
|||
|
*
|
|||
|
* @param[in] none
|
|||
|
* @return none
|
|||
|
*
|
|||
|
* @brief init led control gpio
|
|||
|
*
|
|||
|
*/
|
|||
|
static void gpio_adc_init(void)
|
|||
|
{
|
|||
|
|
|||
|
FL_GPIO_InitTypeDef GPIO_InitStruct = {0};
|
|||
|
/* 配置引脚为模拟功能 */
|
|||
|
/* ADC ADC_1 引脚 PD1 */
|
|||
|
GPIO_InitStruct.pin = ADC_CHANNEL_0_PIN_MASK;
|
|||
|
GPIO_InitStruct.mode = FL_GPIO_MODE_ANALOG;
|
|||
|
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
|
|||
|
GPIO_InitStruct.pull = FL_DISABLE;
|
|||
|
GPIO_InitStruct.remapPin = FL_DISABLE;
|
|||
|
GPIO_InitStruct.analogSwitch = FL_DISABLE;
|
|||
|
FL_GPIO_Init(ADC_CHANNEL_0_GPIO, &GPIO_InitStruct);
|
|||
|
|
|||
|
GPIO_InitStruct.pin = ADC_CHANNEL_1_PIN_MASK;
|
|||
|
FL_GPIO_Init(ADC_CHANNEL_1_GPIO, &GPIO_InitStruct);
|
|||
|
|
|||
|
GPIO_InitStruct.pin = ADC_CHANNEL_2_PIN_MASK;
|
|||
|
FL_GPIO_Init(ADC_CHANNEL_2_GPIO, &GPIO_InitStruct);
|
|||
|
|
|||
|
#if 0
|
|||
|
GPIO_InitStruct.pin = ADC_CHANNEL_3_PIN_MASK;
|
|||
|
FL_GPIO_Init(ADC_CHANNEL_3_GPIO, &GPIO_InitStruct);
|
|||
|
|
|||
|
GPIO_InitStruct.pin = ADC_CHANNEL_4_PIN_MASK;
|
|||
|
FL_GPIO_Init(ADC_CHANNEL_4_GPIO, &GPIO_InitStruct);
|
|||
|
#endif
|
|||
|
|
|||
|
GPIO_InitStruct.pin = ADC_CHANNEL_5_PIN_MASK;
|
|||
|
FL_GPIO_Init(ADC_CHANNEL_5_GPIO, &GPIO_InitStruct);
|
|||
|
|
|||
|
GPIO_InitStruct.pin = ADC_CHANNEL_6_PIN_MASK;
|
|||
|
FL_GPIO_Init(ADC_CHANNEL_6_GPIO, &GPIO_InitStruct);
|
|||
|
|
|||
|
GPIO_InitStruct.pin = ADC_CHANNEL_7_PIN_MASK;
|
|||
|
FL_GPIO_Init(ADC_CHANNEL_7_GPIO, &GPIO_InitStruct);
|
|||
|
|
|||
|
GPIO_InitStruct.pin = ADC_CHANNEL_8_PIN_MASK;
|
|||
|
FL_GPIO_Init(ADC_CHANNEL_8_GPIO, &GPIO_InitStruct);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* GPIO_ADC_Init
|
|||
|
*
|
|||
|
* @param[in] none
|
|||
|
* @return none
|
|||
|
*
|
|||
|
* @brief init led control gpio
|
|||
|
*
|
|||
|
*/
|
|||
|
static void gpio_can_init(void)
|
|||
|
{
|
|||
|
FL_GPIO_InitTypeDef GPIO_InitStruct = {0};
|
|||
|
/* PC2.3配置成模拟功能,外接XTHF */
|
|||
|
/*-----------------------------------GPIO初始化---------------------------------------*/
|
|||
|
GPIO_InitStruct.pin = CAN0_TX_PIN_MASK; /* 48PIN开发板引脚定义 */
|
|||
|
GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;
|
|||
|
GPIO_InitStruct.pull = FL_ENABLE;
|
|||
|
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
|
|||
|
GPIO_InitStruct.remapPin = FL_DISABLE;
|
|||
|
GPIO_InitStruct.analogSwitch = FL_DISABLE;
|
|||
|
FL_GPIO_Init(CAN0_TX_GPIO, &GPIO_InitStruct); /* 48PIN开发板引脚定义 */
|
|||
|
|
|||
|
GPIO_InitStruct.pin = CAN0_RX_PIN_MASK; /* 48PIN开发板引脚定义 */
|
|||
|
GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;
|
|||
|
GPIO_InitStruct.pull = FL_ENABLE;
|
|||
|
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
|
|||
|
GPIO_InitStruct.remapPin = FL_DISABLE;
|
|||
|
GPIO_InitStruct.analogSwitch = FL_DISABLE;
|
|||
|
FL_GPIO_Init(CAN0_RX_GPIO, &GPIO_InitStruct); /* 48PIN开发板引脚定义 */
|
|||
|
|
|||
|
/* STB引脚初始化 */
|
|||
|
GPIO_InitStruct.pin = CAN0_STB_PIN_MASK; /* 48PIN开发板引脚定义 */
|
|||
|
GPIO_InitStruct.mode = FL_GPIO_MODE_OUTPUT;
|
|||
|
GPIO_InitStruct.pull = FL_ENABLE;
|
|||
|
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
|
|||
|
GPIO_InitStruct.remapPin = FL_DISABLE;
|
|||
|
GPIO_InitStruct.analogSwitch = FL_DISABLE;
|
|||
|
FL_GPIO_Init(CAN0_STB_GPIO, &GPIO_InitStruct);
|
|||
|
|
|||
|
CAN0_STB_ON();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* gpio_led_init
|
|||
|
*
|
|||
|
* @param[in] none
|
|||
|
* @return none
|
|||
|
*
|
|||
|
* @brief init led control gpio
|
|||
|
*
|
|||
|
*/
|
|||
|
static void gpio_test_init(void)
|
|||
|
{
|
|||
|
FL_GPIO_InitTypeDef GPIO_InitStruct = {0};
|
|||
|
|
|||
|
GPIO_InitStruct.pin = TEST1_PIN_MASK;
|
|||
|
GPIO_InitStruct.mode = FL_GPIO_MODE_OUTPUT;
|
|||
|
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
|
|||
|
GPIO_InitStruct.pull = FL_DISABLE;
|
|||
|
GPIO_InitStruct.remapPin = FL_DISABLE;
|
|||
|
GPIO_InitStruct.analogSwitch = FL_DISABLE;
|
|||
|
FL_GPIO_Init(TEST1_GPIO, &GPIO_InitStruct);
|
|||
|
GPIO_InitStruct.pin = TEST2_PIN_MASK;
|
|||
|
FL_GPIO_Init(TEST2_GPIO, &GPIO_InitStruct);
|
|||
|
|
|||
|
//FL_GPIO_SetFOUT0(GPIO, FL_GPIO_FOUT0_SELECT_AHBCLK_DIV64);
|
|||
|
//FL_GPIO_SetFOUT0(GPIO, FL_GPIO_FOUT0_SELECT_AHBCLK_DIV64);
|
|||
|
/* init gpio as output mode */
|
|||
|
TEST1_OFF();
|
|||
|
TEST2_OFF();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
//空闲io的配置
|
|||
|
static void gpio_idle_init(void)
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @brief
|
|||
|
* @param input:
|
|||
|
* @param output:
|
|||
|
* @return none:
|
|||
|
* @calls
|
|||
|
* @calls by
|
|||
|
* @others
|
|||
|
*/
|
|||
|
void gpio_cfg_init(void)
|
|||
|
{
|
|||
|
//gpio_output_init();
|
|||
|
//gpio_pwm_init();
|
|||
|
//gpio_key_init();
|
|||
|
//gpio_adc_init();
|
|||
|
gpio_can_init();
|
|||
|
//gpio_idle_init();
|
|||
|
//gpio_test_init();
|
|||
|
//gpio_lin_init();
|
|||
|
//gpio_i2c_init();
|
|||
|
|
|||
|
//gpio_ext_interrupt_init();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/*---------------------------------------------------------------------------
|
|||
|
|Prototype :
|
|||
|
|Called by : None
|
|||
|
|Preconditions : None
|
|||
|
|Input parameters : None
|
|||
|
|Output parameters : None
|
|||
|
|Return value : None
|
|||
|
|Description :
|
|||
|
----------------------------------------------------------------------------*/
|
|||
|
static void gpio_ext_interrupt_init(void)
|
|||
|
{
|
|||
|
FL_GPIO_InitTypeDef GPIO_InitStruct = {0};
|
|||
|
FL_EXTI_InitTypeDef extiInitStruct = {0};
|
|||
|
FL_EXTI_CommonInitTypeDef extiCommonInitStruct = {0};
|
|||
|
|
|||
|
FL_CMU_EnableEXTIOnSleep(); /* 休眠使能外部中断采样 */
|
|||
|
|
|||
|
/* EXTI中断采样时钟选择 */
|
|||
|
extiCommonInitStruct.clockSource = FL_CMU_EXTI_CLK_SOURCE_LSCLK;
|
|||
|
FL_EXTI_CommonInit(&extiCommonInitStruct);
|
|||
|
|
|||
|
/***********************CAN RX**************************/
|
|||
|
GPIO_InitStruct.pin = (uint32_t)CAN0_RX_PIN_MASK; /* 48PIN开发板引脚定义 */
|
|||
|
GPIO_InitStruct.mode = (uint32_t)FL_GPIO_MODE_INPUT;
|
|||
|
GPIO_InitStruct.pull = (uint32_t)FL_ENABLE;
|
|||
|
GPIO_InitStruct.outputType = (uint32_t)FL_GPIO_OUTPUT_PUSHPULL;
|
|||
|
GPIO_InitStruct.remapPin = (uint32_t)FL_DISABLE;
|
|||
|
GPIO_InitStruct.analogSwitch = (uint32_t)FL_DISABLE;
|
|||
|
FL_GPIO_Init(CAN0_RX_GPIO, &GPIO_InitStruct); /* 48PIN开发板引脚定义 */
|
|||
|
|
|||
|
extiInitStruct.input = (uint32_t)CAN0_RX_EXIT_GROUP; /* 中断线上对应的IO */
|
|||
|
extiInitStruct.filter = (uint32_t)FL_ENABLE; /* 使能数字滤波 */
|
|||
|
extiInitStruct.triggerEdge = (uint32_t)FL_GPIO_EXTI_TRIGGER_EDGE_FALLING; /* 设置触发边沿 */
|
|||
|
FL_EXTI_Init(CAN0_RX_EXIT_LINE,&extiInitStruct);
|
|||
|
|
|||
|
|
|||
|
/* NVIC中断配置 */
|
|||
|
NVIC_ClearPendingIRQ(GPIO_IRQn);
|
|||
|
NVIC_DisableIRQ(GPIO_IRQn);
|
|||
|
NVIC_SetPriority(GPIO_IRQn, NVIC_PRIORITY_GPIO); /* 中断优先级配置 */
|
|||
|
NVIC_EnableIRQ(GPIO_IRQn);
|
|||
|
}
|
|||
|
|
|||
|
/*---------------------------------------------------------------------------
|
|||
|
|Prototype :
|
|||
|
|Called by : None
|
|||
|
|Preconditions : None
|
|||
|
|Input parameters : None
|
|||
|
|Output parameters : None
|
|||
|
|Return value : None
|
|||
|
|Description :
|
|||
|
----------------------------------------------------------------------------*/
|
|||
|
static void gpio_ext_interrupt_de_init(void)
|
|||
|
{
|
|||
|
FL_GPIO_InitTypeDef GPIO_InitStruct = {0};
|
|||
|
|
|||
|
FL_CMU_DisableEXTIOnSleep(); /* 休眠使能外部中断采样 */
|
|||
|
|
|||
|
/* EXTI中断采样时钟选择 */
|
|||
|
FL_EXTI_CommonDeinit();
|
|||
|
|
|||
|
/***********************FM33LG0X5A 48PIN**************************/
|
|||
|
/* can rx GPIO外设 */
|
|||
|
GPIO_InitStruct.pin = (uint32_t)CAN0_RX_PIN_MASK; /* 48PIN开发板引脚定义 */
|
|||
|
GPIO_InitStruct.mode = (uint32_t)FL_GPIO_MODE_DIGITAL;
|
|||
|
GPIO_InitStruct.pull = (uint32_t)FL_ENABLE;
|
|||
|
GPIO_InitStruct.outputType = (uint32_t)FL_GPIO_OUTPUT_PUSHPULL;
|
|||
|
GPIO_InitStruct.remapPin = (uint32_t)FL_DISABLE;
|
|||
|
GPIO_InitStruct.analogSwitch = (uint32_t)FL_DISABLE;
|
|||
|
FL_GPIO_Init(CAN0_RX_GPIO, &GPIO_InitStruct); /* 48PIN开发板引脚定义 */
|
|||
|
|
|||
|
FL_EXTI_DeInit(CAN0_RX_EXIT_LINE);
|
|||
|
|
|||
|
/* NVIC中断配置 */
|
|||
|
NVIC_DisableIRQ(GPIO_IRQn);
|
|||
|
//NVIC_SetPriority(GPIO_IRQn, NVIC_PRIORITY_EXTI0); /* 中断优先级配置 */
|
|||
|
//NVIC_EnableIRQ(GPIO_IRQn);
|
|||
|
}
|
|||
|
|
|||
|
//
|
|||
|
/*---------------------------------------------------------------------------
|
|||
|
|Prototype :
|
|||
|
|Called by : None
|
|||
|
|Preconditions : None
|
|||
|
|Input parameters : None
|
|||
|
|Output parameters : None
|
|||
|
|Return value : None
|
|||
|
|Description :
|
|||
|
----------------------------------------------------------------------------*/
|
|||
|
void gpio_goto_sleep(void)
|
|||
|
{
|
|||
|
TEST1_OFF();
|
|||
|
TEST2_OFF();
|
|||
|
CAN0_STB_OFF();
|
|||
|
|
|||
|
O_MDT_CTR_DISABLE();
|
|||
|
O_12V_CTR_DISABLE();
|
|||
|
O_5V_CTR_DISABLE();
|
|||
|
O_KIT_CTR_DISABLE();
|
|||
|
O_MDT_PWM_DISABLE();
|
|||
|
O_DEN_CTR_DISABLE();
|
|||
|
//FL_CAN_SetSoftwareReset(CAN,FL_CAN_SOFTWARE_RESET);
|
|||
|
gpio_ext_interrupt_init();
|
|||
|
}
|
|||
|
|
|||
|
/*---------------------------------------------------------------------------
|
|||
|
|Prototype :
|
|||
|
|Called by : None
|
|||
|
|Preconditions : None
|
|||
|
|Input parameters : None
|
|||
|
|Output parameters : None
|
|||
|
|Return value : None
|
|||
|
|Description :
|
|||
|
----------------------------------------------------------------------------*/
|
|||
|
void gpio_goto_wakeup(void)
|
|||
|
{
|
|||
|
gpio_ext_interrupt_de_init();
|
|||
|
TEST1_ON();
|
|||
|
TEST2_ON();
|
|||
|
CAN0_STB_ON();
|
|||
|
//LIN_SLP_ENABLE();
|
|||
|
}
|
|||
|
|
|||
|
/*---------------------------------------------------------------------------
|
|||
|
|Prototype :
|
|||
|
|Called by : None
|
|||
|
|Preconditions : None
|
|||
|
|Input parameters : None
|
|||
|
|Output parameters : None
|
|||
|
|Return value : None
|
|||
|
|Description :
|
|||
|
----------------------------------------------------------------------------*/
|
|||
|
void gpio_cfg_re_init(void)
|
|||
|
{
|
|||
|
gpio_cfg_init();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/*---------------------------------------------------------------------------
|
|||
|
|Prototype : lpt32_ch1_set_gpio
|
|||
|
|Called by :
|
|||
|
|Preconditions :
|
|||
|
|Input parameters :
|
|||
|
|Output parameters :
|
|||
|
|Return value :
|
|||
|
|Description :
|
|||
|
----------------------------------------------------------------------------*/
|
|||
|
void lpt32_ch1_set_gpio(void)
|
|||
|
{
|
|||
|
FL_GPIO_InitTypeDef GPIO_InitStruct = {0};
|
|||
|
|
|||
|
GPIO_InitStruct.pin = GPIO_PIN8_MASK;
|
|||
|
GPIO_InitStruct.mode = FL_GPIO_MODE_OUTPUT;
|
|||
|
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL; //FL_GPIO_OUTPUT_OPENDRAIN
|
|||
|
GPIO_InitStruct.pull = FL_DISABLE;
|
|||
|
GPIO_InitStruct.remapPin = FL_DISABLE; //注意
|
|||
|
GPIO_InitStruct.analogSwitch = FL_DISABLE;
|
|||
|
FL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
|||
|
FL_GPIO_ResetOutputPin(GPIOB, GPIO_PIN8_MASK);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
/*---------------------------------------------------------------------------
|
|||
|
|Prototype : lpt32_ch1_set_pwm
|
|||
|
|Called by :
|
|||
|
|Preconditions :
|
|||
|
|Input parameters :
|
|||
|
|Output parameters :
|
|||
|
|Return value :
|
|||
|
|Description :
|
|||
|
----------------------------------------------------------------------------*/
|
|||
|
void lpt32_ch1_set_pwm(void)
|
|||
|
{
|
|||
|
FL_GPIO_InitTypeDef GPIO_InitStruct = {0};
|
|||
|
|
|||
|
GPIO_InitStruct.pin = GPIO_PIN8_MASK;
|
|||
|
GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;
|
|||
|
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL; //FL_GPIO_OUTPUT_OPENDRAIN
|
|||
|
GPIO_InitStruct.pull = FL_DISABLE;
|
|||
|
GPIO_InitStruct.remapPin = FL_ENABLE; //注意
|
|||
|
GPIO_InitStruct.analogSwitch = FL_DISABLE;
|
|||
|
FL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/*---------------------------------------------------------------------------
|
|||
|
|Prototype : lpt32_ch2_set_gpio
|
|||
|
|Called by :
|
|||
|
|Preconditions :
|
|||
|
|Input parameters :
|
|||
|
|Output parameters :
|
|||
|
|Return value :
|
|||
|
|Description :
|
|||
|
----------------------------------------------------------------------------*/
|
|||
|
void lpt32_ch2_set_gpio(void)
|
|||
|
{
|
|||
|
FL_GPIO_InitTypeDef GPIO_InitStruct = {0};
|
|||
|
|
|||
|
GPIO_InitStruct.pin = GPIO_PIN9_MASK;
|
|||
|
GPIO_InitStruct.mode = FL_GPIO_MODE_OUTPUT;
|
|||
|
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL; //FL_GPIO_OUTPUT_OPENDRAIN
|
|||
|
GPIO_InitStruct.pull = FL_DISABLE;
|
|||
|
GPIO_InitStruct.remapPin = FL_DISABLE; //注意
|
|||
|
GPIO_InitStruct.analogSwitch = FL_DISABLE;
|
|||
|
FL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
|||
|
FL_GPIO_ResetOutputPin(GPIOB, GPIO_PIN8_MASK);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
/*---------------------------------------------------------------------------
|
|||
|
|Prototype : lpt32_ch2_set_pwm
|
|||
|
|Called by :
|
|||
|
|Preconditions :
|
|||
|
|Input parameters :
|
|||
|
|Output parameters :
|
|||
|
|Return value :
|
|||
|
|Description :
|
|||
|
----------------------------------------------------------------------------*/
|
|||
|
void lpt32_ch2_set_pwm(void)
|
|||
|
{
|
|||
|
FL_GPIO_InitTypeDef GPIO_InitStruct = {0};
|
|||
|
|
|||
|
GPIO_InitStruct.pin = GPIO_PIN9_MASK;
|
|||
|
GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;
|
|||
|
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL; //FL_GPIO_OUTPUT_OPENDRAIN
|
|||
|
GPIO_InitStruct.pull = FL_DISABLE;
|
|||
|
GPIO_InitStruct.remapPin = FL_ENABLE; //注意
|
|||
|
GPIO_InitStruct.analogSwitch = FL_DISABLE;
|
|||
|
FL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
|||
|
}
|
|||
|
|
|||
|
/*end line*/
|
|||
|
|