Files
CHJ/user/MCU/lhl_gpio.c
2026-03-20 21:19:04 +08:00

69 lines
1.9 KiB
C

#include "../main/SystemInclude.h"
/*****GPIO初始化*****/
void SystemGPIOInit(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Pin = GPIO_PIN_All;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Current = GPIO_CURRENT_2mA;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.SchmittTrigger = ENABLE;
GPIO_InitStruct.Alternate = GPIOx_AF_GPIO; // // AF为普通IO
LHL_GPIO_Init(pGPIO0, &GPIO_InitStruct);
LHL_GPIO_Init(pGPIO1, &GPIO_InitStruct);
GPIO_InitStruct.Pin &= ~(GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3 | GPIO_PIN_4); //避开XIN XOUT SWDIO SWCLK
LHL_GPIO_Init(pGPIO2, &GPIO_InitStruct);
// TEST_PIN_OUT();
// SET_PIN(GPIO1, GPIO_PIN_7);
////
// TDU_SET_PIN_OUT();
// CLR_TDU_SET_PIN();
//// SET_TDU_SET_PIN();
//
// HEATING_PIN_OUT();
// CLR_HEATING_PIN();
//// SET_HEATING_PIN();
//
// HP_CON_PIN_OUT();
//// CLR_HP_CON_PIN();
// SET_HP_CON_PIN();
}
/*****输出*****/
void EnableOutput(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinPos)
{
GPIOx->OE |= 1<<GPIO_PinPos;
GPIOx->IE &= ~(1<<GPIO_PinPos);
// 设置端口电流驱动能力
GPIOx->DR &= ~(3u << (GPIO_PinPos * 2));
GPIOx->DR |= ((uint32_t)GPIO_CURRENT_2mA << (GPIO_PinPos * 2));
// 推挽输出设定
GPIOx->OD &= ~(1u << GPIO_PinPos);
// // 开漏输出设定
// GPIOx->OD |= (1u << GPIO_PinPos);
}
/*****输入*****/
void EnableInput(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinPos)
{
GPIOx->OE &= ~(1u << GPIO_PinPos);
GPIOx->IE |= (1u << GPIO_PinPos);
}
/*****上拉*****/
void EnablePullUp(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinPos)
{
GPIOx->PDE &= ~(1u << GPIO_PinPos);
GPIOx->PUE |= (1u << GPIO_PinPos);
}
/*****下拉*****/
void EnablePullDown(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinPos)
{
GPIOx->PUE &= ~(1u << GPIO_PinPos);
GPIOx->PDE |= (1u << GPIO_PinPos);
}