Files
bishe-STM32/User/stm32f10x_it.c
T
2026-05-01 20:29:02 +08:00

56 lines
1.7 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include "stm32f10x_it.h"
#include "K210_USART.h" // 包含头文件以使用宏
// 引用 main.c/K210_USART.c 中定义的全局变量
extern volatile char g_k210_rx_buffer[];
extern volatile uint16_t g_k210_rx_counter;
extern volatile uint8_t g_k210_rx_flag;
// 引用 Delay.c 中定义的全局时间变量
extern volatile uint32_t g_time_ms;
/**
* @brief SysTick中断处理函数(1ms中断一次)
* @note 用于维护系统时间戳和延时功能
*/
void SysTick_Handler(void)
{
g_time_ms++; // 每1ms递增一次
}
//... HardFault_Handler 等其他中断保持不变 ...
// USART3中断(来自K210,根据连接图.md: K210使用USART3 PB10/PB11)
void USART3_IRQHandler(void)
{
if (USART_GetITStatus(USART3, USART_IT_RXNE) == SET)
{
uint8_t received_char = USART_ReceiveData(USART3);
// 收到换行符,认为一帧结束
if (received_char == '\n')
{
if (g_k210_rx_counter > 0)
{
g_k210_rx_buffer[g_k210_rx_counter] = '\0';
g_k210_rx_flag = 1; // 设置标志
// 注意:此处不再重置 g_k210_rx_counter,由 K210_GetRxFlag() 负责
}
}
// 忽略回车符
else if (received_char != '\r')
{
if (g_k210_rx_counter < K210_RX_BUFFER_SIZE - 1)
{
g_k210_rx_buffer[g_k210_rx_counter++] = received_char;
}
else // 缓冲区满,强制结束
{
g_k210_rx_buffer[K210_RX_BUFFER_SIZE - 1] = '\0';
g_k210_rx_flag = 1;
}
}
USART_ClearITPendingBit(USART3, USART_IT_RXNE);
}
}