Добавлено:
- рефакторинг названий: - маленькие буквы - инит периферии - ТакойСтильФункций - API для использования - сделаны шапки с инструкциями к функциями - доработан ацп секвенсора - доработан систем тики. можно настроить его на разные частоты и подключить коллбеки на разный период - в gpio добавлены функции для кнопок и диодов - генерация бинарника
This commit is contained in:
@@ -1,39 +1,67 @@
|
||||
/*==============================================================================
|
||||
* Конфигурация портов с использованием бибилотеки PLIB035
|
||||
* @file periph_config.h
|
||||
* @author Разваляев Алексей
|
||||
*------------------------------------------------------------------------------
|
||||
* ЦНИИ СЭТ, Разваляев Алексей <wot890089@mail.ru>
|
||||
*==============================================================================
|
||||
* Реализация функций инициализации портов находится в gpio.c
|
||||
* ЦНИИ СЭТ
|
||||
* Общий файл конфигурации периферии проекта.
|
||||
*
|
||||
* Содержит:
|
||||
* + Глобальные флаги включения периферии (USE_...)
|
||||
* + Конфигурации тактирования и источников RCU
|
||||
* + Таблицы конфигурации GPIO
|
||||
* + Конфигурационные структуры для периферии:
|
||||
* - GPIO
|
||||
* - UART
|
||||
* - TMR (таймеры)
|
||||
* - ADC (SEQ и DC)
|
||||
* - DMA
|
||||
* - NVIC (приоритеты прерываний)
|
||||
*
|
||||
* Используется драйверами:
|
||||
* - gpio.c
|
||||
* - uart.c
|
||||
* - tmr.c
|
||||
* - adc.c
|
||||
* - dma.c
|
||||
*
|
||||
* Реализация инициализации периферии находится в соответствующих *.c файлах.
|
||||
*==============================================================================
|
||||
*/
|
||||
#ifndef __PERIPH_CONFIG_H
|
||||
#define __PERIPH_CONFIG_H
|
||||
#pragma once
|
||||
//-- Includes ------------------------------------------------------------------
|
||||
#include "sysclk.h"
|
||||
#include "gpio.h"
|
||||
#include "uart.h"
|
||||
#include "tmr.h"
|
||||
#include "adc.h"
|
||||
|
||||
/* Обработчик ошибок */
|
||||
void Error_Handler(void);
|
||||
|
||||
//-- Общие Конфигурации -------------------------------------------------------
|
||||
// 0 - использовать периферию, 1 - не использовать
|
||||
#define USE_UART0 0
|
||||
#define USE_UART1 1
|
||||
// 0 - использовать периферию
|
||||
// 1 - не использовать
|
||||
|
||||
#define USE_TMR0 1
|
||||
#define USE_TMR1 1
|
||||
#define USE_TMR2 1
|
||||
#define USE_TMR3 0
|
||||
/* UART */
|
||||
#define USE_UART0 0 /*!< Использовать UART0 */
|
||||
#define USE_UART1 0 /*!< Использовать UART1 */
|
||||
|
||||
#define USE_ADC_SEQ0 1
|
||||
#define USE_ADC_SEQ1 0
|
||||
#define USE_ADC_DC0 0
|
||||
#define USE_ADC_DC1 0
|
||||
#define USE_ADC_DC2 0
|
||||
#define USE_ADC_DC3 0
|
||||
/* Timers */
|
||||
#define USE_TMR0 0 /*!< Использовать Таймер 0 */
|
||||
#define USE_TMR1 0 /*!< Использовать Таймер 1 */
|
||||
#define USE_TMR2 0 /*!< Использовать Таймер 2 */
|
||||
#define USE_TMR3 0 /*!< Использовать Таймер 3 */
|
||||
|
||||
/* ADC */
|
||||
#define USE_ADC_SEQ0 0 /*!< Использовать Секвенсор 0 */
|
||||
#define USE_ADC_SEQ1 0 /*!< Использовать Секвенсор 1 */
|
||||
#define USE_ADC_DC0 0 /*!< Использовать Компаратор 0 */
|
||||
#define USE_ADC_DC1 0 /*!< Использовать Компаратор 1 */
|
||||
#define USE_ADC_DC2 0 /*!< Использовать Компаратор 2 */
|
||||
#define USE_ADC_DC3 0 /*!< Использовать Компаратор 3 */
|
||||
|
||||
/** @note Для RETARGET надо объявить этот дефайн в проекте
|
||||
Options for Target -> C/C++ -> Defines
|
||||
*/
|
||||
//#define RETARGET // закоментирован - отключен,
|
||||
// // разкоментирован - включен
|
||||
//#define RETARGET_USE_ITM // закоментирован - использовать UART,
|
||||
@@ -41,14 +69,25 @@ void Error_Handler(void);
|
||||
// Для дальнейшей настройки RETARGET -> retarget_conf.h
|
||||
|
||||
//-- RCU Конфигурации ---------------------------------------------------------
|
||||
/** @brief Источник тактирования МК
|
||||
* @note Система всегда стартует с внутреннего МК и после потом переходит на PLL и заданный здесь источник
|
||||
Поменять тактировние при старте можно в system_K1921VK035.h
|
||||
*/
|
||||
static RCU_PLL_Ref_TypeDef SYSCLK_Oscil_Type = RCU_PLL_Ref_OSEClk;
|
||||
|
||||
/** @brief Желаемая частота тактирования МК */
|
||||
#define SYSCLK_CORE_CLOCK_MHZ 100
|
||||
|
||||
/** @brief Частота тиков uwTick тактирования МК */
|
||||
static SYSCLK_TickHz_TypeDef SYSCLK_TickType = SYSCLK_Tick_1ms;
|
||||
|
||||
//-- GPIO Конфигурации --------------------------------------------------------
|
||||
/*
|
||||
/** @note
|
||||
Note:
|
||||
Периферия сама настроит нужные пины в gpiox_config на альтернативные функции
|
||||
*/
|
||||
|
||||
/** @brief Конфигурации пинов порта GPIOA */
|
||||
static GPIO_Init_TypeDef gpioa_config[] = {
|
||||
// Пин, Режим, Выходной режим, Входной режим, Подтяжка, Нагрузка/Скорость
|
||||
{ GPIO_Pin_0, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast },
|
||||
@@ -69,6 +108,7 @@ static GPIO_Init_TypeDef gpioa_config[] = {
|
||||
{ GPIO_Pin_15, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast },
|
||||
};
|
||||
|
||||
/** @brief Конфигурации пинов порта GPIOB */
|
||||
static GPIO_Init_TypeDef gpiob_config[] = {
|
||||
// Пин, Режим, Выходной режим, Входной режим, Подтяжка, Нагрузка/Скорость
|
||||
{ GPIO_Pin_0, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast },
|
||||
@@ -160,17 +200,17 @@ static ADC_SEQ_ExtInit_TypeDef adc_seq0_config = {
|
||||
ADC_CH_Num_0, ADC_CH_Num_1, ADC_CH_Num_2, ADC_CH_Num_3,
|
||||
//Последний запрос, Усреднение запросов, Усреднение запросов
|
||||
ADC_SEQ_ReqNum_1, ADC_SEQ_Average_2, DISABLE,
|
||||
//Кол-во рестартов секвенсора, Усреднение рестартов, Задержка между рестартами
|
||||
//Кол-во рестартов секвенсора, Усреднение рестартов, Задержка между рестартами (в тиках ADC_ClockSource/2)
|
||||
0, DISABLE, 0,
|
||||
//Разрешение каналов цифровых компараторов
|
||||
DISABLE, DISABLE, DISABLE, DISABLE,
|
||||
//Настройка DMA FIFO, Разрешение DMA
|
||||
ADC_SEQ_DMAFIFOLevel_1, DISABLE,
|
||||
//Прерывания, Количество запросов для прерывания
|
||||
ENABLE, 0,
|
||||
//SEQ Complete Коллбек, Error коллбек
|
||||
NULL, NULL
|
||||
|
||||
//Прерывания, Кол-во рестартов для прерывания Циклический буфер
|
||||
ENABLE, 0, ENABLE,
|
||||
//SEQ Complete Коллбек, BuffHalf Коллбек, BuffFull Коллбек, Error коллбек
|
||||
NULL, NULL, NULL, NULL,
|
||||
|
||||
};
|
||||
#endif
|
||||
#if USE_ADC_SEQ1==1
|
||||
@@ -178,19 +218,19 @@ static ADC_SEQ_ExtInit_TypeDef adc_seq1_config = {
|
||||
//Событие запуска секвенсора, Разрешение программного запуска
|
||||
ADC_SEQ_StartEvent_SwReq, ENABLE,
|
||||
//Выбор каналов для запросов секвенсора
|
||||
ADC_CH_Num_0, ADC_CH_Num_1, ADC_CH_Num_2, ADC_CH_Num_3,
|
||||
//Макс. кол-во запросов, Усреднение запросов, Усреднение запросов
|
||||
ADC_SEQ_ReqNum_0, ADC_SEQ_Average_2, DISABLE,
|
||||
//Кол-во рестартов секвенсора, Усреднение рестартов, Задержка между рестартами
|
||||
ADC_CH_Num_2, ADC_CH_Num_3, ADC_CH_Num_2, ADC_CH_Num_3,
|
||||
//Последний запрос, Усреднение запросов, Усреднение запросов
|
||||
ADC_SEQ_ReqNum_1, ADC_SEQ_Average_2, DISABLE,
|
||||
//Кол-во рестартов секвенсора, Усреднение рестартов, Задержка между рестартами (в тиках ADC_ClockSource/2)
|
||||
0, DISABLE, 0,
|
||||
//Разрешение каналов цифровых компараторов
|
||||
DISABLE, DISABLE, DISABLE, DISABLE,
|
||||
//Настройка DMA FIFO, Разрешение DMA
|
||||
ADC_SEQ_DMAFIFOLevel_1, DISABLE,
|
||||
//Прерывания, Количество запросов для прерывания
|
||||
DISABLE, 0,
|
||||
//SEQ Complete Коллбек, Error коллбек
|
||||
NULL, NULL
|
||||
//Прерывания, Кол-во рестартов для прерывания Циклический буфер
|
||||
ENABLE, 0, ENABLE,
|
||||
//SEQ Complete Коллбек, BuffHalf Коллбек, BuffFull Коллбек, Error коллбек
|
||||
NULL, NULL, NULL, NULL,
|
||||
|
||||
};
|
||||
#endif
|
||||
@@ -244,4 +284,89 @@ static ADC_DC_ExtInit_TypeDef adc_dc3_config = {
|
||||
NULL, NULL
|
||||
};
|
||||
#endif
|
||||
#endif /*__PERIPH_CONFIG_H*/
|
||||
|
||||
//-- NVIC Конфигурации --------------------------------------------------------
|
||||
/** @brief Приоритеты прерываний, 0 - самый высокий приоритет*/
|
||||
static uint8_t NCIV_Priorities[] =
|
||||
{
|
||||
[GPIOA_IRQn] = 0,
|
||||
[GPIOB_IRQn] = 0,
|
||||
[TMR0_IRQn] = 0,
|
||||
[TMR1_IRQn] = 0,
|
||||
[TMR2_IRQn] = 0,
|
||||
[TMR3_IRQn] = 0,
|
||||
[UART0_TD_IRQn] = 0,
|
||||
[UART0_RX_IRQn] = 0,
|
||||
[UART0_TX_IRQn] = 0,
|
||||
[UART0_E_RT_IRQn] = 0,
|
||||
[UART1_TD_IRQn] = 0,
|
||||
[UART1_RX_IRQn] = 0,
|
||||
[UART1_TX_IRQn] = 0,
|
||||
[UART1_E_RT_IRQn] = 0,
|
||||
[SPI_RO_RT_IRQn] = 0,
|
||||
[SPI_RX_IRQn] = 0,
|
||||
[SPI_TX_IRQn] = 0,
|
||||
[I2C_IRQn] = 0,
|
||||
[ECAP0_IRQn] = 0,
|
||||
[ECAP1_IRQn] = 0,
|
||||
[ECAP2_IRQn] = 0,
|
||||
[PWM0_IRQn] = 0,
|
||||
[PWM0_HD_IRQn] = 0,
|
||||
[PWM0_TZ_IRQn] = 0,
|
||||
[PWM1_IRQn] = 0,
|
||||
[PWM1_HD_IRQn] = 0,
|
||||
[PWM1_TZ_IRQn] = 0,
|
||||
[PWM2_IRQn] = 0,
|
||||
[PWM2_HD_IRQn] = 0,
|
||||
[PWM2_TZ_IRQn] = 0,
|
||||
[QEP_IRQn] = 0,
|
||||
[ADC_SEQ0_IRQn] = 0,
|
||||
[ADC_SEQ1_IRQn] = 0,
|
||||
[ADC_DC_IRQn] = 0,
|
||||
[CAN0_IRQn] = 0,
|
||||
[CAN1_IRQn] = 0,
|
||||
[CAN2_IRQn] = 0,
|
||||
[CAN3_IRQn] = 0,
|
||||
[CAN4_IRQn] = 0,
|
||||
[CAN5_IRQn] = 0,
|
||||
[CAN6_IRQn] = 0,
|
||||
[CAN7_IRQn] = 0,
|
||||
[CAN8_IRQn] = 0,
|
||||
[CAN9_IRQn] = 0,
|
||||
[CAN10_IRQn] = 0,
|
||||
[CAN11_IRQn] = 0,
|
||||
[CAN12_IRQn] = 0,
|
||||
[CAN13_IRQn] = 0,
|
||||
[CAN14_IRQn] = 0,
|
||||
[CAN15_IRQn] = 0,
|
||||
[DMA_CH0_IRQn] = 0,
|
||||
[DMA_CH1_IRQn] = 0,
|
||||
[DMA_CH2_IRQn] = 0,
|
||||
[DMA_CH3_IRQn] = 0,
|
||||
[DMA_CH4_IRQn] = 0,
|
||||
[DMA_CH5_IRQn] = 0,
|
||||
[DMA_CH6_IRQn] = 0,
|
||||
[DMA_CH7_IRQn] = 0,
|
||||
[DMA_CH8_IRQn] = 0,
|
||||
[DMA_CH9_IRQn] = 0,
|
||||
[DMA_CH10_IRQn] = 0,
|
||||
[DMA_CH11_IRQn] = 0,
|
||||
[DMA_CH12_IRQn] = 0,
|
||||
[DMA_CH13_IRQn] = 0,
|
||||
[DMA_CH14_IRQn] = 0,
|
||||
[DMA_CH15_IRQn] = 0,
|
||||
[WDT_IRQn] = 0,
|
||||
[RCU_IRQn] = 0,
|
||||
[MFLASH_IRQn] = 0,
|
||||
[FPU_IRQn] = 0,
|
||||
};
|
||||
static inline void NVIC_SetAllPriorities(void)
|
||||
{
|
||||
for(int i = 0; i < sizeof(NCIV_Priorities); i++)
|
||||
{
|
||||
NVIC_SetPriority((IRQn_Type)i, NCIV_Priorities[i]);
|
||||
}
|
||||
}
|
||||
//-- Utils --------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user