OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2173|回复: 4

对库函数结构体的一个优化,分享给大家

[复制链接]

35

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2016-10-12
在线时间
53 小时
发表于 2018-3-10 10:41:42 | 显示全部楼层 |阅读模式
我们在写库函数的时候,一般都会建一个结构体,如串口:USART_InitTypeDef USART_InitStructure
这个结构体里面有6个成员,算是少的,有些结构体如DMA,有15个成员
那么,我们在写程序的时候,是不是每一个都必须写呢?其实不必,特别是成员比较多的情况
在定义结构体变量的时候,我们这样定义:
USART_InitTypeDef USART_InitStructure={0};
这样的目的,是确保结构体中的成员都为0;
那么,比如串口,常用的设定是:8位、1个停止位、无校验、无硬件数据流控制,这些值在特定的位上都是0,那么,初始化函数可写为:
        USART_InitTypeDef USART_InitStructure={0};
        USART_InitStructure.USART_BaudRate = 115200;             //设定波特率
        USART_InitStructure.USART_Mode = USART_Mode_Tx;     //只发模式
        USART_Init(USART1, &USART_InitStructure);                       //初始化串口1

是不是非常简洁,上述例子省去了4行,如果是DMA的初始化,可以省去8行,可以大大提高写代码的速度,另外,程序也变得简洁,易读性提高。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2018-3-11 19:43:19 | 显示全部楼层
我们都是这么干的,多看开源代码就知道了,还有很多小技巧,从细节看得出编程水平。多积累吧。
回复 支持 反对

使用道具 举报

6

主题

21

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2018-1-27
在线时间
6 小时
发表于 2018-3-11 20:30:43 | 显示全部楼层
感谢分享,很有价值,学习了!
回复 支持 反对

使用道具 举报

4

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
268
金钱
268
注册时间
2018-2-11
在线时间
53 小时
发表于 2018-3-12 09:47:47 | 显示全部楼层
路过,学习一下!
回复 支持 反对

使用道具 举报

6

主题

315

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1670
金钱
1670
注册时间
2018-1-29
在线时间
160 小时
发表于 2018-3-12 12:22:01 | 显示全部楼层
感谢分享,很有价值,学习了!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-20 14:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表