LED Blinker Circuit Design
DXF Drawing
MILLING_CUTOUT layer and shows the 1.5mm non-plated full-height isolation slot centered at x=85mm on the 200×140mm board. Specify 2-layer FR4, ENIG in the fab order notes.Table
| Function | STM32 Pin | Net |
|---|---|---|
| LTE UART TX | PA2 / USART2_TX | LTE_UART2_TX |
| LTE UART RX | PA3 / USART2_RX | LTE_UART2_RX |
| LTE power key | PB0 | LTE_PWRKEY |
| LTE reset | PB1 | LTE_RESET |
| LTE status | PB2 | LTE_STATUS |
| OLED SCL | PB6 / I2C1_SCL | I2C1_SCL |
| OLED SDA | PB7 / I2C1_SDA | I2C1_SDA |
| DS18B20 data | PB8 | DS18B20_DATA |
| DHT22 data | PB9 | DHT22_DATA |
| Relay control | PB10 | RELAY_CTRL |
| ACS712 analog | PA0 / ADC1_IN0 | ACS712_ADC |
| Status LED | PB5 | STATUS_LED |
| Debug UART TX | PA9 / USART1_TX | UART1_TX_DEBUG |
| Debug UART RX | PA10 / USART1_RX | UART1_RX_DEBUG |
C
#include "main.h" ADC_HandleTypeDef hadc1; I2C_HandleTypeDef hi2c1; UART_HandleTypeDef huart1; UART_HandleTypeDef huart2; #define LTE_PWRKEY_GPIO_Port GPIOB #define LTE_PWRKEY_Pin GPIO_PIN_0 #define LTE_RESET_GPIO_Port GPIOB #define LTE_RESET_Pin GPIO_PIN_1 #define LTE_STATUS_GPIO_Port GPIOB #define LTE_STATUS_Pin GPIO_PIN_2 #define STATUS_LED_GPIO_Port GPIOB #define STATUS_LED_Pin GPIO_PIN_5 #define DS18B20_GPIO_Port GPIOB #define DS18B20_Pin GPIO_PIN_8 #define DHT22_GPIO_Port GPIOB #define DHT22_Pin GPIO_PIN_9 #define RELAY_CTRL_GPIO_Port GPIOB #define RELAY_CTRL_Pin GPIO_PIN_10 static void LTE_SendAT(const char *cmd) { HAL_UART_Transmit(&huart2, (uint8_t*)cmd, strlen(cmd), HAL_MAX_DELAY); HAL_UART_Transmit(&huart2, (uint8_t*)"\r\n", 2, HAL_MAX_DELAY); } uint16_t Read_ACS712_ADC(void) { HAL_ADC_Start(&hadc1); HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY); return HAL_ADC_GetValue(&hadc1); } int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_ADC1_Init(); MX_I2C1_Init(); MX_USART1_UART_Init(); MX_USART2_UART_Init(); HAL_GPIO_WritePin(RELAY_CTRL_GPIO_Port, RELAY_CTRL_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(LTE_RESET_GPIO_Port, LTE_RESET_Pin, GPIO_PIN_SET); LTE_SendAT("AT"); while (1) { HAL_GPIO_TogglePin(STATUS_LED_GPIO_Port, STATUS_LED_Pin); uint16_t adc = Read_ACS712_ADC(); char msg[64]; snprintf(msg, sizeof(msg), "ACS712 ADC=%u\r\n", adc); HAL_UART_Transmit(&huart1, (uint8_t*)msg, strlen(msg), HAL_MAX_DELAY); HAL_Delay(1000); } }
Platform
Pin Mapping
Minimal HAL Main Loop Skeleton
Open Firmware Items