generated from hulk/gd32e23x_template_cmake_vscode
new project
This commit is contained in:
@@ -37,6 +37,9 @@ OF SUCH DAMAGE.
|
||||
#include "uart.h"
|
||||
#include "uart_ring_buffer.h"
|
||||
#include "led.h"
|
||||
#include "ultrasonic_analog.h"
|
||||
|
||||
extern uint16_t g_capture_value;
|
||||
|
||||
/*!
|
||||
\brief this function handles NMI exception
|
||||
@@ -101,9 +104,78 @@ void SysTick_Handler(void) {
|
||||
delay_decrement();
|
||||
}
|
||||
|
||||
// /**
|
||||
// * @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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief This function handles external lines 0 to 1 interrupt request
|
||||
* @param[in] none
|
||||
* @param[out] none
|
||||
* @retval None
|
||||
*/
|
||||
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);
|
||||
exti_interrupt_disable(US_RX_GPIO_EXTI);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* PWM周期计数器 - 使用ULTRASONIC_TX_CYCLES宏 */
|
||||
volatile uint8_t pwm_cycle_count = 0;
|
||||
|
||||
void TIMER13_IRQHandler(void)
|
||||
{
|
||||
if(SET == timer_interrupt_flag_get(TIMER13, TIMER_INT_FLAG_UP)) {
|
||||
timer_interrupt_flag_clear(TIMER13, TIMER_INT_FLAG_UP);
|
||||
pwm_cycle_count++;
|
||||
|
||||
if(pwm_cycle_count >= (ULTRASONIC_TX_CYCLES)) {
|
||||
timer_disable(TIMER13);
|
||||
pwm_cycle_count = 0;
|
||||
g_ultrasonic_measure_done = true; // TODO 测距命令发送回报标识位,最终不应在这里
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void USART0_IRQHandler(void) {
|
||||
if (RESET != usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE)) {
|
||||
uint8_t data = usart_data_receive(USART0);
|
||||
(void)uart_ring_buffer_put(data); // 缓冲满时丢弃,返回值可用于统计
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user