【发布时间】:2019-08-09 15:37:45
【问题描述】:
我正在想办法改变 SAI 中的活动槽定义 用C语言编写的音频定义块。
#define ACTIVE_TDM_SLOTS 1|2|3|4|5|6|7|8
数字是这个结构中使用的 uint32_t 值,当存在时激活微型上的 TDM 音频插槽。
typedef struct{
uint32_t FirstBitOffset;
uint32_t SlotSize;
uint32_t SlotNumber;
uint32_t SlotActive;
}SAI_SlotInitTypeDef;
我正在尝试根据需要激活哪些通道来动态更改 ACTIVE_TDM_SLOTS 的构成。 256 种可能的活动通道组合。 我可以初始化和取消初始化硬件插槽来更改活动插槽的配置。
我假设#define #ifdef/#endef 都是预处理器,所以我需要以某种方式使用变量?
我可以从所需的活动通道为 ACTIVE_TDM_SLOTS 创建一个字符串,但如何将其加载到变量中?我可以使用一组 char *var 并将它们连接到变量中吗?
我不完全确定管道是如何与第一个定义一起工作的!也许只是无法将其加载到变量中?
我的另一个解决方案是在 DMA 流入时过滤活动插槽数据,但激活或停用所需插槽似乎更明智?
如果有用的话,很高兴上传更多代码。
【问题讨论】:
-
这是在哪里使用的?看起来像按位或,结果将是
15?不知道为什么这会有意义... -
不应该是
#define ACTIVE_TDM_SLOTS ( (1u<<0) | (1u<<1) | (1u<<2)...吗?否则我不知道你想在这里做什么。
标签: c variables pipe definition