Добавлен ADC SEQ (заготовка пока)
И небольшой рефакторинг
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*==============================================================================
|
||||
* Инициализация тактирования с использованием бибилотеки PLIB035
|
||||
* Инициализация Instance с использованием бибилотеки PLIB035
|
||||
*------------------------------------------------------------------------------
|
||||
* ЦНИИ СЭТ, Разваляев Алексей <wot890089@mail.ru>
|
||||
*==============================================================================
|
||||
@@ -35,7 +35,7 @@ void uart_init_first(void)
|
||||
RCU_UARTClkCmd(UART0_Num, ENABLE);
|
||||
UART_DeInit(UART0);
|
||||
// Инициализируем UART0
|
||||
huart0.UART = UART0;
|
||||
huart0.Instance = UART0;
|
||||
uart_init(&huart0, &uart0_config);
|
||||
NVIC_EnableIRQ(UART0_TD_IRQn);
|
||||
NVIC_EnableIRQ(UART0_RX_IRQn);
|
||||
@@ -59,9 +59,8 @@ void uart_init_first(void)
|
||||
NVIC_EnableIRQ(UART1_TX_IRQn);
|
||||
NVIC_EnableIRQ(UART1_E_RT_IRQn);
|
||||
|
||||
huart1.UART = UART1;
|
||||
uart_init(&huart1, &uart1_config);
|
||||
|
||||
huart1.Instance = UART1;
|
||||
uart_init(&huart1, &uart1_config);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -69,17 +68,16 @@ void uart_init_first(void)
|
||||
|
||||
|
||||
/**
|
||||
* @brief Инициализация UART
|
||||
* @param htmr указатель на хендл UART
|
||||
* @param NewConfig указатель на новую конфигурацию UART, иначе используется та, что в структуре
|
||||
* @brief Инициализация Instance
|
||||
* @param htmr указатель на хендл Instance
|
||||
* @param NewConfig указатель на новую конфигурацию Instance, иначе используется та, что в структуре
|
||||
* @retval OperationStatus OK - если всё хорошо, ERROR - если ошибка
|
||||
*/
|
||||
OperationStatus uart_init(UART_HandleTypeDef *huart, UART_ExtInitTypeDef *NewConfig)
|
||||
OperationStatus uart_init(UART_HandleTypeDef *huart, UART_ExtInit_TypeDef *NewConfig)
|
||||
{
|
||||
if(huart->UART == NULL)
|
||||
{
|
||||
if(!huart || !huart->Instance)
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
if(NewConfig != NULL)
|
||||
{
|
||||
huart->Config = NewConfig;
|
||||
@@ -89,18 +87,18 @@ OperationStatus uart_init(UART_HandleTypeDef *huart, UART_ExtInitTypeDef *NewCon
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
UART_Init(huart->UART, &huart->Config->UART_Init);
|
||||
UART_Init(huart->Instance, &huart->Config->UART_Init);
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
OperationStatus uart_start(UART_HandleTypeDef *huart, UART_FIFOLevel_TypeDef TxFifoLevel, UART_FIFOLevel_TypeDef RxFifoLevel)
|
||||
{
|
||||
if (huart == NULL)
|
||||
if (!huart)
|
||||
return ERROR;
|
||||
|
||||
UART_ITFIFOLevelRxConfig(huart->UART, RxFifoLevel);
|
||||
UART_ITFIFOLevelTxConfig(huart->UART, TxFifoLevel);
|
||||
UART_ITFIFOLevelRxConfig(huart->Instance, RxFifoLevel);
|
||||
UART_ITFIFOLevelTxConfig(huart->Instance, TxFifoLevel);
|
||||
|
||||
|
||||
huart->TxBufPtr = NULL;
|
||||
@@ -113,7 +111,7 @@ OperationStatus uart_start(UART_HandleTypeDef *huart, UART_FIFOLevel_TypeDef TxF
|
||||
huart->RxSize = 0;
|
||||
huart->RxBusy = 0;
|
||||
|
||||
UART_Cmd(huart->UART, ENABLE);
|
||||
UART_Cmd(huart->Instance, ENABLE);
|
||||
|
||||
return OK;
|
||||
}
|
||||
@@ -192,7 +190,7 @@ OperationStatus uart_transmit_it(UART_HandleTypeDef *huart,
|
||||
huart->TxBusy = 1;
|
||||
|
||||
// Включаем прерывания по TX FIFO
|
||||
UART_ITCmd(huart->UART, UART_ITSource_TxFIFOLevel, ENABLE);
|
||||
UART_ITCmd(huart->Instance, UART_ITSource_TxFIFOLevel, ENABLE);
|
||||
|
||||
__uart_fifo_transmit(huart, 1);
|
||||
|
||||
@@ -218,7 +216,7 @@ OperationStatus uart_receive_it(UART_HandleTypeDef *huart,
|
||||
huart->RxBusy = 1;
|
||||
|
||||
// Включаем только RX прерывания
|
||||
UART_ITCmd(huart->UART,
|
||||
UART_ITCmd(huart->Instance,
|
||||
UART_ITSource_RxFIFOLevel |
|
||||
UART_ITSource_RecieveTimeout |
|
||||
UART_ITSource_ErrorFrame |
|
||||
@@ -233,10 +231,10 @@ OperationStatus uart_receive_it(UART_HandleTypeDef *huart,
|
||||
|
||||
void uart_handler(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (!huart || !huart->UART || !huart->Config)
|
||||
if (!huart || !huart->Instance || !huart->Config)
|
||||
return;
|
||||
|
||||
UART_TypeDef *uart = huart->UART;
|
||||
UART_TypeDef *uart = huart->Instance;
|
||||
uint32_t mis = uart->MIS;
|
||||
|
||||
// Ошибки
|
||||
@@ -304,18 +302,16 @@ void uart_handler(UART_HandleTypeDef *huart)
|
||||
|
||||
|
||||
/**
|
||||
* @brief Установка коллбека UART
|
||||
* @param htmr указатель на хендл UART
|
||||
* @brief Установка коллбека Instance
|
||||
* @param htmr указатель на хендл Instance
|
||||
* @param cb_type Тип коллбека
|
||||
* @param Callback Функция коллбека
|
||||
* @retval void
|
||||
*/
|
||||
OperationStatus uart_set_callback(UART_HandleTypeDef* huart, UART_CallbackTypeDef cb_type, void (*Callback)(void))
|
||||
{
|
||||
if((huart->UART == NULL) || (huart->Config == NULL))
|
||||
{
|
||||
if (!huart || !huart->Instance || !huart->Config)
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
switch(cb_type)
|
||||
{
|
||||
@@ -449,10 +445,10 @@ void uart1_gpio_deinit(void)
|
||||
|
||||
static int __uart_fifo_receive(UART_HandleTypeDef *huart, uint8_t it_mode)
|
||||
{
|
||||
while (!UART_FlagStatus(huart->UART, UART_Flag_RxFIFOEmpty) &&
|
||||
while (!UART_FlagStatus(huart->Instance, UART_Flag_RxFIFOEmpty) &&
|
||||
huart->RxCount < huart->RxSize)
|
||||
{
|
||||
huart->RxBufPtr[huart->RxCount++] = UART_RecieveData(huart->UART);
|
||||
huart->RxBufPtr[huart->RxCount++] = UART_RecieveData(huart->Instance);
|
||||
|
||||
if (huart->RxCount == huart->RxSize)
|
||||
{
|
||||
@@ -461,7 +457,7 @@ static int __uart_fifo_receive(UART_HandleTypeDef *huart, uint8_t it_mode)
|
||||
if(it_mode)
|
||||
{
|
||||
// Выключаем RX прерывания
|
||||
UART_ITCmd(huart->UART,
|
||||
UART_ITCmd(huart->Instance,
|
||||
UART_ITSource_RxFIFOLevel |
|
||||
UART_ITSource_RecieveTimeout,
|
||||
DISABLE);
|
||||
@@ -476,10 +472,10 @@ static int __uart_fifo_receive(UART_HandleTypeDef *huart, uint8_t it_mode)
|
||||
}
|
||||
static int __uart_fifo_transmit(UART_HandleTypeDef *huart, uint8_t it_mode)
|
||||
{
|
||||
while (!UART_FlagStatus(huart->UART, UART_Flag_TxFIFOFull) &&
|
||||
while (!UART_FlagStatus(huart->Instance, UART_Flag_TxFIFOFull) &&
|
||||
huart->TxCount < huart->TxSize)
|
||||
{
|
||||
UART_SendData(huart->UART, huart->TxBufPtr[huart->TxCount++]);
|
||||
UART_SendData(huart->Instance, huart->TxBufPtr[huart->TxCount++]);
|
||||
}
|
||||
|
||||
if (huart->TxCount == huart->TxSize)
|
||||
@@ -487,13 +483,13 @@ static int __uart_fifo_transmit(UART_HandleTypeDef *huart, uint8_t it_mode)
|
||||
if(it_mode)
|
||||
{
|
||||
// Выключаем FIFO прерывание
|
||||
UART_ITCmd(huart->UART, UART_ITSource_TxFIFOLevel, DISABLE);
|
||||
UART_ITCmd(huart->Instance, UART_ITSource_TxFIFOLevel, DISABLE);
|
||||
// Включаем TransmitDone прерывание, коллбек будет по нему
|
||||
UART_ITCmd(huart->UART, UART_ITSource_TransmitDone, ENABLE);
|
||||
UART_ITCmd(huart->Instance, UART_ITSource_TransmitDone, ENABLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
while(!UART_FlagStatus(huart->UART, UART_Flag_TxFIFOEmpty)); // ждем пока не опустошится буфер
|
||||
while(!UART_FlagStatus(huart->Instance, UART_Flag_TxFIFOEmpty)); // ждем пока не опустошится буфер
|
||||
|
||||
huart->TxBusy = 0;
|
||||
if (huart->Config->TxCallback)
|
||||
|
||||
Reference in New Issue
Block a user