436 lines
10 KiB
C
436 lines
10 KiB
C
/* USER CODE BEGIN Header */
|
||
/**
|
||
******************************************************************************
|
||
* @file stm32f1xx_it.c
|
||
* @brief Interrupt Service Routines.
|
||
******************************************************************************
|
||
* @attention
|
||
*
|
||
* Copyright (c) 2024 STMicroelectronics.
|
||
* All rights reserved.
|
||
*
|
||
* This software is licensed under terms that can be found in the LICENSE file
|
||
* in the root directory of this software component.
|
||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||
*
|
||
******************************************************************************
|
||
*/
|
||
/* USER CODE END Header */
|
||
|
||
/* Includes ------------------------------------------------------------------*/
|
||
#include "main.h"
|
||
#include "stm32f1xx_it.h"
|
||
/* Private includes ----------------------------------------------------------*/
|
||
/* USER CODE BEGIN Includes */
|
||
|
||
#include "app.h"
|
||
#include "string.h"
|
||
#include "serial_port.h"
|
||
#include "Uart1.h"
|
||
|
||
/* USER CODE END Includes */
|
||
|
||
/* Private typedef -----------------------------------------------------------*/
|
||
/* USER CODE BEGIN TD */
|
||
|
||
/* USER CODE END TD */
|
||
|
||
/* Private define ------------------------------------------------------------*/
|
||
/* USER CODE BEGIN PD */
|
||
|
||
/* USER CODE END PD */
|
||
|
||
/* Private macro -------------------------------------------------------------*/
|
||
/* USER CODE BEGIN PM */
|
||
|
||
/* USER CODE END PM */
|
||
|
||
/* Private variables ---------------------------------------------------------*/
|
||
/* USER CODE BEGIN PV */
|
||
|
||
|
||
/* USER CODE END PV */
|
||
|
||
/* Private function prototypes -----------------------------------------------*/
|
||
/* USER CODE BEGIN PFP */
|
||
|
||
/* USER CODE END PFP */
|
||
|
||
/* Private user code ---------------------------------------------------------*/
|
||
/* USER CODE BEGIN 0 */
|
||
|
||
/* USER CODE END 0 */
|
||
|
||
/* External variables --------------------------------------------------------*/
|
||
extern I2C_HandleTypeDef hi2c1;
|
||
extern SPI_HandleTypeDef hspi2;
|
||
extern TIM_HandleTypeDef htim1;
|
||
extern DMA_HandleTypeDef hdma_usart2_rx;
|
||
extern UART_HandleTypeDef huart1;
|
||
extern UART_HandleTypeDef huart2;
|
||
extern UART_HandleTypeDef huart3;
|
||
/* USER CODE BEGIN EV */
|
||
|
||
static volatile uint8_t txcplt_flag = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־<EFBFBD><D6BE>1<EFBFBD><31><EFBFBD><EFBFBD>0δ<30><CEB4><EFBFBD><EFBFBD>
|
||
static volatile uint8_t rxcplt_flag = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־<EFBFBD><D6BE>1<EFBFBD><31><EFBFBD><EFBFBD>0δ<30><CEB4><EFBFBD><EFBFBD>
|
||
|
||
uint8_t rx_data = 0, rx_data2[6] = {0},rx2_cnt = 0;
|
||
//HAL_StatusTypeDef hal_check_rx;
|
||
static volatile uint8_t test_buffer[10];
|
||
|
||
/* USER CODE END EV */
|
||
|
||
/******************************************************************************/
|
||
/* Cortex-M3 Processor Interruption and Exception Handlers */
|
||
/******************************************************************************/
|
||
/**
|
||
* @brief This function handles Non maskable interrupt.
|
||
*/
|
||
void NMI_Handler(void)
|
||
{
|
||
/* USER CODE BEGIN NonMaskableInt_IRQn 0 */
|
||
|
||
/* USER CODE END NonMaskableInt_IRQn 0 */
|
||
/* USER CODE BEGIN NonMaskableInt_IRQn 1 */
|
||
while (1)
|
||
{
|
||
}
|
||
/* USER CODE END NonMaskableInt_IRQn 1 */
|
||
}
|
||
|
||
/**
|
||
* @brief This function handles Hard fault interrupt.
|
||
*/
|
||
void HardFault_Handler(void)
|
||
{
|
||
/* USER CODE BEGIN HardFault_IRQn 0 */
|
||
|
||
/* USER CODE END HardFault_IRQn 0 */
|
||
while (1)
|
||
{
|
||
/* USER CODE BEGIN W1_HardFault_IRQn 0 */
|
||
/* USER CODE END W1_HardFault_IRQn 0 */
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @brief This function handles Memory management fault.
|
||
*/
|
||
void MemManage_Handler(void)
|
||
{
|
||
/* USER CODE BEGIN MemoryManagement_IRQn 0 */
|
||
|
||
/* USER CODE END MemoryManagement_IRQn 0 */
|
||
while (1)
|
||
{
|
||
/* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */
|
||
/* USER CODE END W1_MemoryManagement_IRQn 0 */
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @brief This function handles Prefetch fault, memory access fault.
|
||
*/
|
||
void BusFault_Handler(void)
|
||
{
|
||
/* USER CODE BEGIN BusFault_IRQn 0 */
|
||
|
||
/* USER CODE END BusFault_IRQn 0 */
|
||
while (1)
|
||
{
|
||
/* USER CODE BEGIN W1_BusFault_IRQn 0 */
|
||
/* USER CODE END W1_BusFault_IRQn 0 */
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @brief This function handles Undefined instruction or illegal state.
|
||
*/
|
||
void UsageFault_Handler(void)
|
||
{
|
||
/* USER CODE BEGIN UsageFault_IRQn 0 */
|
||
|
||
/* USER CODE END UsageFault_IRQn 0 */
|
||
while (1)
|
||
{
|
||
/* USER CODE BEGIN W1_UsageFault_IRQn 0 */
|
||
/* USER CODE END W1_UsageFault_IRQn 0 */
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @brief This function handles System service call via SWI instruction.
|
||
*/
|
||
void SVC_Handler(void)
|
||
{
|
||
/* USER CODE BEGIN SVCall_IRQn 0 */
|
||
|
||
/* USER CODE END SVCall_IRQn 0 */
|
||
/* USER CODE BEGIN SVCall_IRQn 1 */
|
||
|
||
/* USER CODE END SVCall_IRQn 1 */
|
||
}
|
||
|
||
/**
|
||
* @brief This function handles Debug monitor.
|
||
*/
|
||
void DebugMon_Handler(void)
|
||
{
|
||
/* USER CODE BEGIN DebugMonitor_IRQn 0 */
|
||
|
||
/* USER CODE END DebugMonitor_IRQn 0 */
|
||
/* USER CODE BEGIN DebugMonitor_IRQn 1 */
|
||
|
||
/* USER CODE END DebugMonitor_IRQn 1 */
|
||
}
|
||
|
||
/**
|
||
* @brief This function handles Pendable request for system service.
|
||
*/
|
||
void PendSV_Handler(void)
|
||
{
|
||
/* USER CODE BEGIN PendSV_IRQn 0 */
|
||
|
||
/* USER CODE END PendSV_IRQn 0 */
|
||
/* USER CODE BEGIN PendSV_IRQn 1 */
|
||
|
||
/* USER CODE END PendSV_IRQn 1 */
|
||
}
|
||
|
||
/**
|
||
* @brief This function handles System tick timer.
|
||
*/
|
||
void SysTick_Handler(void)
|
||
{
|
||
/* USER CODE BEGIN SysTick_IRQn 0 */
|
||
|
||
/* USER CODE END SysTick_IRQn 0 */
|
||
HAL_IncTick();
|
||
/* USER CODE BEGIN SysTick_IRQn 1 */
|
||
|
||
/* USER CODE END SysTick_IRQn 1 */
|
||
}
|
||
|
||
/******************************************************************************/
|
||
/* STM32F1xx Peripheral Interrupt Handlers */
|
||
/* Add here the Interrupt Handlers for the used peripherals. */
|
||
/* For the available peripheral interrupt handler names, */
|
||
/* please refer to the startup file (startup_stm32f1xx.s). */
|
||
/******************************************************************************/
|
||
|
||
/**
|
||
* @brief This function handles DMA1 channel6 global interrupt.
|
||
*/
|
||
void DMA1_Channel6_IRQHandler(void)
|
||
{
|
||
/* USER CODE BEGIN DMA1_Channel6_IRQn 0 */
|
||
|
||
/* USER CODE END DMA1_Channel6_IRQn 0 */
|
||
HAL_DMA_IRQHandler(&hdma_usart2_rx);
|
||
/* USER CODE BEGIN DMA1_Channel6_IRQn 1 */
|
||
|
||
/* USER CODE END DMA1_Channel6_IRQn 1 */
|
||
}
|
||
|
||
/**
|
||
* @brief This function handles TIM1 update interrupt.
|
||
*/
|
||
void TIM1_UP_IRQHandler(void)
|
||
{
|
||
/* USER CODE BEGIN TIM1_UP_IRQn 0 */
|
||
|
||
/* USER CODE END TIM1_UP_IRQn 0 */
|
||
HAL_TIM_IRQHandler(&htim1);
|
||
/* USER CODE BEGIN TIM1_UP_IRQn 1 */
|
||
|
||
/* USER CODE END TIM1_UP_IRQn 1 */
|
||
}
|
||
|
||
/**
|
||
* @brief This function handles I2C1 event interrupt.
|
||
*/
|
||
void I2C1_EV_IRQHandler(void)
|
||
{
|
||
/* USER CODE BEGIN I2C1_EV_IRQn 0 */
|
||
|
||
/* USER CODE END I2C1_EV_IRQn 0 */
|
||
HAL_I2C_EV_IRQHandler(&hi2c1);
|
||
/* USER CODE BEGIN I2C1_EV_IRQn 1 */
|
||
|
||
/* USER CODE END I2C1_EV_IRQn 1 */
|
||
}
|
||
|
||
/**
|
||
* @brief This function handles I2C1 error interrupt.
|
||
*/
|
||
void I2C1_ER_IRQHandler(void)
|
||
{
|
||
/* USER CODE BEGIN I2C1_ER_IRQn 0 */
|
||
|
||
/* USER CODE END I2C1_ER_IRQn 0 */
|
||
HAL_I2C_ER_IRQHandler(&hi2c1);
|
||
/* USER CODE BEGIN I2C1_ER_IRQn 1 */
|
||
|
||
/* USER CODE END I2C1_ER_IRQn 1 */
|
||
}
|
||
|
||
/**
|
||
* @brief This function handles SPI2 global interrupt.
|
||
*/
|
||
void SPI2_IRQHandler(void)
|
||
{
|
||
/* USER CODE BEGIN SPI2_IRQn 0 */
|
||
|
||
/* USER CODE END SPI2_IRQn 0 */
|
||
HAL_SPI_IRQHandler(&hspi2);
|
||
/* USER CODE BEGIN SPI2_IRQn 1 */
|
||
|
||
/* USER CODE END SPI2_IRQn 1 */
|
||
}
|
||
|
||
/**
|
||
* @brief This function handles USART1 global interrupt.
|
||
*/
|
||
void USART1_IRQHandler(void)
|
||
{
|
||
/* USER CODE BEGIN USART1_IRQn 0 */
|
||
|
||
/* USER CODE END USART1_IRQn 0 */
|
||
HAL_UART_IRQHandler(&huart1);
|
||
/* USER CODE BEGIN USART1_IRQn 1 */
|
||
|
||
// HAL_UART_IRQHandler(&huart1); // HAL<41><4C><EFBFBD>е<EFBFBD>UARTͳһ<CDB3>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>β<EFBFBD><CEB2>ж<EFBFBD><D0B6><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>˭<EFBFBD><CBAD><EFBFBD><EFBFBD>?
|
||
|
||
|
||
if((USART1->SR &(1<<5)) != 0) // <20>ж<EFBFBD>USART1<54><31>״̬<D7B4>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>λ<EFBFBD><CEBB>RXNEλ<45>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>λ
|
||
{
|
||
rx_data = USART1->DR; // RXNE=1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DR<44>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>浽<EFBFBD><E6B5BD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>
|
||
|
||
// HAL_UART_Receive_IT(&huart1,&rx_data,1);
|
||
|
||
receive_ttl_data(rx_data);
|
||
}
|
||
|
||
// HAL_UART_Transmit_IT( &huart1, (uint8_t *)text_r, 20);
|
||
|
||
/* USER CODE END USART1_IRQn 1 */
|
||
}
|
||
|
||
/**
|
||
* @brief This function handles USART2 global interrupt.
|
||
*/
|
||
void USART2_IRQHandler(void)
|
||
{
|
||
/* USER CODE BEGIN USART2_IRQn 0 */
|
||
|
||
/* USER CODE END USART2_IRQn 0 */
|
||
HAL_UART_IRQHandler(&huart2);
|
||
/* USER CODE BEGIN USART2_IRQn 1 */
|
||
// hal_check_rx = HAL_UART_Receive_IT(&huart2,rx_data2,4);
|
||
|
||
// if((USART2->SR &(2<<5)) != 0) // <20>ж<EFBFBD>USART1<54><31>״̬<D7B4>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>λ<EFBFBD><CEBB>RXNEλ<45>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>λ
|
||
// {
|
||
// if(rx2_cnt < 4)
|
||
// {
|
||
// rx_data2[rx2_cnt] = USART2->DR;
|
||
// rx2_cnt++;
|
||
// }
|
||
// if(rx2_cnt == 4)
|
||
// {
|
||
// rx2_cnt = 0;
|
||
// memset(rx_data2,0,4);
|
||
// }
|
||
// }
|
||
|
||
HAL_UARTEx_ReceiveToIdle_DMA(&huart2,rx_data2,6);
|
||
|
||
/* USER CODE END USART2_IRQn 1 */
|
||
}
|
||
|
||
/**
|
||
* @brief This function handles USART3 global interrupt.
|
||
*/
|
||
void USART3_IRQHandler(void)
|
||
{
|
||
/* USER CODE BEGIN USART3_IRQn 0 */
|
||
|
||
/* USER CODE END USART3_IRQn 0 */
|
||
HAL_UART_IRQHandler(&huart3);
|
||
/* USER CODE BEGIN USART3_IRQn 1 */
|
||
|
||
/* USER CODE END USART3_IRQn 1 */
|
||
}
|
||
|
||
/* USER CODE BEGIN 1 */
|
||
|
||
int it_1ms_cnt = 0,it_1ms_flag=0;
|
||
int it_2ms_cnt = 0,it_2ms_flag=0;
|
||
int it_5ms_cnt = 0,it_5ms_flag=0;
|
||
int it_10ms_cnt = 0,it_10ms_flag=0;
|
||
int it_50ms_cnt = 0,it_50ms_flag=0;
|
||
int it_100ms_cnt = 0,it_100ms_flag=0;
|
||
int it_300ms_cnt = 0,it_300ms_flag=0;
|
||
int it_500ms_cnt = 0,it_500ms_flag=0;
|
||
int it_1000ms_cnt = 0,it_1000ms_flag=0;
|
||
int it_5000ms_cnt = 0,it_5000ms_flag=0;
|
||
|
||
void HAL_TIM_PeriodElapsedCallback (TIM_HandleTypeDef *htim)
|
||
{
|
||
if(htim == &htim1) // <20>ж<EFBFBD>ִ<EFBFBD>г<EFBFBD><D0B3><EFBFBD>
|
||
{
|
||
//<2F><><EFBFBD><EFBFBD>λͳ<CEBB><CDB3><EFBFBD>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
it_1ms_cnt = (it_1ms_cnt+1)*(it_1ms_cnt < 1);
|
||
if(it_1ms_cnt == 1 ) it_1ms_flag = 1;
|
||
|
||
it_2ms_cnt = (it_2ms_cnt+1)*(it_2ms_cnt<2);
|
||
if(it_2ms_cnt == 2 ) it_2ms_flag = 1;
|
||
|
||
it_5ms_cnt = (it_5ms_cnt+1)*(it_5ms_cnt<5);
|
||
if(it_5ms_cnt == 5 ) it_5ms_flag = 1;
|
||
|
||
it_10ms_cnt = (it_10ms_cnt+1)*(it_10ms_cnt<10);
|
||
if(it_10ms_cnt == 10 ) it_10ms_flag = 1;
|
||
|
||
it_50ms_cnt = (it_50ms_cnt+1)*(it_50ms_cnt<50);
|
||
if(it_50ms_cnt == 50 ) it_50ms_flag = 1;
|
||
|
||
it_100ms_cnt = (it_100ms_cnt+1)*(it_100ms_cnt<100);
|
||
if(it_100ms_cnt == 100 ) it_100ms_flag = 1;
|
||
|
||
it_500ms_cnt = (it_500ms_cnt+1)*(it_500ms_cnt<500);
|
||
if(it_500ms_cnt == 500 ) it_500ms_flag = 1;
|
||
|
||
it_1000ms_cnt = (it_1000ms_cnt+1)*(it_1000ms_cnt<1000);
|
||
if(it_1000ms_cnt == 1000 ) it_1000ms_flag = 1;
|
||
|
||
it_5000ms_cnt = (it_5000ms_cnt+1)*(it_5000ms_cnt<5000); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4>ʱ<EFBFBD><CAB1>ȷ<D7BC><C8B7>
|
||
if(it_5000ms_cnt == 5000 ) it_5000ms_flag = !it_5000ms_flag;
|
||
|
||
Key_Scan();
|
||
}
|
||
}
|
||
|
||
|
||
|
||
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) //HAL_UART_Receive_IT call back function
|
||
{
|
||
if(huart->Instance == USART2)
|
||
{
|
||
|
||
|
||
}
|
||
}
|
||
|
||
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) //HAL_UART_Receive_IT call back function
|
||
{
|
||
if(huart->Instance == USART2)
|
||
{
|
||
HAL_GPIO_WritePin(RS485_EN1_GPIO_Port,RS485_EN1_Pin,GPIO_PIN_RESET);
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
/* USER CODE END 1 */
|