|
建议GD将标准库中关于enable和disable的宏名称进行统一
[复制链接]
今天试了下GD的DMA+UART,遇到这么一个问题,一方面可以说是自己大意导致,另一方面也是希望GD能将enable和disable的一些宏名字进行统一,不要每一项都单独做.
例如上图中的几个enable和disable,虽然使能和禁止的项目不同,但是这些移位可以在函数里面去处理,这几个宏可以都有同一个代替。
今天写了这么一段代码:
- usart_deinit(USART1);
- dma_deinit(DMA_CH3);
-
- usart_baudrate_set(USART1,115200);
- usart_parity_config(USART1, USART_PM_NONE);
- usart_word_length_set(USART1, USART_WL_8BIT);
- usart_stop_bit_set(USART1, USART_STB_1BIT);
- usart_hardware_flow_rts_config(USART1, USART_RTS_DISABLE);
- usart_hardware_flow_cts_config(USART1, USART_CTS_DISABLE);
- usart_receive_config(USART1, USART_RECEIVE_ENABLE);
- usart_transmit_config(USART1, USART_TRANSMIT_ENABLE);
- usart_enable(USART1);
-
- dma_parameter_struct dma_parameter;
- dma_parameter.direction = DMA_MEMORY_TO_PERIPHERAL;
- dma_parameter.memory_addr = (uint32_t)tx_buf;
- dma_parameter.memory_inc = DMA_MEMORY_INCREASE_ENABLE;
- dma_parameter.memory_width = DMA_MEMORY_WIDTH_8BIT;
- dma_parameter.periph_addr = USART1_TDATA_ADDRESS;
- dma_parameter.periph_inc = DMA_PERIPH_INCREASE_DISABLE;
- dma_parameter.periph_width = DMA_PERIPHERAL_WIDTH_8BIT;
- dma_parameter.priority = DMA_PRIORITY_ULTRA_HIGH;
- dma_init(DMA_CH3, dma_parameter);
-
- dma_circulation_disable(DMA_CH3);
- dma_memory_to_memory_disable(DMA_CH3);
-
-
- usart_dma_transmit_config(USART1, USART_DENR_ENABLE);
复制代码
就是通过DMA来做串口的发送。
上面代码有一个地方有问题,就是我将USART_DENR_ENABLE 和 USART_DENT_ENABLE看混而写错了。然后串口一直没有东西,由于检查初始化流程只关注了调用的API,没有查看参数是否正确。纳闷了几分钟准备重写的时候突然盯上了USART_DENR_ENABLE,将它改为USART_DENT_ENABLE就没问题了。
这两个ENABLE,提供给用户使用的时候主要意思都是使能,为什么不能使用统一的宏呢,那样调用起来也方便。至与两者差别完全可以在API中进行处理。
|
|