СЦБИСТ - железнодорожный форум, блоги, фотогалерея, социальная сеть СЦБИСТ - железнодорожный форум, блоги, фотогалерея, социальная сеть
Вернуться   СЦБИСТ - железнодорожный форум, блоги, фотогалерея, социальная сеть > Эксплуатация железных дорог, вагоны, контактная сеть, связь, коммерческая работа > Связь на железнодорожном транспорте

Связь на железнодорожном транспорте Подфорум связистов
Описание темы:Все в рамках темы.

Закладки ДневникиПоддержка Сообщество Комментарии к фото Сообщения за день
Ответ    
 
В мои закладки Подписка на тему по электронной почте Отправить другу по электронной почте Опции темы Поиск в этой теме
Старый 12.10.2023, 16:06   #106 (ссылка)
Super V.I.P.
 
Аватар для Legon


Регистрация: 18.03.2009
Адрес: Галифакс
Сообщений: 3,450
Поблагодарил: 176 раз(а)
Поблагодарили 338 раз(а)
Фотоальбомы: 0
Загрузки: 453
Закачек: 5
Репутация: 122
Цитата:
Сообщение от Alex_Mn Посмотреть сообщение
тут тема вроде про р/с, ПСГО.

наполеонам а так же кутузовым из 6 палаты, сей девайс вреден. (побочные действия)
Надпись нужно добавить.

Ахтунг ахтунг...толко диля РЖД

Последний раз редактировалось Legon; 12.10.2023 в 16:09.
Legon вне форума   Цитировать 0
Старый 12.10.2023, 16:39   #107 (ссылка)
Корифей СЦБ
 
Аватар для Александр


Регистрация: 25.02.2009
Адрес: Ленинград
Возраст: 48
Сообщений: 9,494
Поблагодарил: 1605 раз(а)
Поблагодарили 2336 раз(а)
Фотоальбомы: 1
Загрузки: 317
Закачек: 7
Репутация: 1364
Цитата:
Сообщение от Alex_Mn Посмотреть сообщение
наполеонам а так же кутузовым из 6 палаты, сей девайс вреден. (побочные действия)
Alex_Mn, Наполеон - это величие.
Здесь же маразм шкалит. Похоже, новый персонаж в психиатрии: дед-Бидон
__________________
"Не думай. Думаешь - не говори. Думаешь и говоришь - не пиши. Думаешь, говоришь и пишешь - не подписывай. Думаешь, говоришь, пишешь и подписываешь - не удивляйся."
Ф.Э. Дзержинский.
Александр на форуме   Цитировать 2
Старый 12.10.2023, 16:52   #108 (ссылка)
V.I.P.
 
Аватар для Alex_Mn


Регистрация: 02.04.2023
Сообщений: 239
Поблагодарил: 2 раз(а)
Поблагодарили 39 раз(а)
Фотоальбомы: 0
Загрузки: 13707
Закачек: 0
Репутация: 121
величие это в прошлом "в истории", а "в настоящем" из 6 палаты, образы как раз в акурат).

если разум имеет границы
то маразм безграничен
Alex_Mn вне форума   Цитировать 0
Старый 12.10.2023, 16:57   #109 (ссылка)
Super V.I.P.
 
Аватар для Legon


Регистрация: 18.03.2009
Адрес: Галифакс
Сообщений: 3,450
Поблагодарил: 176 раз(а)
Поблагодарили 338 раз(а)
Фотоальбомы: 0
Загрузки: 453
Закачек: 5
Репутация: 122
коллеги, тема про палату 6 вижу для вас интересна, но прошу не отвлекаться от темы ПСГО
Legon вне форума   Цитировать 0
Старый 12.10.2023, 17:16   #110 (ссылка)
V.I.P.
 
Аватар для Alex_Mn


Регистрация: 02.04.2023
Сообщений: 239
Поблагодарил: 2 раз(а)
Поблагодарили 39 раз(а)
Фотоальбомы: 0
Загрузки: 13707
Закачек: 0
Репутация: 121
хорошо перейдем к схемам.
схема основной платы

предварительный усилитель с компрессором, индикатором.

схемка кнопок

можно углубится в программное обеспечение.

Alex_Mn добавил 12.10.2023 в 18:11
файл main.c

PHP код:
/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file           : main.c
  * @brief          : Main program body
  ******************************************************************************
  * @attention
  * Autor Mordovin A A
  *
  * Copyright (c) 2023 STMicroelectronics.
  * All rights reserved.
  *
  * This software is licensed under terms that can be found in the LICENSE file
  * in the root directory of this software component.
  * If no LICENSE file comes with this software, it is provided AS-IS.
  *
  ******************************************************************************
  */
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "cmsis_os.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "task.h"
#include "timers.h"
#include "queue.h"
/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
/* структура кнопок */
typedef enum {
  
BUTTON_IDLE,
  
BUTTON_PRESSED,
  
BUTTON_LONG_PRESSED,
  
BUTTON_RELEASED
button_state_t;

typedef struct {
  
GPIO_TypeDef *port;
  
uint16_t pin;
  
button_state_t state;
  
TickType_t press_start_time;
button_t;

typedef struct {
    
GPIO_TypeDef *port;
    
uint16_t pin;
}
led_t;

/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
#define BUTTON_DEBOUNCE_TIME_MS 20  // время антидребезга
#define prm 1                       // автоматическое вкл с дежурн прм в прм при нажатии sourse  1 вкл,  0 выкл
#define SOURCE_BUTTONS 4            // задаем кол-во кнопок селектор подкл
#define OP_BUTTONS 6                // задаем кол-во кнопок оповещения
#define PRD_BUTTONS 2               // задаем кол-во кнопок ПРД. сама кнопка ПРД и педаль ПРД
#define NUM_LED_IN 4                // задаем кол-во светодиодов 4шт селектор подкл
#define NUM_LED_OP 6                // задаем кол-во светодиодов 6 шт оповещения
#define time_out 1                   // автоматическое ворачивание sourse к СДПС  1 вкл, 0 выкл.
#define Time 60000                  // время через какое вернется sourse  к СДПС (мс)
/* USER CODE END PD */

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
///// создаем массив кнопок селектор источника
button_t buttons_s[SOURCE_BUTTONS] =
{

        {
SB2_GPIO_PortSB2_PinBUTTON_IDLE0},
        {
SB3_GPIO_PortSB3_PinBUTTON_IDLE0},
        {
SB4_GPIO_PortSB4_PinBUTTON_IDLE0},
        {
SB5_GPIO_PortSB5_PinBUTTON_IDLE0},
};
///// создаем массив кнопок оповещения
button_t buttons_op[OP_BUTTONS] =
{
        {
SD1_GPIO_PortSD1_PinBUTTON_IDLE0},
        {
SD2_GPIO_PortSD2_PinBUTTON_IDLE0},
        {
SD3_GPIO_PortSD3_PinBUTTON_IDLE0},
        {
SD4_GPIO_PortSD4_PinBUTTON_IDLE0},
        {
SD5_GPIO_PortSD5_PinBUTTON_IDLE0},
        {
SD6_GPIO_PortSD6_PinBUTTON_IDLE0},
};
///// создаем массив кнопка прд и педаль прд
button_t buttons_prd[PRD_BUTTONS] =
{
        {
SB1_GPIO_PortSB1_PinBUTTON_IDLE0},
        {
Pedal_GPIO_PortPedal_PinBUTTON_IDLE0}//
};
///// создаем массив светодиодов селектора ситочника
led_t led_in[NUM_LED_IN] =
{
        {
LB2_A_GPIO_PortLB2_A_Pin},
        {
LB3_A_GPIO_PortLB3_A_Pin},
        {
LB4_A_GPIO_PortLB4_A_Pin},
        {
LB5_A_GPIO_PortLB5_A_Pin},
};
////
led_t led_in_B[NUM_LED_IN] =
{
        {
LB2_B_GPIO_PortLB2_B_Pin},
        {
LB3_B_GPIO_PortLB3_B_Pin},
        {
LB4_B_GPIO_PortLB4_B_Pin},
        {
LB5_B_GPIO_PortLB5_B_Pin},
};
////
led_t led_op_A[NUM_LED_OP] =
{
        {
LD1_A_GPIO_PortLD1_A_Pin},
        {
LD2_A_GPIO_PortLD2_A_Pin},
        {
LD3_A_GPIO_PortLD3_A_Pin},
        {
LD4_A_GPIO_PortLD4_A_Pin},
        {
LD5_A_GPIO_PortLD5_A_Pin},
        {
LD6_A_GPIO_PortLD6_A_Pin},
};
//////
led_t led_op_B[NUM_LED_OP] =
{
        {
LD1_B_GPIO_PortLD1_B_Pin},
        {
LD2_B_GPIO_PortLD2_B_Pin},
        {
LD3_B_GPIO_PortLD3_B_Pin},
        {
LD4_B_GPIO_PortLD4_B_Pin},
        {
LD5_B_GPIO_PortLD5_B_Pin},
        {
LD6_B_GPIO_PortLD6_B_Pin},
};
/* USER CODE END PM */

/* Private variables ---------------------------------------------------------*/
osThreadId defaultTaskHandle;
osThreadId button_s_TaskHandle;
osThreadId button_op_TaskHandle;
osThreadId button_prd_TaskHandle;
osThreadId read_Queue_sHandle;
osThreadId flash_LED_TaskHandle;
osThreadId read_Queue_opHandle;
osThreadId mig_ledHandle;
osMessageQId myQueue_sHandle;
osMessageQId myQueue_opHandle;
osTimerId myTimer01Handle;
osSemaphoreId myBinarySem01Handle;
osSemaphoreId myBinarySem02Handle;
/* USER CODE BEGIN PV */
//TaskHandle_t xTaskToNotify;

GPIO_PinState portValue;

/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static 
void MX_GPIO_Init(void);
void StartDefaultTask(void const * argument);
void Vbutton_s_Task(void const * argument);
void Vbutton_op_Task(void const * argument);
void Vbutton_prd_Task(void const * argument);
void V_read_Queue_s(void const * argument);
void Vflash_LED_Task(void const * argument);
void V_read_Queue_op(void const * argument);
void Vmig_led(void const * argument);
void Callback01(void const * argument);

/* USER CODE BEGIN PFP */
void Reset_Led(void);
//void migan_led(void);
/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
void Reset_Led()  //обнуление светодиодов
{
    for (
int i 0NUM_LED_INi++)
    {
        
HAL_GPIO_WritePin(led_in[i].portled_in[i].pinGPIO_PIN_RESET);//
    
}
}


/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  
/* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  
HAL_Init();

  
/* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  
SystemClock_Config();

  
/* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  
MX_GPIO_Init();
  
/* USER CODE BEGIN 2 */

  /* мигание светодиодами */
    
for (int i 0NUM_LED_OP; ++i)
    {
        
HAL_GPIO_TogglePin(led_op_A[i].portled_op_A[i].pin);//
        
HAL_Delay(150);
        
HAL_GPIO_TogglePin(led_op_A[i].portled_op_A[i].pin);//
    
}
    for (
int i 0NUM_LED_OP; ++i)
    {
        
HAL_GPIO_TogglePin(led_op_B[i].portled_op_B[i].pin);//
        
HAL_Delay(150);
        
HAL_GPIO_TogglePin(led_op_B[i].portled_op_B[i].pin);//
    
}
    for (
int i 0NUM_LED_IN; ++i)
    {
        
HAL_GPIO_TogglePin(led_in[i].portled_in[i].pin);//
        
HAL_Delay(150);
        
HAL_GPIO_TogglePin(led_in[i].portled_in[i].pin);//
    
}
    for (
int i 0NUM_LED_IN; ++i)
    {
        
HAL_GPIO_TogglePin(led_in_B[i].portled_in_B[i].pin);//
        
HAL_Delay(150);
        
HAL_GPIO_TogglePin(led_in_B[i].portled_in_B[i].pin);//
    
}
    
/*  mute отключаем везде микрофоны  */
    
HAL_GPIO_WritePin(Mut1_GPIO_PortMut1_PinGPIO_PIN_SET);  // mute ON СДПС
    
HAL_GPIO_WritePin(Mut2_GPIO_PortMut2_PinGPIO_PIN_SET);  // mute ON ПРС КВ
    
HAL_GPIO_WritePin(Mut3_GPIO_PortMut3_PinGPIO_PIN_SET);  // mute ON ПРС УКВ
    
HAL_GPIO_WritePin(Mut4_GPIO_PortMut4_PinGPIO_PIN_SET);  // mute ON СРС УКВ

  
HAL_GPIO_WritePin(LB2_A_GPIO_PortLB2_A_PinGPIO_PIN_SET); // включаем sourse к СДПС
  /* USER CODE END 2 */

  /* USER CODE BEGIN RTOS_MUTEX */
  /* add mutexes, ... */
  /* USER CODE END RTOS_MUTEX */

  /* Create the semaphores(s) */
  /* definition and creation of myBinarySem01 */
  
osSemaphoreDef(myBinarySem01);
  
myBinarySem01Handle osSemaphoreCreate(osSemaphore(myBinarySem01), 1);

  
/* definition and creation of myBinarySem02 */
  
osSemaphoreDef(myBinarySem02);
  
myBinarySem02Handle osSemaphoreCreate(osSemaphore(myBinarySem02), 1);

  
/* USER CODE BEGIN RTOS_SEMAPHORES */
  /* add semaphores, ... */
  /* USER CODE END RTOS_SEMAPHORES */

  /* Create the timer(s) */
  /* definition and creation of myTimer01 */
  
osTimerDef(myTimer01Callback01);
  
myTimer01Handle osTimerCreate(osTimer(myTimer01), osTimerOnceNULL);

  
/* USER CODE BEGIN RTOS_TIMERS */
  /* start timers, add new ones, ... */
  
xTimerChangePeriod(myTimer01HandleTime0);
//  xTimerStart(myTimer01Handle, 0);

  /* USER CODE END RTOS_TIMERS */

  /* Create the queue(s) */
  /* definition and creation of myQueue_s */
  
osMessageQDef(myQueue_s2int);
  
myQueue_sHandle osMessageCreate(osMessageQ(myQueue_s), NULL);

  
/* definition and creation of myQueue_op */
  
osMessageQDef(myQueue_op1int);
  
myQueue_opHandle osMessageCreate(osMessageQ(myQueue_op), NULL);

  
/* USER CODE BEGIN RTOS_QUEUES */
  /* add queues, ... */
  /* USER CODE END RTOS_QUEUES */

  /* Create the thread(s) */
  /* definition and creation of defaultTask */
  
osThreadDef(defaultTaskStartDefaultTaskosPriorityBelowNormal0128);
  
defaultTaskHandle osThreadCreate(osThread(defaultTask), NULL);

  
/* definition and creation of button_s_Task */
  
osThreadDef(button_s_TaskVbutton_s_TaskosPriorityBelowNormal0128);
  
button_s_TaskHandle osThreadCreate(osThread(button_s_Task), NULL);

  
/* definition and creation of button_op_Task */
  
osThreadDef(button_op_TaskVbutton_op_TaskosPriorityBelowNormal0128);
  
button_op_TaskHandle osThreadCreate(osThread(button_op_Task), NULL);

  
/* definition and creation of button_prd_Task */
  
osThreadDef(button_prd_TaskVbutton_prd_TaskosPriorityBelowNormal0128);
  
button_prd_TaskHandle osThreadCreate(osThread(button_prd_Task), NULL);

  
/* definition and creation of read_Queue_s */
  
osThreadDef(read_Queue_sV_read_Queue_sosPriorityBelowNormal0128);
  
read_Queue_sHandle osThreadCreate(osThread(read_Queue_s), NULL);

  
/* definition and creation of flash_LED_Task */
  
osThreadDef(flash_LED_TaskVflash_LED_TaskosPriorityBelowNormal0128);
  
flash_LED_TaskHandle osThreadCreate(osThread(flash_LED_Task), NULL);

  
/* definition and creation of read_Queue_op */
  
osThreadDef(read_Queue_opV_read_Queue_oposPriorityBelowNormal0128);
  
read_Queue_opHandle osThreadCreate(osThread(read_Queue_op), NULL);

  
/* definition and creation of mig_led */
  
osThreadDef(mig_ledVmig_ledosPriorityBelowNormal0128);
  
mig_ledHandle osThreadCreate(osThread(mig_led), NULL);

  
/* USER CODE BEGIN RTOS_THREADS */
  /* add threads, ... */
  /* USER CODE END RTOS_THREADS */

  /* Start scheduler */
  
osKernelStart();
  
/* We should never get here as control is now taken by the scheduler */
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  
while (1)
  {
    
/* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */

  
}
  
/* USER CODE END 3 */
}

/**
  * @brief System Clock Configuration
  * @retval None
  */
void SystemClock_Config(void)
{
  
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

  
/** Initializes the RCC Oscillators according to the specified parameters
  * in the RCC_OscInitTypeDef structure.
  */
  
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();
  }

  
/** Initializes the CPU, AHB and APB buses clocks
  */
  
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_ClkInitStructFLASH_LATENCY_2) != HAL_OK)
  {
    
Error_Handler();
  }
}

/**
  * @brief GPIO Initialization Function
  * @param None
  * @retval None
  */
static void MX_GPIO_Init(void)
{
  
GPIO_InitTypeDef GPIO_InitStruct = {0};
/* USER CODE BEGIN MX_GPIO_Init_1 */
/* USER CODE END MX_GPIO_Init_1 */

  /* GPIO Ports Clock Enable */
  
__HAL_RCC_GPIOE_CLK_ENABLE();
  
__HAL_RCC_GPIOA_CLK_ENABLE();
  
__HAL_RCC_GPIOC_CLK_ENABLE();
  
__HAL_RCC_GPIOB_CLK_ENABLE();
  
__HAL_RCC_GPIOD_CLK_ENABLE();

  
/*Configure GPIO pin Output Level */
  
HAL_GPIO_WritePin(GPIOELB4_B_Pin|LB5_A_Pin|PLA5_Pin|PLA4_Pin
                          
|PLA3_Pin|PRD2_Pin|PRD4_PinGPIO_PIN_RESET);

  
/*Configure GPIO pin Output Level */
  
HAL_GPIO_WritePin(GPIOAPLA7_Pin|LD1_B_Pin|LD3_B_Pin|LD5_B_Pin
                          
|LD5_A_PinGPIO_PIN_RESET);

  
/*Configure GPIO pin Output Level */
  
HAL_GPIO_WritePin(GPIOAMut3_Pin|Mut2_PinGPIO_PIN_SET);

  
/*Configure GPIO pin Output Level */
  
HAL_GPIO_WritePin(GPIOCPLA6_Pin|LD6_B_Pin|LD6_A_Pin|LD4_A_Pin
                          
|LD2_A_Pin|LD3_A_PinGPIO_PIN_RESET);

  
/*Configure GPIO pin Output Level */
  
HAL_GPIO_WritePin(Mut1_GPIO_PortMut1_PinGPIO_PIN_SET);

  
/*Configure GPIO pin Output Level */
  
HAL_GPIO_WritePin(Mut4_GPIO_PortMut4_PinGPIO_PIN_SET);

  
/*Configure GPIO pin Output Level */
  
HAL_GPIO_WritePin(GPIOBPRD3_Pin|PLA2_Pin|PLA1_Pin|LB3_A_Pin
                          
|LB3_B_Pin|LB4_A_PinGPIO_PIN_RESET);

  
/*Configure GPIO pin Output Level */
  
HAL_GPIO_WritePin(GPIODPRD_SDPS_Pin|LD2_B_Pin|LD4_B_Pin|LD1_A_Pin
                          
|LB5_B_Pin|LB1_A_Pin|LB1_B_Pin|LB2_A_Pin
                          
|LB2_B_PinGPIO_PIN_RESET);

  
/*Configure GPIO pins : LB4_B_Pin LB5_A_Pin PLA5_Pin Mut4_Pin
                           PLA4_Pin PLA3_Pin PRD2_Pin PRD4_Pin */
  
GPIO_InitStruct.Pin LB4_B_Pin|LB5_A_Pin|PLA5_Pin|Mut4_Pin
                          
|PLA4_Pin|PLA3_Pin|PRD2_Pin|PRD4_Pin;
  
GPIO_InitStruct.Mode GPIO_MODE_OUTPUT_PP;
  
GPIO_InitStruct.Pull GPIO_NOPULL;
  
GPIO_InitStruct.Speed GPIO_SPEED_FREQ_LOW;
  
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);

  
/*Configure GPIO pins : SB5_Pin SB4_Pin */
  
GPIO_InitStruct.Pin SB5_Pin|SB4_Pin;
  
GPIO_InitStruct.Mode GPIO_MODE_INPUT;
  
GPIO_InitStruct.Pull GPIO_PULLUP;
  
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);

  
/*Configure GPIO pins : PLA7_Pin Mut3_Pin Mut2_Pin LD1_B_Pin
                           LD3_B_Pin LD5_B_Pin LD5_A_Pin */
  
GPIO_InitStruct.Pin PLA7_Pin|Mut3_Pin|Mut2_Pin|LD1_B_Pin
                          
|LD3_B_Pin|LD5_B_Pin|LD5_A_Pin;
  
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);

  
/*Configure GPIO pin : RECLED7_Pin */
  
GPIO_InitStruct.Pin RECLED7_Pin;
  
GPIO_InitStruct.Mode GPIO_MODE_INPUT;
  
GPIO_InitStruct.Pull GPIO_NOPULL;
  
HAL_GPIO_Init(RECLED7_GPIO_Port, &GPIO_InitStruct);

  
/*Configure GPIO pins : PLA6_Pin LD6_B_Pin LD6_A_Pin LD4_A_Pin
                           LD2_A_Pin LD3_A_Pin */
  
GPIO_InitStruct.Pin PLA6_Pin|LD6_B_Pin|LD6_A_Pin|LD4_A_Pin
                          
|LD2_A_Pin|LD3_A_Pin;
  
GPIO_InitStruct.Mode GPIO_MODE_OUTPUT_PP;
  
GPIO_InitStruct.Pull GPIO_NOPULL;
  
GPIO_InitStruct.Speed GPIO_SPEED_FREQ_LOW;
  
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

  
/*Configure GPIO pins : Mut1_Pin PRD3_Pin PLA2_Pin PLA1_Pin
                           LB3_A_Pin LB3_B_Pin LB4_A_Pin */
  
GPIO_InitStruct.Pin Mut1_Pin|PRD3_Pin|PLA2_Pin|PLA1_Pin
                          
|LB3_A_Pin|LB3_B_Pin|LB4_A_Pin;
  
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);

  
/*Configure GPIO pins : RECLED6_Pin RECLED3_Pin RECLED2_Pin */
  
GPIO_InitStruct.Pin RECLED6_Pin|RECLED3_Pin|RECLED2_Pin;
  
GPIO_InitStruct.Mode GPIO_MODE_INPUT;
  
GPIO_InitStruct.Pull GPIO_NOPULL;
  
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

  
/*Configure GPIO pins : RECLED5_Pin RECLED4_Pin */
  
GPIO_InitStruct.Pin RECLED5_Pin|RECLED4_Pin;
  
GPIO_InitStruct.Mode GPIO_MODE_INPUT;
  
GPIO_InitStruct.Pull GPIO_NOPULL;
  
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);

  
/*Configure GPIO pins : Pedal_Pin SB3_Pin SB2_Pin */
  
GPIO_InitStruct.Pin Pedal_Pin|SB3_Pin|SB2_Pin;
  
GPIO_InitStruct.Mode GPIO_MODE_INPUT;
  
GPIO_InitStruct.Pull GPIO_PULLUP;
  
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

  
/*Configure GPIO pin : RECLED1_Pin */
  
GPIO_InitStruct.Pin RECLED1_Pin;
  
GPIO_InitStruct.Mode GPIO_MODE_INPUT;
  
GPIO_InitStruct.Pull GPIO_NOPULL;
  
HAL_GPIO_Init(RECLED1_GPIO_Port, &GPIO_InitStruct);

  
/*Configure GPIO pins : PRD_SDPS_Pin LD2_B_Pin LD4_B_Pin LD1_A_Pin
                           LB5_B_Pin LB1_A_Pin LB1_B_Pin LB2_A_Pin
                           LB2_B_Pin */
  
GPIO_InitStruct.Pin PRD_SDPS_Pin|LD2_B_Pin|LD4_B_Pin|LD1_A_Pin
                          
|LB5_B_Pin|LB1_A_Pin|LB1_B_Pin|LB2_A_Pin
                          
|LB2_B_Pin;
  
GPIO_InitStruct.Mode GPIO_MODE_OUTPUT_PP;
  
GPIO_InitStruct.Pull GPIO_NOPULL;
  
GPIO_InitStruct.Speed GPIO_SPEED_FREQ_LOW;
  
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);

  
/*Configure GPIO pins : SD2_Pin SD4_Pin SD6_Pin SD1_Pin
                           SB1_Pin */
  
GPIO_InitStruct.Pin SD2_Pin|SD4_Pin|SD6_Pin|SD1_Pin
                          
|SB1_Pin;
  
GPIO_InitStruct.Mode GPIO_MODE_INPUT;
  
GPIO_InitStruct.Pull GPIO_PULLUP;
  
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);

  
/*Configure GPIO pin : SD5_Pin */
  
GPIO_InitStruct.Pin SD5_Pin;
  
GPIO_InitStruct.Mode GPIO_MODE_INPUT;
  
GPIO_InitStruct.Pull GPIO_PULLUP;
  
HAL_GPIO_Init(SD5_GPIO_Port, &GPIO_InitStruct);

  
/*Configure GPIO pin : SD3_Pin */
  
GPIO_InitStruct.Pin SD3_Pin;
  
GPIO_InitStruct.Mode GPIO_MODE_INPUT;
  
GPIO_InitStruct.Pull GPIO_PULLUP;
  
HAL_GPIO_Init(SD3_GPIO_Port, &GPIO_InitStruct);

/* USER CODE BEGIN MX_GPIO_Init_2 */
/* USER CODE END MX_GPIO_Init_2 */
}

/* USER CODE BEGIN 4 */

/* USER CODE END 4 */

/* USER CODE BEGIN Header_StartDefaultTask */
/**
  * @brief  Function implementing the defaultTask thread.
  * @param  argument: Not used
  * @retval None
  */
/* USER CODE END Header_StartDefaultTask */
void StartDefaultTask(void const * argument)
{
  
/* USER CODE BEGIN 5 */
  /* Infinite loop */
  
for(;;)
  {
    
osDelay(1);
  }
  
/* USER CODE END 5 */
}

/* USER CODE BEGIN Header_Vbutton_s_Task */
/**
* @brief Function implementing the button_s_Task thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_Vbutton_s_Task */
void Vbutton_s_Task(void const * argument)
{
  
/* USER CODE BEGIN Vbutton_s_Task */
    
TickType_t now// Обьявляем переменную для системного времени отсчета
    
int data;       // Обьявляем переменную для отправки в очередь
  /* Infinite loop */
  
for(;;)
  {
      
now xTaskGetTickCount(); // Записываем системный тик в переменную
      
for (int i 0SOURCE_BUTTONSi++) // цикл сканирования кнопок
      
{
          if (
HAL_GPIO_ReadPin(buttons_s[i].portbuttons_s[i].pin) == GPIO_PIN_RESET && buttons_s[i].state == BUTTON_IDLE)  // если нажали кнопку
            
{
                
buttons_s[i].state BUTTON_PRESSED// пометили что нажали
                
buttons_s[i].press_start_time now// засекли время
            
}
          else if (
HAL_GPIO_ReadPin(buttons_s[i].portbuttons_s[i].pin) == GPIO_PIN_SET && buttons_s[i].state == BUTTON_PRESSED//если кнопку отпустили и статус был нажат
          
{
              
buttons_s[i].state BUTTON_IDLE;  // исходное ссостояние
          
}
          else if (
HAL_GPIO_ReadPin(buttons_s[i].portbuttons_s[i].pin) == GPIO_PIN_SET && buttons_s[i].state == BUTTON_RELEASED//если исполнено и кнопка отпущена
          
{
              
buttons_s[i].state BUTTON_IDLE;  // исходное ссостояние
          
}

         
/*--антидребезг--*/

          
if (buttons_s[i].state == BUTTON_PRESSED && now buttons_s[i].press_start_time >= BUTTON_DEBOUNCE_TIME_MS)// если кнопка находится в нажатом состояние больше дребезга
          
{
              
data i;  // Номер кнопки записали в переменную
              
buttons_s[i].state BUTTON_RELEASED// пометили исполнено
              
xQueueSendToFront(myQueue_sHandle, &data0); // Номер кнопки послали в очередь для исполнения
          
}
      }
      
osDelay(10);
  }
  
/* USER CODE END Vbutton_s_Task */
}

/* USER CODE BEGIN Header_Vbutton_op_Task */
/**
* @brief Function implementing the button_op_Task thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_Vbutton_op_Task */
void Vbutton_op_Task(void const * argument)
{
  
/* USER CODE BEGIN Vbutton_op_Task */
    
TickType_t now;
    
int data_op;
  
/* Infinite loop */
  
for(;;)
  {
        
now xTaskGetTickCount();
        for (
int i 0OP_BUTTONS; ++i)
        {
            if (
HAL_GPIO_ReadPin(buttons_op[i].portbuttons_op[i].pin) == GPIO_PIN_RESET && buttons_op[i].state == BUTTON_IDLE)  // если нажали кнопку
            
{
                
buttons_op[i].state BUTTON_PRESSED// пометили что нажали
                
buttons_op[i].press_start_time now// засекли время                //
            
}
              else if (
HAL_GPIO_ReadPin(buttons_op[i].portbuttons_op[i].pin) == GPIO_PIN_SET && buttons_op[i].state == BUTTON_PRESSED//если кнопку отпустили и статус был нажат
              
{
                  
buttons_op[i].state BUTTON_IDLE;  // исходное ссостояние
              
}
              else if (
HAL_GPIO_ReadPin(buttons_op[i].portbuttons_op[i].pin) == GPIO_PIN_SET && buttons_op[i].state == BUTTON_RELEASED//если исполнено и кнопка отпущена
              
{
                  
buttons_op[i].state BUTTON_IDLE;  // исходное ссостояние
              
}

            
/*--антидребезг--*/
              
if (buttons_op[i].state == BUTTON_PRESSED && now buttons_op[i].press_start_time >= BUTTON_DEBOUNCE_TIME_MS)// если кнопка находится в нажатом состояние больше дребезга
              
{
                  
data_op i;
                  
buttons_op[i].state BUTTON_RELEASED// пометили исполнено

                
if (uxQueueMessagesWaiting(myQueue_opHandle) == 0)
                {
                    if (
HAL_GPIO_ReadPin(led_op_A[i].portled_op_A[i].pin)
                            == 
GPIO_PIN_RESET// если первый светодиод не горит
                    
{
                        
HAL_GPIO_WritePin(led_op_A[i].portled_op_A[i].pin,
                                
GPIO_PIN_SET); // включаем первый светодиод

                    
}
                    else  
// если иначе
                    
{
                        
HAL_GPIO_WritePin(led_op_B[i].portled_op_B[i].pinGPIO_PIN_SET); // включаем второй светодиод//
                    
}
                    
xQueueSendToFront(myQueue_opHandle, &data_op0); // послали в очередь
                    
xSemaphoreGive(myBinarySem02Handle); //послали в семофор мигать светодиодом
                
}



              }

        }
        
osDelay(20);
  }
  
/* USER CODE END Vbutton_op_Task */
}

/* USER CODE BEGIN Header_Vbutton_prd_Task */
/**
* @brief Function implementing the button_prd_Task thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_Vbutton_prd_Task */
void Vbutton_prd_Task(void const * argument)
{
  
/* USER CODE BEGIN Vbutton_prd_Task */
    
TickType_t now;

  
/* Infinite loop */
    
for (;;)
    {
        
now xTaskGetTickCount();
        for (
int i 0PRD_BUTTONSi++)
        {
            if (
HAL_GPIO_ReadPin(buttons_prd[i].portbuttons_prd[i].pin) == GPIO_PIN_RESET && buttons_prd[i].state == BUTTON_IDLE// если нажали кнопку
            
{
                
buttons_prd[i].state BUTTON_PRESSED// пометили что нажали
                
buttons_prd[i].press_start_time now// засекли время
            
}
            else if (
HAL_GPIO_ReadPin(buttons_prd[i].portbuttons_prd[i].pin) == GPIO_PIN_SET && buttons_prd[i].state == BUTTON_PRESSED//если кнопку отпустили и статус был нажат
            
{
                
buttons_prd[i].state BUTTON_IDLE;  // исходное ссостояние

            
}

            else if (
HAL_GPIO_ReadPin(buttons_prd[i].portbuttons_prd[i].pin) == GPIO_PIN_SET && buttons_prd[i].state == BUTTON_RELEASED//если исполнено и кнопка отпущена
            
{
                
buttons_prd[i].state BUTTON_IDLE;  // исходное ссостояние

            
}

        }

             
/*--исполнение антидребезг--*/
        
if (buttons_prd[0].state == BUTTON_PRESSED && now buttons_prd[0].press_start_time >= BUTTON_DEBOUNCE_TIME_MS)
//        if (buttons_prd[0].state == BUTTON_PRESSED && HAL_GPIO_ReadPin(SB1_GPIO_Port, SB1_Pin) == GPIO_PIN_RESET)  //если кнопка ПРД нажата
        
{
            
buttons_prd[0].state BUTTON_RELEASED;                      // пометили исполнено
            
HAL_GPIO_WritePin(LB1_A_GPIO_PortLB1_A_PinGPIO_PIN_SET); // включили светодиод LB1А
            
xSemaphoreGive(myBinarySem01Handle);                         //послать в семофор разруливать все будем в чтении семофора
        
}

        else if (
buttons_prd[1].state == BUTTON_PRESSED && now buttons_prd[1].press_start_time >= BUTTON_DEBOUNCE_TIME_MS)
//        else if (buttons_prd[1].state == BUTTON_PRESSED && HAL_GPIO_ReadPin(Pedal_GPIO_Port, Pedal_Pin) == GPIO_PIN_RESET) //если педаль ПРД нажата
        
{
            
buttons_prd[1].state BUTTON_RELEASED;                      // пометили исполнено
            
HAL_GPIO_WritePin(LB1_B_GPIO_PortLB1_B_PinGPIO_PIN_SET); // включили светодиод LB1B
            
xSemaphoreGive(myBinarySem01Handle);                         //послать в семофор разруливать все будем в чтении семофора
        
}

        else if (
buttons_prd[0].state == BUTTON_IDLE)
        {
            
HAL_GPIO_WritePin(LB1_A_GPIO_PortLB1_A_PinGPIO_PIN_RESET); // отключили светодиод LB1А
        
}

        else if (
buttons_prd[1].state == BUTTON_IDLE)
        {
            
HAL_GPIO_WritePin(LB1_B_GPIO_PortLB1_B_PinGPIO_PIN_RESET); // отключили светодиод LB1B//
        
}
        
/*
        else
        {
            HAL_GPIO_WritePin(LB1_A_GPIO_Port, LB1_A_Pin, GPIO_PIN_RESET); // отключили светодиод LB1А//
            HAL_GPIO_WritePin(LB1_B_GPIO_Port, LB1_B_Pin, GPIO_PIN_RESET); // отключили светодиод LB1B
        }
        */

  
}
  
/* USER CODE END Vbutton_prd_Task */
}

/* USER CODE BEGIN Header_V_read_Queue_s */
/**
* @brief Function implementing the read_Queue_s thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_V_read_Queue_s */
void V_read_Queue_s(void const * argument)
{
  
/* USER CODE BEGIN V_read_Queue_s */
    
int read_data;
    
BaseType_t xstatus;
  
/* Infinite loop */
  
for(;;)
  {
      
xstatus xQueueReceive(myQueue_sHandle, &read_dataportMAX_DELAY);
      if (
xstatus == pdTRUE)
      {
            if (
read_data == 0)                                               // если пришло 0 (нажали кнопку СДПС)
            
{
                
Reset_Led();                                                  // выключить все светодиоды
                
HAL_GPIO_WritePin(LB2_A_GPIO_PortLB2_A_PinGPIO_PIN_SET);  // вкл светодиод СДПС
            
}
            else if (
read_data == 1)                                          // если пришло 1 (нажали кнопку ПРС ГМВ)
            
{
                
Reset_Led();                                                  // выключить все светодиоды
                
HAL_GPIO_WritePin(LB3_A_GPIO_PortLB3_A_PinGPIO_PIN_SET);  // вкл светодиод ПРС ГМВ
                
if (time_outxTimerReset(myTimer01Handle0);                              // запустили однократный тймер

                /* кратковременно нажать ПРД (Прием) */
                
if (prm)
                {
                    
HAL_GPIO_WritePin(PRD2_GPIO_PortPRD2_PinGPIO_PIN_SET); // включить ПРД ПРС ГМВ
                    
osDelay(50);
                    
HAL_GPIO_WritePin(PRD2_GPIO_PortPRD2_PinGPIO_PIN_RESET); // отключить ПРД ПРС ГМВ
                
}

            }
            else if (
read_data == 2)                                          // если пришло 2 (нажали кнопку ПРС МВ)
            
{
                
Reset_Led();                                                  // выключить все светодиоды
                
HAL_GPIO_WritePin(LB4_A_GPIO_PortLB4_A_PinGPIO_PIN_SET);  // вкл светодиод ПРС МВ
                
if (time_outxTimerReset(myTimer01Handle0);                              // запустили однократный тймер

                /* кратковременно нажать ПРД (Прием) */
                
if (prm)
                {
                    
HAL_GPIO_WritePin(PRD3_GPIO_PortPRD3_PinGPIO_PIN_SET); // включить ПРД ПРС МВ
                    
osDelay(50);
                    
HAL_GPIO_WritePin(PRD3_GPIO_PortPRD3_PinGPIO_PIN_RESET); // отключить ПРД ПРС МВ
                
}

            }
            else if (
read_data == 3)                                          // если пришло 3 (нажали кнопку СРС МВ)
            
{
                
Reset_Led();                                                  // выключить все светодиоды
                
HAL_GPIO_WritePin(LB5_A_GPIO_PortLB5_A_PinGPIO_PIN_SET);  // вкл светодиод СРС МВ
                
if (time_outxTimerReset(myTimer01Handle0);                              // запустили однократный тймер

                /* кратковременно нажать ПРД (Прием) */
                
if (prm)
                {
                    
HAL_GPIO_WritePin(PRD4_GPIO_PortPRD4_PinGPIO_PIN_SET); // включить ПРД СРС МВ
                    
osDelay(50);
                    
HAL_GPIO_WritePin(PRD4_GPIO_PortPRD4_PinGPIO_PIN_RESET); // отключить ПРД СРС МВ
                
}
            }
      }

  }
  
/* USER CODE END V_read_Queue_s */
}

/* USER CODE BEGIN Header_Vflash_LED_Task */
/**
* @brief Function implementing the flash_LED_Task thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_Vflash_LED_Task */
void Vflash_LED_Task(void const * argument)
{
  
/* USER CODE BEGIN Vflash_LED_Task */
  /* Infinite loop */
  
for(;;)
  {
        
xSemaphoreTake(myBinarySem01HandleportMAX_DELAY);

        if (
HAL_GPIO_ReadPin(LB2_A_GPIO_PortLB2_A_Pin) == GPIO_PIN_SET)      // если включен СДПС
        
{

            
HAL_GPIO_WritePin(Mut1_GPIO_PortMut1_PinGPIO_PIN_RESET);       // отключить mute 1
            
HAL_GPIO_WritePin(PRD_SDPS_GPIO_PortPRD_SDPS_PinGPIO_PIN_SET); // включить ПРД СДПС
            
while (HAL_GPIO_ReadPin(LB1_A_GPIO_PortLB1_A_Pin) == GPIO_PIN_SET || HAL_GPIO_ReadPin(LB1_B_GPIO_PortLB1_B_Pin) == GPIO_PIN_SET)  // пока нажата кнопка ПРД
//            while ((HAL_GPIO_ReadPin(SB1_GPIO_Port, SB1_Pin) == GPIO_PIN_RESET && buttons_prd[0].state == BUTTON_RELEASED) || (HAL_GPIO_ReadPin(Pedal_GPIO_Port, Pedal_Pin) == GPIO_PIN_RESET && buttons_prd[1].state == BUTTON_RELEASED))
            
{
                
HAL_GPIO_TogglePin(LB2_B_GPIO_PortLB2_B_Pin); // мигаем соответствующим светодиодом (СДПС)
                
osDelay(200);
            }

            
HAL_GPIO_WritePin(LB2_B_GPIO_PortLB2_B_PinGPIO_PIN_RESET);       // выключить принудительно светодиод LB2B
            
buttons_prd[0].state BUTTON_IDLE;                                  // статус в исходное состояние
            
buttons_prd[1].state BUTTON_IDLE;                                  // статус в исходное состояние
            
HAL_GPIO_WritePin(Mut1_GPIO_PortMut1_PinGPIO_PIN_SET);           // включить mute 1
            
HAL_GPIO_WritePin(PRD_SDPS_GPIO_PortPRD_SDPS_PinGPIO_PIN_RESET); // отключить ПРД СДПС
        
}

        else if (
HAL_GPIO_ReadPin(LB3_A_GPIO_PortLB3_A_Pin) == GPIO_PIN_SET)  // если включен ПРС ГМВ
        
{
            
HAL_GPIO_WritePin(Mut2_GPIO_PortMut2_PinGPIO_PIN_RESET);        // отключить mute 2
            
HAL_GPIO_WritePin(PRD2_GPIO_PortPRD2_PinGPIO_PIN_SET);          // включить ПРД ПРС ГМВ
            
while (HAL_GPIO_ReadPin(LB1_A_GPIO_PortLB1_A_Pin) == GPIO_PIN_SET || HAL_GPIO_ReadPin(LB1_B_GPIO_PortLB1_B_Pin) == GPIO_PIN_SET)  // пока нажата кнопка ПРД
//            while ((HAL_GPIO_ReadPin(SB1_GPIO_Port, SB1_Pin) == GPIO_PIN_RESET && buttons_prd[0].state == BUTTON_RELEASED) || (HAL_GPIO_ReadPin(Pedal_GPIO_Port, Pedal_Pin) == GPIO_PIN_RESET && buttons_prd[1].state == BUTTON_RELEASED))
            
{
                
HAL_GPIO_TogglePin(LB3_B_GPIO_PortLB3_B_Pin);  // мигаем светодиодом (ПРС ГМВ)
                
osDelay(200);
                
xTimerReset(myTimer01Handle0); // рестарт однократный таймер
            
}
            
HAL_GPIO_WritePin(LB3_B_GPIO_PortLB3_B_PinGPIO_PIN_RESET);      // выключаем принудительно светодиод LB3B
            
buttons_prd[0].state BUTTON_IDLE;                                 // статус в исходное состояние
            
buttons_prd[0].state BUTTON_IDLE;                                 // статус в исходное состояние
            
HAL_GPIO_WritePin(Mut2_GPIO_PortMut2_PinGPIO_PIN_SET);          // включить mute 2
            
HAL_GPIO_WritePin(PRD2_GPIO_PortPRD2_PinGPIO_PIN_RESET);        // отключить ПРД ПРС ГМВ
        
}

        else if (
HAL_GPIO_ReadPin(LB4_A_GPIO_PortLB4_A_Pin) == GPIO_PIN_SET)  // если включен ПРС МВ
        
{
            
HAL_GPIO_WritePin(Mut3_GPIO_PortMut3_PinGPIO_PIN_RESET);        // отключить mute 3
            
HAL_GPIO_WritePin(PRD3_GPIO_PortPRD3_PinGPIO_PIN_SET);          // включить ПРД ПРС МВ
            
while (HAL_GPIO_ReadPin(LB1_A_GPIO_PortLB1_A_Pin) == GPIO_PIN_SET || HAL_GPIO_ReadPin(LB1_B_GPIO_PortLB1_B_Pin) == GPIO_PIN_SET)  // пока нажата кнопка ПРД
//            while ((HAL_GPIO_ReadPin(SB1_GPIO_Port, SB1_Pin) == GPIO_PIN_RESET && buttons_prd[0].state == BUTTON_RELEASED) || (HAL_GPIO_ReadPin(Pedal_GPIO_Port, Pedal_Pin) == GPIO_PIN_RESET && buttons_prd[1].state == BUTTON_RELEASED))
            
{
                
HAL_GPIO_TogglePin(LB4_B_GPIO_PortLB4_B_Pin);  // мигаем светодиодом (ПРС МВ)
                
osDelay(200);
                
xTimerReset(myTimer01Handle0);  // рестарт однократный таймер
            
}
            
HAL_GPIO_WritePin(LB4_B_GPIO_PortLB4_B_PinGPIO_PIN_RESET);      // выключаем принудительно светодиод LB4B
            
buttons_prd[0].state BUTTON_IDLE;                                 // статус в исходное состояние
            
buttons_prd[0].state BUTTON_IDLE;                                 // статус в исходное состояние
            
HAL_GPIO_WritePin(Mut3_GPIO_PortMut3_PinGPIO_PIN_SET);          // включить mute 3
            
HAL_GPIO_WritePin(PRD3_GPIO_PortPRD3_PinGPIO_PIN_RESET);        // отключить ПРД ПРС МВ
        
}

        else if (
HAL_GPIO_ReadPin(LB5_A_GPIO_PortLB5_A_Pin) == GPIO_PIN_SET)  // если включен СРС МВ
        
{
            
HAL_GPIO_WritePin(Mut4_GPIO_PortMut4_PinGPIO_PIN_RESET);        // отключить mute 4
            
HAL_GPIO_WritePin(PRD4_GPIO_PortPRD4_PinGPIO_PIN_SET);          // включить ПРД СРС МВ
            
while (HAL_GPIO_ReadPin(LB1_A_GPIO_PortLB1_A_Pin) == GPIO_PIN_SET || HAL_GPIO_ReadPin(LB1_B_GPIO_PortLB1_B_Pin) == GPIO_PIN_SET)  // пока нажата кнопка ПРД
//            while ((HAL_GPIO_ReadPin(SB1_GPIO_Port, SB1_Pin) == GPIO_PIN_RESET && buttons_prd[0].state == BUTTON_RELEASED) || (HAL_GPIO_ReadPin(Pedal_GPIO_Port, Pedal_Pin) == GPIO_PIN_RESET && buttons_prd[1].state == BUTTON_RELEASED))
            
{
                
HAL_GPIO_TogglePin(LB5_B_GPIO_PortLB5_B_Pin); // Мигаем светодиодом (СРС МВ)
                
osDelay(200);
                
xTimerReset(myTimer01Handle0); // запускаем однократный тймер
            
}
            
HAL_GPIO_WritePin(LB5_B_GPIO_PortLB5_B_PinGPIO_PIN_RESET);
            
buttons_prd[0].state BUTTON_IDLE;                                 // статус в исходное состояние
            
buttons_prd[0].state BUTTON_IDLE;                                 // статус в исходное состояние
            
HAL_GPIO_WritePin(Mut4_GPIO_PortMut4_PinGPIO_PIN_SET);          // включить mute 4
            
HAL_GPIO_WritePin(PRD4_GPIO_PortPRD4_PinGPIO_PIN_RESET);        // отключить ПРД СРС МВ
        
}
  }
  
/* USER CODE END Vflash_LED_Task */
}

/* USER CODE BEGIN Header_V_read_Queue_op */
/**
* @brief Function implementing the read_Queue_op thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_V_read_Queue_op */
void V_read_Queue_op(void const * argument)
{
  
/* USER CODE BEGIN V_read_Queue_op */
    
int read_data;
    
BaseType_t status;
    
uint32_t xMaxBlockTime 0;
  
/* Infinite loop */

  
for(;;)
  {

      
status xQueueReceive(myQueue_opHandle, &read_dataportMAX_DELAY);
      if (
status == pdTRUE)
      {

          
HAL_GPIO_WritePin(PRD_SDPS_GPIO_PortPRD_SDPS_PinGPIO_PIN_SET); // Нажать кнопку ПРД СДПС
//          HAL_GPIO_WritePin(PRD_SDPS_GPIO_Port, PRD_SDPS_Pin, GPIO_PIN_SET);


            
if (read_data == 0// если нажали кнопку 1
            
{


                
/* рингтон */
                
HAL_GPIO_WritePin(PLA1_GPIO_PortPLA1_PinGPIO_PIN_SET);  // нажали кнопку "вкл оповещение" запуск ISD1820
                
osDelay(50);                                                // подождали 50мсек
                
HAL_GPIO_WritePin(PLA1_GPIO_PortPLA1_PinGPIO_PIN_RESET); // отпустили кнопку "вкл оповещение"
                
xMaxBlockTime 5000// установили таймаут ожидания

                
while ((portValue HAL_GPIO_ReadPin(RECLED1_GPIO_PortRECLED1_Pin)) != GPIO_PIN_RESET && xMaxBlockTime 0// цикл ожидания конца оповещения
                
{
                    
osDelay(1);      // задержка 1 мсек
                    
xMaxBlockTime--; // отнимаем -1
                
}
////---------------
                /* оповещение */
                
HAL_GPIO_WritePin(PLA2_GPIO_PortPLA2_PinGPIO_PIN_SET); // нажали кнопку "вкл оповещение"
                
osDelay(50);                                 // подождали 50мсек
                
HAL_GPIO_WritePin(PLA2_GPIO_PortPLA2_PinGPIO_PIN_RESET); // отпустили кнопку "вкл оповещение"
                
xMaxBlockTime 12000// установили таймаут ожидания

                
while ((portValue HAL_GPIO_ReadPin(RECLED2_GPIO_PortRECLED2_Pin)) != GPIO_PIN_RESET && xMaxBlockTime 0// цикл ожидания конца оповещения
                
{
                    
osDelay(1);      // задержка 1 мсек
                    
xMaxBlockTime--; // отнимаем -1
                
}
                
/* конец оповещения */

                /* отключение лед индикации */
                
if (HAL_GPIO_ReadPin(LD1_A_GPIO_PortLD1_A_Pin) == GPIO_PIN_SET && HAL_GPIO_ReadPin(LD1_B_GPIO_PortLD1_B_Pin) == GPIO_PIN_SET)
                {
                    
HAL_GPIO_WritePin(LD1_B_GPIO_PortLD1_B_PinGPIO_PIN_RESET); //
                
}
                else if (
HAL_GPIO_ReadPin(LD1_A_GPIO_PortLD1_A_Pin) == GPIO_PIN_SET && HAL_GPIO_ReadPin(LD1_B_GPIO_PortLD1_B_Pin) == GPIO_PIN_RESET)
                {
                    
HAL_GPIO_WritePin(LD1_A_GPIO_PortLD1_A_Pin,
                            
GPIO_PIN_RESET); //
                
}



            }

            else if (
read_data == 1)
            {

                
/* рингтон */
                
HAL_GPIO_WritePin(PLA1_GPIO_PortPLA1_PinGPIO_PIN_SET); // нажали кнопку "вкл оповещение"
                
osDelay(50);                                 // подождали 50мсек
                
HAL_GPIO_WritePin(PLA1_GPIO_PortPLA1_PinGPIO_PIN_RESET); // отпустили кнопку "вкл оповещение"
                
xMaxBlockTime 5000// установили таймаут ожидания

                
while ((portValue HAL_GPIO_ReadPin(RECLED1_GPIO_PortRECLED1_Pin)) != GPIO_PIN_RESET && xMaxBlockTime 0// цикл ожидания конца оповещения
                
{
                    
osDelay(1);      // задержка 1 мсек
                    
xMaxBlockTime--; // отнимаем -1
                
}
                
////---------------
                /* оповещение */
                
HAL_GPIO_WritePin(PLA3_GPIO_PortPLA3_PinGPIO_PIN_SET); // нажали кнопку "вкл оповещение"
                
osDelay(50);                                 // подождали 50мсек
                
HAL_GPIO_WritePin(PLA3_GPIO_PortPLA3_PinGPIO_PIN_RESET); // отпустили кнопку "вкл оповещение"
                
xMaxBlockTime 12000// установили таймаут ожидания

                
while ((portValue HAL_GPIO_ReadPin(RECLED3_GPIO_PortRECLED3_Pin)) != GPIO_PIN_RESET && xMaxBlockTime 0// цикл ожидания конца оповещения
                
{
                    
osDelay(1);      // задержка 1 мсек
                    
xMaxBlockTime--; // отнимаем -1
                
}
                
/* конец оповещения */

                /* отключение лед индикации */
                
if (HAL_GPIO_ReadPin(LD2_A_GPIO_PortLD2_A_Pin) == GPIO_PIN_SET && HAL_GPIO_ReadPin(LD2_B_GPIO_PortLD2_B_Pin) == GPIO_PIN_SET)
                {
                    
HAL_GPIO_WritePin(LD2_B_GPIO_PortLD2_B_PinGPIO_PIN_RESET); //
                
}
                else if (
HAL_GPIO_ReadPin(LD2_A_GPIO_PortLD2_A_Pin) == GPIO_PIN_SET && HAL_GPIO_ReadPin(LD2_B_GPIO_PortLD2_B_Pin) == GPIO_PIN_RESET)
                {
                    
HAL_GPIO_WritePin(LD2_A_GPIO_PortLD2_A_PinGPIO_PIN_RESET); //
                
}                //
            
}

            else if (
read_data == 2)
            {
//                osDelay(5000); // время для выполнения оповещения

                /* оповещение */
                
HAL_GPIO_WritePin(PLA4_GPIO_PortPLA4_PinGPIO_PIN_SET); // нажали кнопку "вкл оповещение"
                
osDelay(50);                                 // подождали 50мсек
                
HAL_GPIO_WritePin(PLA4_GPIO_PortPLA4_PinGPIO_PIN_RESET); // отпустили кнопку "вкл оповещение"
                
xMaxBlockTime 12000// установили таймаут ожидания

                
while ((portValue HAL_GPIO_ReadPin(RECLED4_GPIO_PortRECLED4_Pin)) != GPIO_PIN_RESET && xMaxBlockTime 0// цикл ожидания конца оповещения
                
{
                    
osDelay(1);      // задержка 1 мсек
                    
xMaxBlockTime--; // отнимаем -1
                
}
                
/* конец оповещения */

                /* отключение лед индикации */
                
if (HAL_GPIO_ReadPin(LD3_A_GPIO_PortLD3_A_Pin) == GPIO_PIN_SET && HAL_GPIO_ReadPin(LD3_B_GPIO_PortLD3_B_Pin) == GPIO_PIN_SET)
                {
                    
HAL_GPIO_WritePin(LD3_B_GPIO_PortLD3_B_PinGPIO_PIN_RESET); //
                
}
                else if (
HAL_GPIO_ReadPin(LD3_A_GPIO_PortLD3_A_Pin) == GPIO_PIN_SET && HAL_GPIO_ReadPin(LD3_B_GPIO_PortLD3_B_Pin) == GPIO_PIN_RESET)
                {
                    
HAL_GPIO_WritePin(LD3_A_GPIO_PortLD3_A_PinGPIO_PIN_RESET); //
                
}                //
            
}
            else if (
read_data == 3)
            {
//                osDelay(5000); // время для выполнения оповещения
                /* оповещение */
                
HAL_GPIO_WritePin(PLA5_GPIO_PortPLA5_PinGPIO_PIN_SET); // нажали кнопку "вкл оповещение"
                
osDelay(50);                                 // подождали 50мсек
                
HAL_GPIO_WritePin(PLA5_GPIO_PortPLA5_PinGPIO_PIN_RESET); // отпустили кнопку "вкл оповещение"
                
xMaxBlockTime 12000// установили таймаут ожидания

                
while ((portValue HAL_GPIO_ReadPin(RECLED5_GPIO_PortRECLED5_Pin)) != GPIO_PIN_RESET && xMaxBlockTime 0// цикл ожидания конца оповещения
                
{
                    
osDelay(1);      // задержка 1 мсек
                    
xMaxBlockTime--; // отнимаем -1
                
}
                
/* конец оповещения */


                /* отключение лед индикации */
                
if (HAL_GPIO_ReadPin(LD4_A_GPIO_PortLD4_A_Pin) == GPIO_PIN_SET && HAL_GPIO_ReadPin(LD4_B_GPIO_PortLD4_B_Pin) == GPIO_PIN_SET)
                {
                    
HAL_GPIO_WritePin(LD4_B_GPIO_PortLD4_B_PinGPIO_PIN_RESET); //
                
}
                else if (
HAL_GPIO_ReadPin(LD4_A_GPIO_PortLD4_A_Pin) == GPIO_PIN_SET && HAL_GPIO_ReadPin(LD4_B_GPIO_PortLD4_B_Pin) == GPIO_PIN_RESET)
                {
                    
HAL_GPIO_WritePin(LD4_A_GPIO_PortLD4_A_PinGPIO_PIN_RESET); //
                
}                //
            
}
            else if (
read_data == 4)
            {
//                osDelay(5000); // время для выполнения оповещения
                /* оповещение */
                
HAL_GPIO_WritePin(PLA6_GPIO_PortPLA6_PinGPIO_PIN_SET); // нажали кнопку "вкл оповещение"
                
osDelay(50);                                 // подождали 50мсек
                
HAL_GPIO_WritePin(PLA6_GPIO_PortPLA6_PinGPIO_PIN_RESET); // отпустили кнопку "вкл оповещение"
                
xMaxBlockTime 12000// установили таймаут ожидания

                
while ((portValue HAL_GPIO_ReadPin(RECLED6_GPIO_PortRECLED6_Pin)) != GPIO_PIN_RESET && xMaxBlockTime 0// цикл ожидания конца оповещения
                
{
                    
osDelay(1);      // задержка 1 мсек
                    
xMaxBlockTime--; // отнимаем -1
                
}
                
/* конец оповещения */

                /* отключение лед индикации */
                
if (HAL_GPIO_ReadPin(LD5_A_GPIO_PortLD5_A_Pin) == GPIO_PIN_SET && HAL_GPIO_ReadPin(LD5_B_GPIO_PortLD5_B_Pin) == GPIO_PIN_SET)
                {
                    
HAL_GPIO_WritePin(LD5_B_GPIO_PortLD5_B_PinGPIO_PIN_RESET); //
                
}
                else if (
HAL_GPIO_ReadPin(LD5_A_GPIO_PortLD5_A_Pin) == GPIO_PIN_SET && HAL_GPIO_ReadPin(LD5_B_GPIO_PortLD5_B_Pin) == GPIO_PIN_RESET)
                {
                    
HAL_GPIO_WritePin(LD5_A_GPIO_PortLD5_A_PinGPIO_PIN_RESET); //
                
}                //
            
}
            else if (
read_data == 5)
            {
//                osDelay(5000); // время для выполнения оповещения
                /* оповещение */
                
HAL_GPIO_WritePin(PLA7_GPIO_PortPLA7_PinGPIO_PIN_SET); // нажали кнопку "вкл оповещение"
                
osDelay(50);                                 // подождали 50мсек
                
HAL_GPIO_WritePin(PLA7_GPIO_PortPLA7_PinGPIO_PIN_RESET); // отпустили кнопку "вкл оповещение"
                
xMaxBlockTime 12000// установили таймаут ожидания

                
while ((portValue HAL_GPIO_ReadPin(RECLED7_GPIO_PortRECLED7_Pin)) != GPIO_PIN_RESET && xMaxBlockTime 0// цикл ожидания конца оповещения
                
{
                    
osDelay(1);      // задержка 1 мсек
                    
xMaxBlockTime--; // отнимаем -1
                
}
                
/* конец оповещения */

                /* отключение лед индикации */
                
if (HAL_GPIO_ReadPin(LD6_A_GPIO_PortLD6_A_Pin) == GPIO_PIN_SET && HAL_GPIO_ReadPin(LD6_B_GPIO_PortLD6_B_Pin) == GPIO_PIN_SET)
                {
                    
HAL_GPIO_WritePin(LD6_B_GPIO_PortLD6_B_PinGPIO_PIN_RESET); //
                
}
                else if (
HAL_GPIO_ReadPin(LD6_A_GPIO_PortLD6_A_Pin) == GPIO_PIN_SET && HAL_GPIO_ReadPin(LD6_B_GPIO_PortLD6_B_Pin) == GPIO_PIN_RESET)
                {
                    
HAL_GPIO_WritePin(LD6_A_GPIO_PortLD6_A_PinGPIO_PIN_RESET); //
                
}                //
            
}

      }
      
HAL_GPIO_WritePin(PRD_SDPS_GPIO_PortPRD_SDPS_PinGPIO_PIN_RESET); // отпустить кнопку ПРД СДПС
      
osDelay(300);

  }
  
/* USER CODE END V_read_Queue_op */
}

/* USER CODE BEGIN Header_Vmig_led */
/**
* @brief Function implementing the mig_led thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_Vmig_led */
void Vmig_led(void const * argument)
{
  
/* USER CODE BEGIN Vmig_led */
  /* Infinite loop */
  
for(;;)
  {
      
xSemaphoreTake(myBinarySem02HandleportMAX_DELAY);
        for (
int i 0NUM_LED_OP; ++i)
        {
            while (
HAL_GPIO_ReadPin(led_op_A[i].portled_op_A[i].pin) == GPIO_PIN_SET || HAL_GPIO_ReadPin(led_op_B[i].portled_op_B[i].pin) == GPIO_PIN_SET//
            
{
                
HAL_GPIO_TogglePin(LB2_B_GPIO_PortLB2_B_Pin);
                
osDelay(200);//
            
}

        }
        
HAL_GPIO_WritePin(LB2_B_GPIO_PortLB2_B_PinGPIO_PIN_RESET);
    
osDelay(1);
  }
  
/* USER CODE END Vmig_led */
}

/* Callback01 function */
void Callback01(void const * argument)
{
  
/* USER CODE BEGIN Callback01 */
    
Reset_Led();
    
HAL_GPIO_WritePin(LB2_A_GPIO_PortLB2_A_PinGPIO_PIN_SET);
  
/* USER CODE END Callback01 */
}

/**
  * @brief  This function is executed in case of error occurrence.
  * @retval None
  */
void Error_Handler(void)
{
  
/* USER CODE BEGIN Error_Handler_Debug */
  /* User can add his own implementation to report the HAL error return state */
  
__disable_irq();
  while (
1)
  {
  }
  
/* USER CODE END Error_Handler_Debug */
}

#ifdef  USE_FULL_ASSERT
/**
  * @brief  Reports the name of the source file and the source line number
  *         where the assert_param error has occurred.
  * @param  file: pointer to the source file name
  * @param  line: assert_param error line source number
  * @retval None
  */
void assert_failed(uint8_t *fileuint32_t line)
{
  
/* USER CODE BEGIN 6 */
  /* User can add his own implementation to report the file name and line number,
     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  /* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */ 
Alex_Mn добавил 12.10.2023 в 18:16
ну и 3д чертеж платы

Последний раз редактировалось Alex_Mn; 12.10.2023 в 17:16. Причина: Добавлено сообщение
Alex_Mn вне форума   Цитировать 0
Поблагодарили:
Данный пост получил благодарности от пользователей
Старый 12.10.2023, 17:26   #111 (ссылка)
V.I.P.
 
Аватар для Alex_Mn


Регистрация: 02.04.2023
Сообщений: 239
Поблагодарил: 2 раз(а)
Поблагодарили 39 раз(а)
Фотоальбомы: 0
Загрузки: 13707
Закачек: 0
Репутация: 121
еще добавлю файл main.h
PHP код:
/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file           : main.h
  * @brief          : Header for main.c file.
  *                   This file contains the common defines of the application.
  ******************************************************************************
  * @attention
  *
  * Copyright (c) 2023 STMicroelectronics.
  * All rights reserved.
  *
  * This software is licensed under terms that can be found in the LICENSE file
  * in the root directory of this software component.
  * If no LICENSE file comes with this software, it is provided AS-IS.
  *
  ******************************************************************************
  */
/* USER CODE END Header */

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __MAIN_H
#define __MAIN_H

#ifdef __cplusplus
extern "C" {
#endif

/* Includes ------------------------------------------------------------------*/
#include "stm32f1xx_hal.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

/* Exported types ------------------------------------------------------------*/
/* USER CODE BEGIN ET */

/* USER CODE END ET */

/* Exported constants --------------------------------------------------------*/
/* USER CODE BEGIN EC */

/* USER CODE END EC */

/* Exported macro ------------------------------------------------------------*/
/* USER CODE BEGIN EM */

/* USER CODE END EM */

/* Exported functions prototypes ---------------------------------------------*/
void Error_Handler(void);

/* USER CODE BEGIN EFP */

/* USER CODE END EFP */

/* Private defines -----------------------------------------------------------*/
#define LB4_B_Pin GPIO_PIN_2
#define LB4_B_GPIO_Port GPIOE
#define LB5_A_Pin GPIO_PIN_3
#define LB5_A_GPIO_Port GPIOE
#define SB5_Pin GPIO_PIN_4
#define SB5_GPIO_Port GPIOE
#define PLA7_Pin GPIO_PIN_5
#define PLA7_GPIO_Port GPIOA
#define Mut3_Pin GPIO_PIN_6
#define Mut3_GPIO_Port GPIOA
#define Mut2_Pin GPIO_PIN_7
#define Mut2_GPIO_Port GPIOA
#define RECLED7_Pin GPIO_PIN_4
#define RECLED7_GPIO_Port GPIOC
#define PLA6_Pin GPIO_PIN_5
#define PLA6_GPIO_Port GPIOC
#define Mut1_Pin GPIO_PIN_0
#define Mut1_GPIO_Port GPIOB
#define RECLED6_Pin GPIO_PIN_1
#define RECLED6_GPIO_Port GPIOB
#define PLA5_Pin GPIO_PIN_7
#define PLA5_GPIO_Port GPIOE
#define Mut4_Pin GPIO_PIN_8
#define Mut4_GPIO_Port GPIOE
#define RECLED5_Pin GPIO_PIN_9
#define RECLED5_GPIO_Port GPIOE
#define PLA4_Pin GPIO_PIN_10
#define PLA4_GPIO_Port GPIOE
#define RECLED4_Pin GPIO_PIN_11
#define RECLED4_GPIO_Port GPIOE
#define PLA3_Pin GPIO_PIN_12
#define PLA3_GPIO_Port GPIOE
#define PRD2_Pin GPIO_PIN_14
#define PRD2_GPIO_Port GPIOE
#define PRD4_Pin GPIO_PIN_15
#define PRD4_GPIO_Port GPIOE
#define PRD3_Pin GPIO_PIN_10
#define PRD3_GPIO_Port GPIOB
#define Pedal_Pin GPIO_PIN_11
#define Pedal_GPIO_Port GPIOB
#define RECLED3_Pin GPIO_PIN_12
#define RECLED3_GPIO_Port GPIOB
#define PLA2_Pin GPIO_PIN_13
#define PLA2_GPIO_Port GPIOB
#define RECLED2_Pin GPIO_PIN_14
#define RECLED2_GPIO_Port GPIOB
#define PLA1_Pin GPIO_PIN_15
#define PLA1_GPIO_Port GPIOB
#define RECLED1_Pin GPIO_PIN_8
#define RECLED1_GPIO_Port GPIOD
#define PRD_SDPS_Pin GPIO_PIN_10
#define PRD_SDPS_GPIO_Port GPIOD
#define SD2_Pin GPIO_PIN_11
#define SD2_GPIO_Port GPIOD
#define LD2_B_Pin GPIO_PIN_12
#define LD2_B_GPIO_Port GPIOD
#define SD4_Pin GPIO_PIN_13
#define SD4_GPIO_Port GPIOD
#define LD4_B_Pin GPIO_PIN_14
#define LD4_B_GPIO_Port GPIOD
#define SD6_Pin GPIO_PIN_15
#define SD6_GPIO_Port GPIOD
#define LD6_B_Pin GPIO_PIN_6
#define LD6_B_GPIO_Port GPIOC
#define LD6_A_Pin GPIO_PIN_7
#define LD6_A_GPIO_Port GPIOC
#define LD4_A_Pin GPIO_PIN_8
#define LD4_A_GPIO_Port GPIOC
#define LD2_A_Pin GPIO_PIN_9
#define LD2_A_GPIO_Port GPIOC
#define LD1_B_Pin GPIO_PIN_8
#define LD1_B_GPIO_Port GPIOA
#define LD3_B_Pin GPIO_PIN_9
#define LD3_B_GPIO_Port GPIOA
#define LD5_B_Pin GPIO_PIN_10
#define LD5_B_GPIO_Port GPIOA
#define LD5_A_Pin GPIO_PIN_11
#define LD5_A_GPIO_Port GPIOA
#define SD5_Pin GPIO_PIN_12
#define SD5_GPIO_Port GPIOA
#define LD3_A_Pin GPIO_PIN_11
#define LD3_A_GPIO_Port GPIOC
#define SD3_Pin GPIO_PIN_12
#define SD3_GPIO_Port GPIOC
#define LD1_A_Pin GPIO_PIN_0
#define LD1_A_GPIO_Port GPIOD
#define SD1_Pin GPIO_PIN_1
#define SD1_GPIO_Port GPIOD
#define LB5_B_Pin GPIO_PIN_2
#define LB5_B_GPIO_Port GPIOD
#define SB1_Pin GPIO_PIN_3
#define SB1_GPIO_Port GPIOD
#define LB1_A_Pin GPIO_PIN_4
#define LB1_A_GPIO_Port GPIOD
#define LB1_B_Pin GPIO_PIN_5
#define LB1_B_GPIO_Port GPIOD
#define LB2_A_Pin GPIO_PIN_6
#define LB2_A_GPIO_Port GPIOD
#define LB2_B_Pin GPIO_PIN_7
#define LB2_B_GPIO_Port GPIOD
#define LB3_A_Pin GPIO_PIN_4
#define LB3_A_GPIO_Port GPIOB
#define SB3_Pin GPIO_PIN_5
#define SB3_GPIO_Port GPIOB
#define LB3_B_Pin GPIO_PIN_6
#define LB3_B_GPIO_Port GPIOB
#define SB2_Pin GPIO_PIN_7
#define SB2_GPIO_Port GPIOB
#define LB4_A_Pin GPIO_PIN_9
#define LB4_A_GPIO_Port GPIOB
#define SB4_Pin GPIO_PIN_1
#define SB4_GPIO_Port GPIOE

/* USER CODE BEGIN Private defines */

/* USER CODE END Private defines */

#ifdef __cplusplus
}
#endif

#endif /* __MAIN_H */ 
Alex_Mn вне форума   Цитировать 0
Старый 12.10.2023, 17:30   #112 (ссылка)
Super V.I.P.
 
Аватар для Legon


Регистрация: 18.03.2009
Адрес: Галифакс
Сообщений: 3,450
Поблагодарил: 176 раз(а)
Поблагодарили 338 раз(а)
Фотоальбомы: 0
Загрузки: 453
Закачек: 5
Репутация: 122
разрешение схем мешает рассмотреть, можно спецификацию добавить?
Legon вне форума   Цитировать 0
Старый 12.10.2023, 17:33   #113 (ссылка)
V.I.P.
 
Аватар для Alex_Mn


Регистрация: 02.04.2023
Сообщений: 239
Поблагодарил: 2 раз(а)
Поблагодарили 39 раз(а)
Фотоальбомы: 0
Загрузки: 13707
Закачек: 0
Репутация: 121
эт лишнее. схема составлена как пазлы из готовых узлов СДПС "стальэнерго".
схема совсем примитивна.
схема предварительного усилителя имеет немного схемных изяществ ну совсем чуть чуть.

Последний раз редактировалось Alex_Mn; 12.10.2023 в 17:37.
Alex_Mn вне форума   Цитировать 0
Старый 13.10.2023, 11:31   #114 (ссылка)
Super V.I.P.
 
Аватар для Legon


Регистрация: 18.03.2009
Адрес: Галифакс
Сообщений: 3,450
Поблагодарил: 176 раз(а)
Поблагодарили 338 раз(а)
Фотоальбомы: 0
Загрузки: 453
Закачек: 5
Репутация: 122
Цитата:
Сообщение от БНР-2024 Посмотреть сообщение
у хохлов спиздили!
этим все сказано

Последний раз редактировалось Legon; 13.10.2023 в 11:37.
Legon вне форума   Цитировать 0
Старый 13.10.2023, 11:37   #115 (ссылка)
Super V.I.P.
 
Аватар для Adagumer


Регистрация: 16.02.2012
Сообщений: 5,214
Поблагодарил: 6715 раз(а)
Поблагодарили 968 раз(а)
Фотоальбомы: 0
Загрузки: 7853
Закачек: 5
Репутация: 1606
Цитата:
Сообщение от БНР-2024
у хохлов спиздили!
Хоспади, ну не всё ж им у нас пиздить!
Adagumer вне форума   Цитировать 0
Старый 13.10.2023, 11:40   #116 (ссылка)
Super V.I.P.
 
Аватар для Legon


Регистрация: 18.03.2009
Адрес: Галифакс
Сообщений: 3,450
Поблагодарил: 176 раз(а)
Поблагодарили 338 раз(а)
Фотоальбомы: 0
Загрузки: 453
Закачек: 5
Репутация: 122
Ритчи в своем интервью признавался лет 15 назад, что он Си спиздил...но из за угрызения совести функцию void назвал, с тех пор она ничего не возвращает и не принимает

Последний раз редактировалось Legon; 13.10.2023 в 11:44.
Legon вне форума   Цитировать 0
Старый 13.10.2023, 15:32   #117 (ссылка)
Super V.I.P.
 
Аватар для Legon


Регистрация: 18.03.2009
Адрес: Галифакс
Сообщений: 3,450
Поблагодарил: 176 раз(а)
Поблагодарили 338 раз(а)
Фотоальбомы: 0
Загрузки: 453
Закачек: 5
Репутация: 122
Цитата:
Сообщение от БНР-2024 Посмотреть сообщение

все мозги у кацапов спиздили и теперь злорадствуют, курвы?
300 лет под ордой были, гены знаете ли

скоро очередь до Московии будет Крещатик натирать (по квоте)

Последний раз редактировалось Legon; 13.10.2023 в 15:36.
Legon вне форума   Цитировать 0
Старый 13.10.2023, 16:00   #118 (ссылка)
V.I.P.
 
Аватар для Alex_Mn


Регистрация: 02.04.2023
Сообщений: 239
Поблагодарил: 2 раз(а)
Поблагодарили 39 раз(а)
Фотоальбомы: 0
Загрузки: 13707
Закачек: 0
Репутация: 121
Что там пиздить то? эмиттерный повторитель? яж и сказал что схема совсем примитивна. просто номиналы резисторов оставил прежними. все остальное сам допилил. так этот пульт намного функциональней чем заводской.
последнии СДПС так вообще не ремонтно пригодны, понапихали микроконтроллеры во все дыры, а прошивки жмут.
Alex_Mn вне форума   Цитировать 0
Старый 13.10.2023, 19:11   #119 (ссылка)
Super V.I.P.
 
Аватар для Adagumer


Регистрация: 16.02.2012
Сообщений: 5,214
Поблагодарил: 6715 раз(а)
Поблагодарили 968 раз(а)
Фотоальбомы: 0
Загрузки: 7853
Закачек: 5
Репутация: 1606
Цитата:
Сообщение от Legon
300 лет под ордой были, гены знаете ли
Госпади, да бандформирование населявшее окрестности днепровских порогов, которое нонча гордо именуют украиной, 600 лет кто только не имел, и ордынцы, и турки, и поляки с литовцами так шо там винегрет с генами ещё тот. Но генетически больше прослеживается след поляков потому как у них наследственная ненависть к русским!
Adagumer вне форума   Цитировать 0
Старый 13.10.2023, 21:16   #120 (ссылка)
Super V.I.P.
 
Аватар для Legon


Регистрация: 18.03.2009
Адрес: Галифакс
Сообщений: 3,450
Поблагодарил: 176 раз(а)
Поблагодарили 338 раз(а)
Фотоальбомы: 0
Загрузки: 453
Закачек: 5
Репутация: 122
у нас тут какойто говнолыжный курорт,

и мы снова отклонились от трассы

В какой замечательной программе выполнен 3D макет платы?

Последний раз редактировалось Legon; 13.10.2023 в 21:20.
Legon вне форума   Цитировать 0
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[09-2011] Внедрение диэлектрических опор ПСГО Admin xx3 2 02.10.2014 10:39
[Калининградский железнодорожник] Учтены разные варианты Admin Газеты и журналы железных дорог 0 09.04.2012 07:32
Кап ремонт ПСГО aww Связь на железнодорожном транспорте 0 06.04.2012 08:00
[Гудок] [11 июля 2011] Кому пособие, а кому льготы Admin Газета "Гудок" 0 22.07.2011 15:27
ВСЕМ! ВСЕМ! ВСЕМ! Срочно нужна помощь по системе ЭЦ-ЕМ! лучший сцбист страны Общие вопросы эксплуатации устройств СЦБ 8 22.06.2009 09:32

Ответ

Возможно вас заинтересует информация по следующим меткам (темам):
, , , , , ,


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.



Часовой пояс GMT +3, время: 11:41.

СЦБ на железнодорожном транспорте Справочник 
сцбист.ру сцбист.рф

СЦБИСТ (ранее назывался: Форум СЦБистов - Railway Automation Forum) - крупнейший сайт работников локомотивного хозяйства, движенцев, эсцебистов, путейцев, контактников, вагонников, связистов, проводников, работников ЦФТО, ИВЦ железных дорог, дистанций погрузочно-разгрузочных работ и других железнодорожников.
Связь с администрацией сайта: admin@scbist.com
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34