huanghuac 发表于 2022-9-2 21:09

外接I2S芯片WM8978

由于STM32F411要使用SDIO,导致带MCLK的I2S2和I2S3都无法使用,所以WM8978的MCLK无法连接,现在能否使用12M有源晶振,配WM8978内部的PLL使用呢?

huangchui 发表于 2022-9-2 21:10

有源晶振再好不过了。

huangchui 发表于 2022-9-2 21:12

有源晶振再好不过了。

huangchui 发表于 2022-9-2 21:14

端口的时钟还冲突?

jiaxw 发表于 2022-9-2 21:19

可否分时复用呢

zhaoxqi 发表于 2022-9-2 21:20

需要同时进行使用吗

jiajs 发表于 2022-9-2 21:22


可以的 用有源晶振可以

juventus9554 发表于 2022-9-2 21:24

小弟最近好郁闷,在51里面不存在这个问题,在STM32(IAR)编译时出错了
constu8a;
u8 *addr=a;                   //此处提示错误
printf("address=%x",addr);

51里面直接&a 地址就出来了,M3里面怎么得到a的地址都不行。各位有啥好办法没

renyaq 发表于 2022-9-2 21:25

一样的。
unsigned int aa = (unsigned int)&a;

juventus9554 发表于 2022-9-2 21:28

楼主是取址符没加啊,51直接 &a,32也一样是直接 &a 就可以了
const u8 a;
u8 *addr = &a;
printf("address=%x",addr);

pengf 发表于 2022-9-2 21:29

不行,你们说的都不对,在51 keil里面可以 在STM32 IAR中 CONST变量与51的code要求不同
会提示
Error: a value of type "u16 const *" cannot be used to initialize an entity of type "u16 *" C:\Users\Administrator\Desktop\新板实验SOFT-0817\User\main.c 16

huanghuac 发表于 2022-9-2 21:32

u8 *addr=a; 改成这样试试 u8 const *addr= a;或者 const u8 *addr = a;

huangchui 发表于 2022-9-2 21:35

这个还真不知道,是不是固定的flash段

juventus9554 发表于 2022-9-2 21:39


楼主是取址符没加啊,51直接 &a,32也一样是直接 &a 就可以了
const u8 a;
u8 *addr = (u8 *)&a;
printf("address=%x",addr);

不是不行,是类型检查更严格了,不同类型的都必须加强制类型转换

renyaq 发表于 2022-9-2 21:40

你的回答完全正确。类型检查很严格,不能把地址复制给变量,必须强制转换成同类型的

kangzj 发表于 2022-9-2 21:44

你要把类型检查搞成最严格那就没法转换。

gongche 发表于 2022-9-2 21:46

因为任何形式的转换都不允许。

zhenykun 发表于 2022-9-2 21:48

unsigned int aa = (unsigned int)&a;

llljh 发表于 2022-9-2 21:50

多多尝试啊,或者看帮助文件。

jiaxw 发表于 2022-9-2 21:52

还有那个const类型应该在Flash里面,不在内存。
页: [1] 2
查看完整版本: 外接I2S芯片WM8978