stm32_freertos_template/hw/inputselect.c

82 lines
2.4 KiB
C

#include "inputselect.h"
#include "hw/gpio.h"
#include "error.h"
#include "gui.h"
#include "debug.h"
#include "main.h"
#include "stm32f10x.h"
#include <stdlib.h>
#include <stdint.h>
//------------------------definicje--------------------------------//
//------------------------zmienne-------------------------//
//-----------------------------Funkcje------------------------------//
int8_t inputselect_Initialize(void)
{
GPIO_InitTypeDef GPIO_Conf;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOD|
RCC_APB2Periph_GPIOE, ENABLE);
//wyjścia, diody - stan poczatkowy wysoki (wyłączone)
GPIO_Conf.GPIO_Pin = LED_TOSLINK|OE_SPDIF;
GPIO_Conf.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Conf.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_Conf);
GPIO_Set(GPIOB, LED_TOSLINK|OE_SPDIF);
GPIO_Conf.GPIO_Pin = LED_SPDIF|LED_AES_EBU;
GPIO_Init(GPIOD, &GPIO_Conf);
GPIO_Set(GPIOD, LED_SPDIF|LED_AES_EBU);
GPIO_Conf.GPIO_Pin = OE_PCM|OE_DSD|OE_AMANERO|OE_BT;
GPIO_Init(GPIOE, &GPIO_Conf);
GPIO_Set(GPIOE, OE_PCM|OE_DSD|OE_AMANERO|OE_BT);
}
int8_t inputselect_SelectInput(uint8_t input)
{
//disable all inputs
GPIO_Set(GPIOB, LED_TOSLINK|OE_SPDIF);
GPIO_Set(GPIOD, LED_SPDIF|LED_AES_EBU);
GPIO_Set(GPIOE, OE_PCM|OE_DSD|OE_AMANERO|OE_BT);
//enable selected input
switch(input)
{
case INPUT_OFF:
break;
case INPUT_AMANERO:
GPIO_Reset(GPIOE, OE_AMANERO);
break;
case INPUT_PCM:
GPIO_Reset(GPIOE, OE_PCM);
break;
case INPUT_DSD:
GPIO_Reset(GPIOE, OE_DSD);
break;
case INPUT_SPDIF:
GPIO_Reset(GPIOB, OE_SPDIF);
GPIO_Reset(GPIOD, LED_SPDIF);
break;
case INPUT_TOSLINK:
GPIO_Reset(GPIOB, OE_SPDIF);
GPIO_Reset(GPIOB, LED_TOSLINK);
break;
case INPUT_AES_EBU:
GPIO_Reset(GPIOB, OE_SPDIF);
GPIO_Reset(GPIOD, LED_AES_EBU);
break;
case INPUT_BT:
GPIO_Reset(GPIOE, OE_BT);
break;
default:
debug_ReportError(-MULTIPLE_INPUT_SELECTED, "inputctrl_SetInput");
break;
}
}