| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 | #include "stm32f0xx_hal.h"#include "gpio.h"#define SET_OUT_1   HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET)#define SET_OUT_2   HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_SET)#define SET_OUT_3   HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_SET)#define SET_OUT_4   HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_SET)#define RESET_OUT_1   HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET)#define RESET_OUT_2   HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_RESET)#define RESET_OUT_3   HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_RESET)#define RESET_OUT_4   HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_RESET)static uint8_t next_out_number = 0;static uint8_t current_out_number = 0;//void gpio_init(void){    GPIO_InitTypeDef GPIO_InitStruct = {0};    __HAL_RCC_GPIOA_CLK_ENABLE();    __HAL_RCC_GPIOB_CLK_ENABLE();        GPIO_InitStruct.Pin = GPIO_PIN_12;    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;    GPIO_InitStruct.Pull = GPIO_PULLDOWN;    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);        GPIO_InitStruct.Pin = GPIO_PIN_12;    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);    // GPIO_PIN_5 - инфракрасный LED    GPIO_InitStruct.Pin = GPIO_PIN_1 | GPIO_PIN_3 | GPIO_PIN_4;    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);        // LED - индикация входного сигнала    GPIO_InitStruct.Pin = GPIO_PIN_2;     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_SET);        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_RESET);    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1 | GPIO_PIN_3 | GPIO_PIN_4, GPIO_PIN_RESET);}//void gpio_set_output(bool state){    if (state == true)     {        current_out_number = next_out_number;              switch (next_out_number)        {            case 0:                SET_OUT_1;            break;                    case 1:                SET_OUT_2;            break;                    case 2:                SET_OUT_3;            break;                    case 3:                SET_OUT_4;            break;                    default : break;        }                // При включении переключаемся на следующий выход        if (state == true)            next_out_number = next_out_number == 3 ? 0 : next_out_number + 1;    }    else    {        switch (current_out_number)        {            case 0:                RESET_OUT_1;            break;                    case 1:                RESET_OUT_2;            break;                    case 2:                RESET_OUT_3;            break;                    case 3:                RESET_OUT_4;            break;                    default : break;        }    }        }#if 0//void led_togle(void){    HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_1);}// Индикация нажатия куркаvoid led_signal_on(void){    HAL_GPIO_WritePin(GPIOF, GPIO_PIN_1, GPIO_PIN_RESET);}// Индикация нажатия куркаvoid led_signal_off(void){    HAL_GPIO_WritePin(GPIOF, GPIO_PIN_1, GPIO_PIN_SET);}// Инфракрасный диодvoid led_inf_on(void){    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);}// Инфракрасный диодvoid led_inf_off(void){    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);}// Индикация напряжения АКБvoid led_but_on(void){    HAL_GPIO_WritePin(GPIOF, GPIO_PIN_0, GPIO_PIN_RESET);}// Индикация напряжения АКБvoid led_but_toggle(void){    HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_0);}#endif
 |