本帖最后由 原来是wjc 于 2024-6-1 03:03 编辑
yorkbarney 发表于 2024-3-11 16:33
支持通过外部中断/事件控制器(EXTI)来触发DMA传输。#include "gd32f3x0.h"
#define BUFFER_SIZE 64
uint8_t receive_buffer[BUFFER_SIZE];
void usart0_dma_config(void)
{
// DMA配置代码
}
void exti0_config(void)
{
/* enable the EXTI GPIO clock */
rcu_periph_clock_enable(RCU_GPIOB);
/* configure button pin as input */
gpio_mode_set(GPIOB, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_0);
/* enable and set EXTI line source */
gpio_exti_source_select(GPIO_PORT_SOURCE_GPIOB, GPIO_PIN_SOURCE_0);
/* configure EXTI line */
exti_init(EXTI_0, EXTI_INTERRUPT, EXTI_TRIG_BOTH);
exti_interrupt_flag_clear(EXTI_0);
exti_interrupt_enable(EXTI_0, ENABLE);
/* enable and set EXTI0_IRQn Interrupt */
nvic_irq_enable(EXTI0_IRQn, 2U, 0U);
}
void exti0_IRQHandler(void)
{
/* clear EXTI line interrupt flag */
exti_interrupt_flag_clear(EXTI_0);
/* 设置DMA请求标志,启动DMA传输 */
dma_flag_set(DMA0, DMA_CH2, DMA_INT_FLAG_G);
}
int main(void)
{
/* 初始化USART、DMA、外部中断等 */
usart0_dma_config();
exti0_config();
while (1) {
/* 在这里处理其他任务 */
}
return 0;
} |