GD32F450的串口DMA收发+接受完成中断

GD32的库比较糟糕当时完全是参考STM32的驱动来的,当然我也知道直接用ST的库可以,但是原因比较特殊就不多说了。

代码就不贴了,以后用GD的机会我想不会太多。

先初始化串口,使能串口,使能接受完成中断。

再初始化DMA通道。贴一段

1 int fputc(int ch, FILE *f)
2 {
3     usart_data_transmit(USART0, (uint8_t)ch);
4     while(RESET == usart_flag_get(USART0, USART_FLAG_TBE));
5     return ch;
6 }

 

 1 void uart0_dma_config(void)
 2 {     
 3         dma_single_data_parameter_struct dma_init_struct;
 4     /* enable DMA1 */
 5     rcu_periph_clock_enable(RCU_DMA1);
 6     /* deinitialize DMA channel7(USART0 tx) */
 7     dma_deinit(DMA1, DMA_CH7);
 8     dma_init_struct.direction = DMA_MEMORY_TO_PERIPH;
 9     dma_init_struct.memory0_addr = (uint32_t)tx_buffer0;
10     dma_init_struct.memory_inc = DMA_MEMORY_INCREASE_ENABLE;
11     dma_init_struct.periph_memory_width = DMA_PERIPH_WIDTH_8BIT;
12     dma_init_struct.number = TXBUFF_SIZE;
13     dma_init_struct.periph_addr = USART0_DATA_ADDRESS;
14     dma_init_struct.periph_inc = DMA_PERIPH_INCREASE_DISABLE;
15     dma_init_struct.priority = DMA_PRIORITY_ULTRA_HIGH;
16     dma_single_data_mode_init(DMA1, DMA_CH7, dma_init_struct);
17     /* configure DMA mode */
  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
嗨!对于使用GD32F450微控制器的ADC DMA,您可以按照以下步骤进行配置: 1. 首先,确保您已经初始化了ADC和DMA外设,并启用了它们的时钟。 2. 配置ADC的通道和采样时间: - 使用`adc_channel_length`函数设置ADC的通道数。 - 使用`adc_regular_channel_config`函数配置每个通道的采样时间、转换模式和触发源。 3. 配置DMA: - 使用`dma_deinit`函数重置DMA外设。 - 使用`dma_init_struct`结构体配置DMA的通道、数据传输方向、数据宽度和传输模式。 - 使用`dma_mode_config`函数配置DMA的传输模式。 - 使用`dma_circulation_disable`函数禁用DMA的循环传输模式(如果不需要循环传输)。 - 使用`dma_memory_address_config`函数配置DMA的内存地址和外设地址。 - 使用`dma_memory_width_config`函数配置DMA的内存和外设数据宽度。 - 使用`dma_memory_increase_enable`函数启用DMA的内存递增模式。 - 使用`dma_channel_enable`函数启用DMA通道。 4. 启动ADC和DMA: - 使用`adc_software_trigger_enable`函数启动ADC转换。 - 使用`dma_channel_enable`函数启动DMA传输。 5. 在DMA传输完成后,您可以使用DMA中断或轮询方法来处理接收到的数据。 这是一个基本的ADC DMA配置过程的概述。具体的代码实现可能会有所不同,具体取决于您使用的开发环境和库。确保参考GD32F450微控制器的参考手册和相关的库文档以获取更详细的信息和示例代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值