Добавлено:
- рефакторинг названий: - маленькие буквы - инит периферии - ТакойСтильФункций - API для использования - сделаны шапки с инструкциями к функциями - доработан ацп секвенсора - доработан систем тики. можно настроить его на разные частоты и подключить коллбеки на разный период - в gpio добавлены функции для кнопок и диодов - генерация бинарника
This commit is contained in:
@@ -1,11 +1,59 @@
|
||||
/*==============================================================================
|
||||
* Прерывания микроконтроллера 1921ВК035
|
||||
*------------------------------------------------------------------------------
|
||||
* ЦНИИ СЭТ, Разваляев Алексей <wot890089@mail.ru>
|
||||
*==============================================================================
|
||||
* ЦНИИ СЭТ
|
||||
*==============================================================================
|
||||
*/
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file vk035_it.c
|
||||
* @author Разваляев Алексей
|
||||
* @brief Обработчики прерываний для микроконтроллера 1921ВК035.
|
||||
* Этот файл содержит:
|
||||
* + Обработчики прерываний периферии (UART, TMR, ADC, DMA и др.)
|
||||
* + Обработчики исключений Cortex-M4 (HardFault, SysTick и др.)
|
||||
* + Интеграцию с драйверами периферии через вызовы обработчиков
|
||||
* + Управление системным временем через SysTick
|
||||
*
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Использование этого файла предполагает наличие корректных настроек:
|
||||
* - Определены USE_xxx макросы в periph_config.h для включения периферии
|
||||
* - Инициализированы соответствующие драйверы периферии
|
||||
* - Включены прерывания в NVIC через функции драйверов
|
||||
*
|
||||
******************************************************************************
|
||||
* @verbatim
|
||||
==============================================================================
|
||||
##### Как использовать этот файл #####
|
||||
==============================================================================
|
||||
|
||||
1. Настройка периферии (periph_config.h):
|
||||
(+) Определить USE_TMRx для используемых таймеров (0-3)
|
||||
(+) Определить USE_UARTx для используемых UART (0-1)
|
||||
(+) Определить USE_ADC_SEQx для используемых секвенсоров ADC (0-1)
|
||||
|
||||
2. Инициализация драйверов:
|
||||
(+) Вызвать функции инициализации драйверов (uart_init_first, tmr_init_first и т.д.)
|
||||
- Драйверы автоматически включат соответствующие прерывания в NVIC
|
||||
|
||||
3. Обработка прерываний:
|
||||
(+) Прерывания периферии автоматически перенаправляются в драйверы
|
||||
(+) Системные прерывания (SysTick) управляют временем millis/micros
|
||||
(+) Обработчики исключений обрабатывают критические ошибки
|
||||
|
||||
4. Интеграция с драйверами:
|
||||
(+) UART прерывания -> uart_irq_handler(&huartx)
|
||||
(+) TMR прерывания -> tmr_irq_handler(&htmrx)
|
||||
(+) ADC SEQ прерывания -> adc_seq_irq_handler(&hadc, SEQ_Num)
|
||||
|
||||
5. Системное время:
|
||||
(+) SysTick_Handler() автоматически обновляет millis() и micros()
|
||||
(+) Период SysTick настраивается в sysclk_init()
|
||||
|
||||
6. Особенности работы:
|
||||
(+) Неиспользуемые обработчики оставлены пустыми для будущего расширения
|
||||
(+) Критические ошибки (HardFault и др.) уходят в бесконечный цикл
|
||||
(+) Прерывания обрабатываются неблокирующе с минимальными задержками
|
||||
|
||||
@endverbatim
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
//-- Includes ------------------------------------------------------------------
|
||||
#include "main.h"
|
||||
@@ -15,60 +63,78 @@
|
||||
/* 1921VK035 Peripheral Interrupt Handlers */
|
||||
/* Add here the Interrupt Handlers for the used peripherals. */
|
||||
/******************************************************************************/
|
||||
#if USE_WDT==1
|
||||
void WDT_IRQHandler(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
void GPIOA_IRQHandler(void)
|
||||
{
|
||||
}
|
||||
void GPIOB_IRQHandler(void)
|
||||
{
|
||||
}
|
||||
#if USE_TMR0==1
|
||||
void TMR0_IRQHandler(void)
|
||||
{
|
||||
tmr_handler(&htmr0);
|
||||
tmr_irq_handler(&htmr0);
|
||||
}
|
||||
#endif
|
||||
#if USE_TMR1==1
|
||||
void TMR1_IRQHandler(void)
|
||||
{
|
||||
tmr_handler(&htmr1);
|
||||
tmr_irq_handler(&htmr1);
|
||||
}
|
||||
#endif
|
||||
#if USE_TMR2==1
|
||||
void TMR2_IRQHandler(void)
|
||||
{
|
||||
tmr_handler(&htmr2);
|
||||
tmr_irq_handler(&htmr2);
|
||||
}
|
||||
#endif
|
||||
#if USE_TMR3==1
|
||||
void TMR3_IRQHandler(void)
|
||||
{
|
||||
tmr_handler(&htmr3);
|
||||
tmr_irq_handler(&htmr3);
|
||||
}
|
||||
#endif
|
||||
#if USE_UART0==1
|
||||
void UART0_TD_IRQHandler(void)
|
||||
{
|
||||
uart_handler(&huart0);
|
||||
uart_irq_handler(&huart0);
|
||||
}
|
||||
void UART0_RX_IRQHandler(void)
|
||||
{
|
||||
uart_handler(&huart0);
|
||||
uart_irq_handler(&huart0);
|
||||
}
|
||||
void UART0_TX_IRQHandler(void)
|
||||
{
|
||||
uart_handler(&huart0);
|
||||
uart_irq_handler(&huart0);
|
||||
}
|
||||
void UART0_E_RT_IRQHandler(void)
|
||||
{
|
||||
uart_handler(&huart0);
|
||||
uart_irq_handler(&huart0);
|
||||
}
|
||||
#endif
|
||||
#if USE_UART1==1
|
||||
void UART1_TD_IRQHandler(void)
|
||||
{
|
||||
uart_handler(&huart1);
|
||||
uart_irq_handler(&huart1);
|
||||
}
|
||||
void UART1_RX_IRQHandler(void)
|
||||
{
|
||||
uart_handler(&huart1);
|
||||
uart_irq_handler(&huart1);
|
||||
}
|
||||
void UART1_TX_IRQHandler(void)
|
||||
{
|
||||
uart_handler(&huart1);
|
||||
uart_irq_handler(&huart1);
|
||||
}
|
||||
void UART1_E_RT_IRQHandler(void)
|
||||
{
|
||||
uart_handler(&huart1);
|
||||
uart_irq_handler(&huart1);
|
||||
}
|
||||
#endif
|
||||
#if USE_SPI==1
|
||||
void SPI_RO_RT_IRQHandler(void)
|
||||
{
|
||||
}
|
||||
@@ -78,18 +144,28 @@ void SPI_RX_IRQHandler(void)
|
||||
void SPI_TX_IRQHandler(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
#if USE_I2C==1
|
||||
void I2C_IRQHandler(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
#if USE_ECAP0==1
|
||||
void ECAP0_IRQHandler(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
#if USE_ECAP1==1
|
||||
void ECAP1_IRQHandler(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
#if USE_ECAP2==1
|
||||
void ECAP2_IRQHandler(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
#if USE_PWM0==1
|
||||
void PWM0_IRQHandler(void)
|
||||
{
|
||||
}
|
||||
@@ -99,6 +175,8 @@ void PWM0_HD_IRQHandler(void)
|
||||
void PWM0_TZ_IRQHandler(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
#if USE_PWM1==1
|
||||
void PWM1_IRQHandler(void)
|
||||
{
|
||||
}
|
||||
@@ -108,6 +186,8 @@ void PWM1_HD_IRQHandler(void)
|
||||
void PWM1_TZ_IRQHandler(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
#if USE_PWM2==1
|
||||
void PWM2_IRQHandler(void)
|
||||
{
|
||||
}
|
||||
@@ -117,20 +197,30 @@ void PWM2_HD_IRQHandler(void)
|
||||
void PWM2_TZ_IRQHandler(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
#if USE_QEP==1
|
||||
void QEP_IRQHandler(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
#if USE_ADC_SEQ0==1
|
||||
void ADC_SEQ0_IRQHandler(void)
|
||||
{
|
||||
adc_seq_handler(&hadc, ADC_SEQ_Num_0);
|
||||
adc_seq_irq_handler(&hadc, ADC_SEQ_Num_0);
|
||||
}
|
||||
#endif
|
||||
#if USE_ADC_SEQ1==1
|
||||
void ADC_SEQ1_IRQHandler(void)
|
||||
{
|
||||
adc_seq_handler(&hadc, ADC_SEQ_Num_1);
|
||||
adc_seq_irq_handler(&hadc, ADC_SEQ_Num_1);
|
||||
}
|
||||
#endif
|
||||
#if (USE_ADC_DC0==1) || (USE_ADC_DC1==1) || (USE_ADC_DC2==1) || (USE_ADC_DC3==1)
|
||||
void ADC_DC_IRQHandler(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
#if USE_ADC_CAN==1
|
||||
void CAN0_IRQHandler(void)
|
||||
{
|
||||
}
|
||||
@@ -179,9 +269,7 @@ void CAN14_IRQHandler(void)
|
||||
void CAN15_IRQHandler(void)
|
||||
{
|
||||
}
|
||||
void FPU_IRQHandler(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
void DMA_CH0_IRQHandler(void)
|
||||
{
|
||||
}
|
||||
@@ -230,7 +318,7 @@ void DMA_CH14_IRQHandler(void)
|
||||
void DMA_CH15_IRQHandler(void)
|
||||
{
|
||||
}
|
||||
void WDT_IRQHandler(void)
|
||||
void FPU_IRQHandler(void)
|
||||
{
|
||||
}
|
||||
void RCU_IRQHandler(void)
|
||||
@@ -320,5 +408,5 @@ void PendSV_Handler(void)
|
||||
*/
|
||||
void SysTick_Handler(void)
|
||||
{
|
||||
millis_inc();
|
||||
sysclk_irq_handler();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user