2026-08-10 21:18:36 +08:00
|
|
|
|
#include "system.h"
|
|
|
|
|
|
#include "uart.h"
|
|
|
|
|
|
#include "relay.h"
|
|
|
|
|
|
|
|
|
|
|
|
DMA_HandleTypeDef hdma_usart3_rx;
|
|
|
|
|
|
DMA_HandleTypeDef hdma_uart4_rx;
|
|
|
|
|
|
|
|
|
|
|
|
static IWDG_HandleTypeDef hiwdg; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD><C5B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>˽<EFBFBD><CBBD> */
|
|
|
|
|
|
|
|
|
|
|
|
/* LSI(~40kHz) / 256<35><36>Ƶ / <20><><EFBFBD><EFBFBD>4095 <20><> <20><>ʱԼ26s<36><73>LSI Ư<><C6AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ17s<37><73> */
|
|
|
|
|
|
static void MX_IWDG_Init(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
hiwdg.Instance = IWDG;
|
|
|
|
|
|
hiwdg.Init.Prescaler = IWDG_PRESCALER_256;
|
|
|
|
|
|
hiwdg.Init.Reload = 4095;
|
|
|
|
|
|
if (HAL_IWDG_Init(&hiwdg) != HAL_OK) Error_Handler();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* ι<><CEB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD> app_bg_service<63><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>϶<EFBFBD><CFB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
|
void IWDG_Feed(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
HAL_IWDG_Refresh(&hiwdg);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>HAL/ʱ<EFBFBD><EFBFBD>/GPIO/DMA/UART/<EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD>
|
|
|
|
|
|
* @note BootLoader <EFBFBD><EFBFBD>תǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IWDG<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᄀ<EFBFBD><EFBFBD><EFBFBD>ӹ<EFBFBD>ι<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* ֮<EFBFBD><EFBFBD> NET_init <EFBFBD>ȳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD> bg_delay <EFBFBD><EFBFBD> app_bg_service ι<EFBFBD><EFBFBD>
|
|
|
|
|
|
*/
|
|
|
|
|
|
void Board_Init(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
HAL_Init();
|
|
|
|
|
|
SystemClock_Config();
|
|
|
|
|
|
MX_GPIO_Init();
|
|
|
|
|
|
MX_DMA_Init();
|
|
|
|
|
|
MX_USART1_UART_Init();
|
|
|
|
|
|
MX_USART2_UART_Init(); /* RS485 ι<>ϳ<EFBFBD> */
|
|
|
|
|
|
MX_USART3_UART_Init(); /* 4G Air780E */
|
|
|
|
|
|
MX_UART4_UART_Init(); /* WiFi ESP-01S */
|
|
|
|
|
|
MX_IWDG_Init();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void SystemClock_Config(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
|
|
|
|
|
|
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
|
|
|
|
|
|
|
|
|
|
|
|
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
|
|
|
|
|
|
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
|
|
|
|
|
|
RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
|
|
|
|
|
|
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
|
|
|
|
|
|
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
|
|
|
|
|
|
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
|
|
|
|
|
|
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
|
|
|
|
|
|
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) Error_Handler();
|
|
|
|
|
|
|
|
|
|
|
|
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
|
|
|
|
|
|
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
|
|
|
|
|
|
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
|
|
|
|
|
|
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
|
|
|
|
|
|
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
|
|
|
|
|
|
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) Error_Handler();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void MX_DMA_Init(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
__HAL_RCC_DMA1_CLK_ENABLE();
|
|
|
|
|
|
__HAL_RCC_DMA2_CLK_ENABLE();
|
|
|
|
|
|
HAL_NVIC_SetPriority(DMA1_Channel3_IRQn, 0, 0);
|
|
|
|
|
|
HAL_NVIC_EnableIRQ(DMA1_Channel3_IRQn);
|
|
|
|
|
|
HAL_NVIC_SetPriority(DMA2_Channel3_IRQn, 0, 0);
|
|
|
|
|
|
HAL_NVIC_EnableIRQ(DMA2_Channel3_IRQn);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void MX_GPIO_Init(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
GPIO_InitTypeDef g = {0};
|
|
|
|
|
|
|
|
|
|
|
|
__HAL_RCC_GPIOD_CLK_ENABLE();
|
|
|
|
|
|
__HAL_RCC_GPIOA_CLK_ENABLE();
|
|
|
|
|
|
__HAL_RCC_GPIOB_CLK_ENABLE();
|
|
|
|
|
|
__HAL_RCC_GPIOC_CLK_ENABLE();
|
|
|
|
|
|
|
|
|
|
|
|
/* <20>̵<EFBFBD><CCB5><EFBFBD>Ϊ<EFBFBD>ߵ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD>ϣ<EFBFBD><CFA3>ϵ<EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õͣ<C3B5><CDA3><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
|
HAL_GPIO_WritePin(Relay1_Port, Relay1_Pin, GPIO_PIN_RESET);
|
|
|
|
|
|
HAL_GPIO_WritePin(Relay2_Port, Relay2_Pin, GPIO_PIN_RESET);
|
|
|
|
|
|
HAL_GPIO_WritePin(Relay3_Port, Relay3_Pin, GPIO_PIN_RESET);
|
|
|
|
|
|
HAL_GPIO_WritePin(Relay4_Port, Relay4_Pin, GPIO_PIN_RESET);
|
|
|
|
|
|
|
|
|
|
|
|
g.Mode = GPIO_MODE_OUTPUT_PP;
|
|
|
|
|
|
g.Pull = GPIO_NOPULL;
|
|
|
|
|
|
g.Speed = GPIO_SPEED_FREQ_LOW;
|
|
|
|
|
|
|
|
|
|
|
|
g.Pin = Relay1_Pin; HAL_GPIO_Init(Relay1_Port, &g);
|
|
|
|
|
|
g.Pin = Relay2_Pin; HAL_GPIO_Init(Relay2_Port, &g);
|
|
|
|
|
|
g.Pin = Relay3_Pin; HAL_GPIO_Init(Relay3_Port, &g);
|
|
|
|
|
|
g.Pin = Relay4_Pin; HAL_GPIO_Init(Relay4_Port, &g);
|
2026-08-14 23:22:34 +08:00
|
|
|
|
|
|
|
|
|
|
/* CAT_PWR(PC4): 4G ģ<>鿪<EFBFBD><E9BFAA><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD>©<EFBFBD><C2A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=ģ<>鿪<EFBFBD><E9BFAA><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>ɣ<EFBFBD> */
|
|
|
|
|
|
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_4, GPIO_PIN_RESET);
|
|
|
|
|
|
g.Mode = GPIO_MODE_OUTPUT_OD;
|
|
|
|
|
|
g.Pin = GPIO_PIN_4;
|
|
|
|
|
|
HAL_GPIO_Init(GPIOC, &g);
|
|
|
|
|
|
|
|
|
|
|
|
/* ESP_EN(PA6): WiFi ģ<><C4A3>ʹ<EFBFBD>ܣ<EFBFBD><DCA3>ߵ<EFBFBD>ƽ<EFBFBD><C6BD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ<EFBFBD><C6BD> */
|
|
|
|
|
|
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_SET);
|
|
|
|
|
|
g.Mode = GPIO_MODE_OUTPUT_PP;
|
|
|
|
|
|
g.Pin = GPIO_PIN_6;
|
|
|
|
|
|
HAL_GPIO_Init(GPIOA, &g);
|
|
|
|
|
|
|
|
|
|
|
|
/* BT_RST(PA7): <20><><EFBFBD><EFBFBD>ģ<EFBFBD>鸴λ<E9B8B4>ţ<EFBFBD><C5A3>͵<EFBFBD>ƽ=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ=<3D><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
|
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_RESET);
|
|
|
|
|
|
g.Pin = GPIO_PIN_7;
|
|
|
|
|
|
HAL_GPIO_Init(GPIOA, &g);
|
2026-08-10 21:18:36 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void Error_Handler(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
/* <20><>ʼ<EFBFBD><CABC>ʧ<EFBFBD>ܣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFA3AC> IWDG <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿ<EFBFBD><C9BF>Ź<EFBFBD><C5B9><EFBFBD>λ */
|
|
|
|
|
|
__disable_irq();
|
|
|
|
|
|
while (1)
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|