OpenEdv-开源电子网

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

对于处理器的库函数中这种带x字母的宏定义 我该怎么去使用呢?

[复制链接]

4

主题

12

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2018-11-8
在线时间
3 小时
发表于 2018-12-13 11:01:01 | 显示全部楼层 |阅读模式
10金钱
金钱
#define LPUART_FIFO_RXFIFOSIZE_MASK              (0x7U)
#define LPUART_FIFO_RXFIFOSIZE_SHIFT             (0U)
#define LPUART_FIFO_RXFIFOSIZE(x)                (((uint32_t)(((uint32_t)(x)) << LPUART_FIFO_RXFIFOSIZE_SHIFT)) & LPUART_FIFO_RXFIFOSIZE_MASK)
#define LPUART_FIFO_RXFE_MASK                    (0x8U)
#define LPUART_FIFO_RXFE_SHIFT                   (3U)
#define LPUART_FIFO_RXFE(x)                      (((uint32_t)(((uint32_t)(x)) << LPUART_FIFO_RXFE_SHIFT)) & LPUART_FIFO_RXFE_MASK)

我要修改串口fifo的缓存区长度
比如说第三行和第六行  感觉和定义FIFOBUFFER的深度有关,但是该怎么声明才可以正确定义呢,试过好几次了,都没定义成功。


最佳答案

查看完整内容[请看2#楼]

把它当做带参数的函数调用下即可啊,你要设置x=4就LPUART_FIFO_RXFIFOSIZE(4);你要设置x=8就LPUART_FIFO_RXFIFOSIZE(8); 不要改宏定义啊,就当带参数的函数void LPUART_FIFO_RXFIFOSIZE(u8 x);然后需要时调用下即可
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2018-12-13 11:01:02 | 显示全部楼层
践行 发表于 2018-12-13 11:16
先谢谢啊!
#define LPUART_FIFO_RXFIFOSIZE(x)                (((uint32_t)(((uint32_t)(x))

把它当做带参数的函数调用下即可啊,你要设置x=4就LPUART_FIFO_RXFIFOSIZE(4);你要设置x=8就LPUART_FIFO_RXFIFOSIZE(8);
不要改宏定义啊,就当带参数的函数void LPUART_FIFO_RXFIFOSIZE(u8 x);然后需要时调用下即可
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2018-12-13 11:07:44 | 显示全部楼层
直接用啊,就是跟带参数的函数一样啊
LPUART_FIFO_RXFIFOSIZE(4);

回复

使用道具 举报

4

主题

12

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2018-11-8
在线时间
3 小时
 楼主| 发表于 2018-12-13 11:16:11 | 显示全部楼层
szczyb1314 发表于 2018-12-13 11:07
直接用啊,就是跟带参数的函数一样啊
LPUART_FIFO_RXFIFOSIZE(4);

先谢谢啊!
#define LPUART_FIFO_RXFIFOSIZE(x)                (((uint32_t)(((uint32_t)(x)) << LPUART_FIFO_RXFIFOSIZE_SHIFT)) & LPUART_FIFO_RXFIFOSIZE_MASK)

一共两个x  我都需要改一下,然后重新声明一遍吗?这样?
#define LPUART_FIFO_RXFIFOSIZE(4)                (((uint32_t)(((uint32_t)(4)) << LPUART_FIFO_RXFIFOSIZE_SHIFT)) & LPUART_FIFO_RXFIFOSIZE_MASK)
回复

使用道具 举报

4

主题

12

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2018-11-8
在线时间
3 小时
 楼主| 发表于 2018-12-13 11:25:50 | 显示全部楼层
szczyb1314 发表于 2018-12-13 11:18
把它当做带参数的函数调用下即可啊,你要设置x=4就LPUART_FIFO_RXFIFOSIZE(4);你要设置x=8就LPUART_FIFO ...

好的 我试试  谢谢啦
回复

使用道具 举报

4

主题

12

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2018-11-8
在线时间
3 小时
 楼主| 发表于 2018-12-13 11:34:05 | 显示全部楼层
践行 发表于 2018-12-13 11:25
好的 我试试  谢谢啦

LPUART_FIFO_RXFIFOSIZE(5);
LPUART_FIFO_TXFIFOSIZE(5);
FSL_FEATURE_LPUART_FIFO_SIZEn(5);
直接这么用的不太对吧
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2018-12-13 13:26:21 | 显示全部楼层
践行 发表于 2018-12-13 11:34
LPUART_FIFO_RXFIFOSIZE(5);
LPUART_FIFO_TXFIFOSIZE(5);
FSL_FEATURE_LPUART_FIFO_SIZEn(5);

你的功能无法实现这个帮不了你(没有任何代码和硬件就几句你的描述根本无法判断你的问题),但是这种宏函数的使用就是这样子的。
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

4

主题

12

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2018-11-8
在线时间
3 小时
 楼主| 发表于 2018-12-13 13:44:30 | 显示全部楼层
szczyb1314 发表于 2018-12-13 13:26
你的功能无法实现这个帮不了你(没有任何代码和硬件就几句你的描述根本无法判断你的问题),但是这种宏函 ...

好的谢谢您,我的是rt1052串口fifo,因为fifo寄存器中fifo深度的几个位为只读的,所以没找到怎么设置fifo深度,现在看来这几个宏定义并不能设置它的队列深度。总之谢谢了
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2018-12-13 13:49:47 | 显示全部楼层
践行 发表于 2018-12-13 13:44
好的谢谢您,我的是rt1052串口fifo,因为fifo寄存器中fifo深度的几个位为只读的,所以没找到怎么设置fifo ...

那你继续研究吧
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 06:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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