revert Merge pull request 'dev' (#1) from dev into main

Reviewed-on: #1
This commit is contained in:
2025-08-25 17:34:39 +08:00
parent 3ad18bf1f1
commit 3e42b474d1
12 changed files with 174 additions and 241 deletions

View File

@@ -38,7 +38,8 @@ OF SUCH DAMAGE.
#include "uart_ring_buffer.h"
#include "led.h"
#include "ultrasonic_analog.h"
#include "board_config.h"
extern uint16_t g_capture_value;
/*!
\brief this function handles NMI exception
@@ -103,21 +104,39 @@ void SysTick_Handler(void) {
delay_decrement();
}
void TIMER16_IRQHandler(void)
{
// CH0比较中断 (ULTRASONIC_TX_RINGDOWN_RELOAD)
if(timer_interrupt_flag_get(TIMER16, TIMER_INT_FLAG_CH0) != RESET) {
timer_interrupt_flag_clear(TIMER16, TIMER_INT_FLAG_CH0);
exti_interrupt_enable(US_RX_GPIO_EXTI);
// /**
// * @brief This function handles TIMER15 interrupt request.
// * @param[in] none
// * @param[out] none
// * @retval None
// */
// void TIMER15_IRQHandler(void) {
// if (timer_interrupt_flag_get(US_TX_DELAY_TIMER, TIMER_INT_FLAG_UP) == SET)
// {
// timer_interrupt_flag_clear(US_TX_DELAY_TIMER, TIMER_INT_FLAG_UP);
// exti_interrupt_enable(US_RX_GPIO_EXTI); // turn on hardware external input interrupt
// timer_counter_value_config(US_ECHO_TIMER, 0);
// timer_enable(US_ECHO_TIMER); // turn on timer to calculate the first ultrasonic echo time
// timer_disable(US_TX_DELAY_TIMER);
// }
// }
void TIMER15_IRQHandler(void) {
if (timer_interrupt_flag_get(TIMER15, TIMER_INT_FLAG_CH1)) {
timer_interrupt_flag_clear(TIMER15, TIMER_INT_FLAG_CH1);
// g_ultrasonic_measure_done = true; // TODO 测距命令发送回报标识位,最终不应在这里
gpio_bit_set(GPIOA, GPIO_PIN_0); // TODO waiting for delete
}
if (timer_interrupt_flag_get(TIMER15, TIMER_INT_FLAG_UP)) {
timer_interrupt_flag_clear(TIMER15, TIMER_INT_FLAG_UP);
timer_disable(TIMER15);
}
// UP更新中断 (ULTRASONIC_MAX_TOF_RELOAD)
if(timer_interrupt_flag_get(TIMER16, TIMER_INT_FLAG_UP) != RESET) {
timer_interrupt_flag_clear(TIMER16, TIMER_INT_FLAG_UP);
timer_disable(US_ECHO_TIMER);
}
}
/**
* @brief This function handles external lines 0 to 1 interrupt request
* @param[in] none
@@ -128,12 +147,14 @@ void EXTI0_1_IRQHandler(void) {
if (exti_interrupt_flag_get(US_RX_GPIO_EXTI) == SET)
{
exti_interrupt_flag_clear(US_RX_GPIO_EXTI);
g_capture_value = timer_channel_capture_value_register_read(US_ECHO_TIMER, US_ECHO_CH);
timer_disable(US_ECHO_TIMER);
g_ultrasonic_measure_done = true; // 超声转换完成,置位flag后有命令处理部分回包
exti_interrupt_disable(US_RX_GPIO_EXTI);
}
}
/* PWM周期计数器 - 使用ULTRASONIC_TX_CYCLES宏 */
volatile uint8_t pwm_cycle_count = 0;
@@ -146,21 +167,15 @@ void TIMER13_IRQHandler(void)
if(pwm_cycle_count >= (ULTRASONIC_TX_CYCLES)) {
timer_disable(TIMER13);
pwm_cycle_count = 0;
g_ultrasonic_measure_done = true; // TODO 测距命令发送回报标识位,最终不应在这里
}
}
}
void USART0_IRQHandler(void) {
// 检查当前配置是否使用USART0并且函数指针不为空
if(g_usart_config.usart_periph == USART0 && g_usart_config.irq_handler != 0) {
g_usart_config.irq_handler(); // 通过函数指针调用对应的处理函数
}
}
void USART1_IRQHandler(void) {
// 检查当前配置是否使用USART1并且函数指针不为空
if(g_usart_config.usart_periph == USART1 && g_usart_config.irq_handler != 0) {
g_usart_config.irq_handler(); // 通过函数指针调用对应的处理函数
if (RESET != usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE)) {
uint8_t data = usart_data_receive(USART0);
(void)uart_ring_buffer_put(data); // 缓冲满时丢弃,返回值可用于统计
}
}