// void setup() {
// // put your setup code here, to run once:
// Serial.begin(115200);
// Serial.println("Hello, STM32!");
// pinMode(LED_BUILTIN, OUTPUT);
// pinMode(5, OUTPUT);
// }
// void loop() {
// digitalWrite(LED_BUILTIN, HIGH);
// digitalWrite(5, LOW);
// delay(500);
// digitalWrite(LED_BUILTIN, LOW);
// digitalWrite(5, HIGH);
// delay(500);
// }
#include "stm32c0xx_hal.h"
static uint8_t led_state = 0; // состояние светодиода PB0
static uint8_t button_pressed = 0; // флаг, что кнопка уже была обработана
int main(void) {
HAL_Init();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE(); // Включаем тактирование порта B
// Настройка PA5 (встроенный LED LD3)
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_5;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
// Настройка PB0 (внешний LED)
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
// Настройка PA0 — кнопка
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL; // кнопка соединяет с GND
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
// Начальное состояние
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); // LD3 выключен
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); // PB0 выключен
// while (1) {
// HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
// HAL_Delay(600); // 500 ms
// HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
// HAL_Delay(800); // 500 ms
// }
while (1) {
if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_SET) {
// if (!button_pressed) {
// button_pressed = 1;
// led_state = !led_state;
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0,GPIO_PIN_SET);
} else {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0,GPIO_PIN_RESET);
// Кнопка отпущена — сбрасываем флаг
// button_pressed = 0;
}
}
}