161 lines
3.3 KiB
C
161 lines
3.3 KiB
C
#include "main.h"
|
|
#include "stm32f1xx_it.h"
|
|
|
|
#include "FreeRTOS.h"
|
|
#include "task.h"
|
|
|
|
#include "app_runtime.h"
|
|
#include "config.h"
|
|
#include "debug_log.h"
|
|
#include "uart_trans.h"
|
|
|
|
extern SPI_HandleTypeDef hspi1;
|
|
extern DMA_HandleTypeDef hdma_usart1_rx;
|
|
extern DMA_HandleTypeDef hdma_usart1_tx;
|
|
extern DMA_HandleTypeDef hdma_usart2_rx;
|
|
extern DMA_HandleTypeDef hdma_usart2_tx;
|
|
extern DMA_HandleTypeDef hdma_usart3_rx;
|
|
extern DMA_HandleTypeDef hdma_usart3_tx;
|
|
extern UART_HandleTypeDef huart1;
|
|
extern UART_HandleTypeDef huart2;
|
|
extern UART_HandleTypeDef huart3;
|
|
|
|
void NMI_Handler(void)
|
|
{
|
|
while (1) {
|
|
}
|
|
}
|
|
|
|
void HardFault_Handler(void)
|
|
{
|
|
Debug_TrapWithRttHint("hardfault");
|
|
while (1) {
|
|
}
|
|
}
|
|
|
|
void MemManage_Handler(void)
|
|
{
|
|
Debug_TrapWithRttHint("memmanage");
|
|
while (1) {
|
|
}
|
|
}
|
|
|
|
void BusFault_Handler(void)
|
|
{
|
|
Debug_TrapWithRttHint("busfault");
|
|
while (1) {
|
|
}
|
|
}
|
|
|
|
void UsageFault_Handler(void)
|
|
{
|
|
Debug_TrapWithRttHint("usagefault");
|
|
while (1) {
|
|
}
|
|
}
|
|
|
|
void DebugMon_Handler(void)
|
|
{
|
|
}
|
|
|
|
void SysTick_Handler(void)
|
|
{
|
|
if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED) {
|
|
xPortSysTickHandler();
|
|
}
|
|
}
|
|
|
|
void DMA1_Channel2_IRQHandler(void)
|
|
{
|
|
HAL_DMA_IRQHandler(&hdma_usart3_tx);
|
|
}
|
|
|
|
void DMA1_Channel3_IRQHandler(void)
|
|
{
|
|
HAL_DMA_IRQHandler(&hdma_usart3_rx);
|
|
}
|
|
|
|
void DMA1_Channel4_IRQHandler(void)
|
|
{
|
|
HAL_DMA_IRQHandler(&hdma_usart1_tx);
|
|
}
|
|
|
|
void DMA1_Channel5_IRQHandler(void)
|
|
{
|
|
HAL_DMA_IRQHandler(&hdma_usart1_rx);
|
|
}
|
|
|
|
void DMA1_Channel6_IRQHandler(void)
|
|
{
|
|
HAL_DMA_IRQHandler(&hdma_usart2_rx);
|
|
}
|
|
|
|
void DMA1_Channel7_IRQHandler(void)
|
|
{
|
|
HAL_DMA_IRQHandler(&hdma_usart2_tx);
|
|
}
|
|
|
|
void EXTI0_IRQHandler(void)
|
|
{
|
|
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
|
|
|
if (__HAL_GPIO_EXTI_GET_IT(GPIO_PIN_0) != RESET) {
|
|
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_0);
|
|
xSemaphoreGiveFromISR(xNetSemaphore, &xHigherPriorityTaskWoken);
|
|
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
|
}
|
|
}
|
|
|
|
void SPI1_IRQHandler(void)
|
|
{
|
|
HAL_SPI_IRQHandler(&hspi1);
|
|
}
|
|
|
|
void USART1_IRQHandler(void)
|
|
{
|
|
if (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_IDLE) != RESET) {
|
|
__HAL_UART_CLEAR_IDLEFLAG(&huart1);
|
|
config_uart_idle_handler();
|
|
}
|
|
HAL_UART_IRQHandler(&huart1);
|
|
}
|
|
|
|
void USART2_IRQHandler(void)
|
|
{
|
|
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
|
if (__HAL_UART_GET_FLAG(&huart2, UART_FLAG_IDLE) != RESET) {
|
|
__HAL_UART_CLEAR_IDLEFLAG(&huart2);
|
|
uart_trans_notify_rx_from_isr(UART_CHANNEL_U0, &xHigherPriorityTaskWoken);
|
|
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
|
}
|
|
HAL_UART_IRQHandler(&huart2);
|
|
}
|
|
|
|
void USART3_IRQHandler(void)
|
|
{
|
|
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
|
if (__HAL_UART_GET_FLAG(&huart3, UART_FLAG_IDLE) != RESET) {
|
|
__HAL_UART_CLEAR_IDLEFLAG(&huart3);
|
|
uart_trans_notify_rx_from_isr(UART_CHANNEL_U1, &xHigherPriorityTaskWoken);
|
|
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
|
}
|
|
HAL_UART_IRQHandler(&huart3);
|
|
}
|
|
|
|
void TIM4_IRQHandler(void)
|
|
{
|
|
if ((TIM4->SR & TIM_SR_UIF) != 0u) {
|
|
TIM4->SR &= ~TIM_SR_UIF;
|
|
}
|
|
HAL_IncTick();
|
|
}
|
|
|
|
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
|
|
{
|
|
if (huart == &huart2) {
|
|
uart_trans_tx_cplt_handler(UART_CHANNEL_U0);
|
|
} else if (huart == &huart3) {
|
|
uart_trans_tx_cplt_handler(UART_CHANNEL_U1);
|
|
}
|
|
}
|