2758|1

57

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

建议GD将标准库中关于enable和disable的宏名称进行统一 [复制链接]

今天试了下GD的DMA+UART,遇到这么一个问题,一方面可以说是自己大意导致,另一方面也是希望GD能将enable和disable的一些宏名字进行统一,不要每一项都单独做.

例如上图中的几个enable和disable,虽然使能和禁止的项目不同,但是这些移位可以在函数里面去处理,这几个宏可以都有同一个代替。
今天写了这么一段代码:
  1.     usart_deinit(USART1);
  2.     dma_deinit(DMA_CH3);
  3.       
  4.     usart_baudrate_set(USART1,115200);
  5.     usart_parity_config(USART1, USART_PM_NONE);
  6.     usart_word_length_set(USART1, USART_WL_8BIT);
  7.     usart_stop_bit_set(USART1, USART_STB_1BIT);
  8.     usart_hardware_flow_rts_config(USART1, USART_RTS_DISABLE);
  9.     usart_hardware_flow_cts_config(USART1, USART_CTS_DISABLE);
  10.     usart_receive_config(USART1, USART_RECEIVE_ENABLE);
  11.     usart_transmit_config(USART1, USART_TRANSMIT_ENABLE);
  12.     usart_enable(USART1);
  13.    
  14.     dma_parameter_struct  dma_parameter;
  15.     dma_parameter.direction = DMA_MEMORY_TO_PERIPHERAL;
  16.     dma_parameter.memory_addr = (uint32_t)tx_buf;
  17.     dma_parameter.memory_inc = DMA_MEMORY_INCREASE_ENABLE;
  18.     dma_parameter.memory_width = DMA_MEMORY_WIDTH_8BIT;
  19.     dma_parameter.periph_addr = USART1_TDATA_ADDRESS;
  20.     dma_parameter.periph_inc = DMA_PERIPH_INCREASE_DISABLE;
  21.     dma_parameter.periph_width = DMA_PERIPHERAL_WIDTH_8BIT;
  22.     dma_parameter.priority = DMA_PRIORITY_ULTRA_HIGH;
  23.     dma_init(DMA_CH3, dma_parameter);
  24.    
  25.     dma_circulation_disable(DMA_CH3);
  26.     dma_memory_to_memory_disable(DMA_CH3);
  27.    
  28.      
  29.     usart_dma_transmit_config(USART1, USART_DENR_ENABLE);  
复制代码

就是通过DMA来做串口的发送。
上面代码有一个地方有问题,就是我将USART_DENR_ENABLE 和 USART_DENT_ENABLE看混而写错了。然后串口一直没有东西,由于检查初始化流程只关注了调用的API,没有查看参数是否正确。纳闷了几分钟准备重写的时候突然盯上了USART_DENR_ENABLE,将它改为USART_DENT_ENABLE就没问题了。
这两个ENABLE,提供给用户使用的时候主要意思都是使能,为什么不能使用统一的宏呢,那样调用起来也方便。至与两者差别完全可以在API中进行处理。

此帖出自GD32 MCU论坛

最新回复

  详情 回复 发表于 2018-9-18 11:57
点赞 关注
 

回复
举报

935

帖子

1

TA的资源

禁止发言

沙发
 
此帖出自GD32 MCU论坛
 
个人签名存储芯片/MCU/SRAM/PSRAM/DDR/FLASH/MRAM。web.www.sramsun.com  QQ3161422826 TEL:13751192923
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表