/*============================================================================== * Конфигурация портов с использованием бибилотеки PLIB035 *------------------------------------------------------------------------------ * ЦНИИ СЭТ, Разваляев Алексей *============================================================================== * Реализация функций инициализации портов находится в gpio.c * ЦНИИ СЭТ *============================================================================== */ #ifndef __PERIPH_CONFIG_H #define __PERIPH_CONFIG_H //-- 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 #define USE_TMR0 1 #define USE_TMR1 1 #define USE_TMR2 1 #define USE_TMR3 0 #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 //#define RETARGET // закоментирован - отключен, // // разкоментирован - включен //#define RETARGET_USE_ITM // закоментирован - использовать UART, // // разкоментирован - использовать ITM // Для дальнейшей настройки RETARGET -> retarget_conf.h //-- RCU Конфигурации --------------------------------------------------------- static RCU_PLL_Ref_TypeDef SYSCLK_Oscil_Type = RCU_PLL_Ref_OSEClk; #define SYSCLK_CORE_CLOCK_MHZ 100 //-- GPIO Конфигурации -------------------------------------------------------- /* Note: Периферия сама настроит нужные пины в gpiox_config на альтернативные функции */ static GPIO_Init_TypeDef gpioa_config[] = { // Пин, Режим, Выходной режим, Входной режим, Подтяжка, Нагрузка/Скорость { GPIO_Pin_0, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_1, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_2, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_3, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_4, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_5, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_6, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_7, GPIO_PinMode_Output, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_8, GPIO_PinMode_Output, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_9, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_10, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_11, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_12, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_13, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_14, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_15, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, }; static GPIO_Init_TypeDef gpiob_config[] = { // Пин, Режим, Выходной режим, Входной режим, Подтяжка, Нагрузка/Скорость { GPIO_Pin_0, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_1, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_2, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_3, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_4, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_5, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_6, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_7, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_8, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_9, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_10, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_11, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_12, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_13, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_14, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, { GPIO_Pin_15, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast }, }; //-- UART Конфигурации -------------------------------------------------------- #if USE_UART0==1 static UART_ExtInit_TypeDef uart0_config = { //Стоп биты, Четность, Длина посылки, Скорость, FIFO, Направление работы UART_StopBit_1, UART_ParityBit_Disable, UART_DataWidth_8, 115200, DISABLE, UART_Direction_RxTx, //Rx Коллбек Tx Коллбек Idle Коллбек Error Коллбек NULL, NULL, NULL, NULL }; #endif #if USE_UART1==1 static UART_ExtInit_TypeDef uart1_config = { //Стоп биты, Четность, Длина посылки, Скорость, FIFO, Направление работы UART_StopBit_1, UART_ParityBit_Disable, UART_DataWidth_8, 115200, DISABLE, UART_Direction_RxTx, //Rx Коллбек Tx Коллбек Idle Коллбек Error Коллбек NULL, NULL, NULL, NULL }; #endif //-- TMR Конфигурации --------------------------------------------------------- #if USE_TMR0==1 static TMR_ExtInit_TypeDef tmr0_config = { //Частота Clk МГц, Период обновления SYSCLK_CORE_CLOCK_MHZ, LOAD(0xFFFFFFFF, SYSCLK_CORE_CLOCK_MHZ-1), //Прерывания Запуск конверсии АЦП Реквест DMA Внешнее тактирование DISABLE, DISABLE, DISABLE, TMR_ExtInput_Disable }; #endif #if USE_TMR1==1 static TMR_ExtInit_TypeDef tmr1_config = { //Частота Clk МГц, Период обновления SYSCLK_CORE_CLOCK_MHZ, FREQ_HZ(10), //Прерывания Запуск конверсии АЦП Реквест DMA Внешнее тактирование DISABLE, DISABLE, DISABLE, TMR_ExtInput_Disable }; #endif #if USE_TMR2==1 static TMR_ExtInit_TypeDef tmr2_config = { //Частота Clk МГц, Период обновления SYSCLK_CORE_CLOCK_MHZ, PERIOD_MKS(1000000), //Прерывания Запуск конверсии АЦП Реквест DMA Внешнее тактирование ENABLE, DISABLE, DISABLE, TMR_ExtInput_Disable }; #endif #if USE_TMR3==1 static TMR_Init_TypeDef tmr3_config = { //Частота Clk МГц, Период обновления SYSCLK_CORE_CLOCK_MHZ, PERIOD_MKS(1000), //Прерывания Запуск конверсии АЦП Реквест DMA Внешнее тактирование DISABLE, DISABLE, DISABLE, TMR_ExtInput_Disable }; #endif //-- ADC SEQ Конфигурации ----------------------------------------------------- static RCU_PeriphClk_TypeDef ADC_ClockSource = RCU_PeriphClk_PLLClk; static float ADC_ClockMHz = 12.5; #if USE_ADC_SEQ0==1 static ADC_SEQ_ExtInit_TypeDef adc_seq0_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_1, ADC_SEQ_Average_2, DISABLE, //Кол-во рестартов секвенсора, Усреднение рестартов, Задержка между рестартами 0, DISABLE, 0, //Разрешение каналов цифровых компараторов DISABLE, DISABLE, DISABLE, DISABLE, //Настройка DMA FIFO, Разрешение DMA ADC_SEQ_DMAFIFOLevel_1, DISABLE, //Прерывания, Количество запросов для прерывания ENABLE, 0, //SEQ Complete Коллбек, Error коллбек NULL, NULL }; #endif #if USE_ADC_SEQ1==1 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, //Кол-во рестартов секвенсора, Усреднение рестартов, Задержка между рестартами 0, DISABLE, 0, //Разрешение каналов цифровых компараторов DISABLE, DISABLE, DISABLE, DISABLE, //Настройка DMA FIFO, Разрешение DMA ADC_SEQ_DMAFIFOLevel_1, DISABLE, //Прерывания, Количество запросов для прерывания DISABLE, 0, //SEQ Complete Коллбек, Error коллбек NULL, NULL }; #endif //-- ADC DC Конфигурации ------------------------------------------------------ #if USE_ADC_DC0==1 static ADC_DC_ExtInit_TypeDef adc_dc0_config = { //Включение выхода компаратора DISABLE, //Нижний порог, Верхний порог 0, 0, //Запуск измерения, Канал, Режим срабатывания, Условие срабатывания ADC_DC_Source_EOC, ADC_CH_Num_1, ADC_DC_Mode_Multiple, ADC_DC_Condition_Low, //DC Triggered Коллбек, Error коллбек NULL, NULL }; #endif #if USE_ADC_DC1==1 static ADC_DC_ExtInit_TypeDef adc_dc1_config = { //Включение выхода компаратора DISABLE, //Нижний порог, Верхний порог 0, 0, //Запуск измерения, Канал, Режим срабатывания, Условие срабатывания ADC_DC_Source_EOC, ADC_CH_Num_2, ADC_DC_Mode_Multiple, ADC_DC_Condition_Low, //DC Triggered Коллбек, Error коллбек NULL, NULL }; #endif #if USE_ADC_DC2==1 static ADC_DC_ExtInit_TypeDef adc_dc2_config = { //Включение выхода компаратора DISABLE, //Нижний порог, Верхний порог 0, 0, //Запуск измерения, Канал, Режим срабатывания, Условие срабатывания ADC_DC_Source_EOC, ADC_CH_Num_3, ADC_DC_Mode_Multiple, ADC_DC_Condition_Low, //DC Triggered Коллбек, Error коллбек NULL, NULL }; #endif #if USE_ADC_DC3==1 static ADC_DC_ExtInit_TypeDef adc_dc3_config = { //Включение выхода компаратора DISABLE, //Нижний порог, Верхний порог 0, 0, //Запуск измерения, Канал, Режим срабатывания, Условие срабатывания ADC_DC_Source_EOC, ADC_CH_Num_4, ADC_DC_Mode_Multiple, ADC_DC_Condition_Low, //DC Triggered Коллбек, Error коллбек NULL, NULL }; #endif #endif /*__PERIPH_CONFIG_H*/