chenjunt 发表于 2022-9-2 22:06

怎样才能正确的16位读写?

FSMC接口配置为16位宽度
8位写如下:
Uint08 volatile *Test1,*Test2;

Test1=(Uint08 *)0x68000000;
*Test1++=0x55;
每次写完,Test1地址加1,结果完全正确。

16位写如下:
Uint16 volatile *Test1,*Test2;

Test1=(Uint16 *)0x68000000;
*Test1++=0x5555;
每次写,在第1第2个字节都写入0x55,第3第4个字节写0x00,写完后Test1地址加4,而不是加2。


这是怎么回事?怎样才能正确的16位读写?

chuxh 发表于 2022-9-2 22:08

不太懂指针。

chuxh 发表于 2022-9-2 22:10

Uint16 检查这个类型的定义。。

dengdc 发表于 2022-9-2 22:12

不如直接unsigned int 试试看。

chenjunt 发表于 2022-9-2 22:14

是类型定义不对,Uint16 应该定义为 short,而我定义为int了

spark周 发表于 2022-9-2 22:16

FSMC接口已经完全OK

chenjunt 发表于 2022-9-2 22:19

下一步测试FSMC操作COG型的LCD。

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

FSMC操作COG型的LCD也OK!过去用STM32F103VE做产品,都用普通IO口模拟LCD接口,效率很低;

chenjunt 发表于 2022-9-2 22:22

现在STM32F407ZG,168M FSMC时钟,FSMC分别挂SRAM和LCD,AddressSetupTime与DataSetupTime分别只要5、6个AHB3时钟就行了!

lizye 发表于 2022-9-2 22:24

数据类型的问题

zhaoxqi 发表于 2022-9-2 22:26

你存储外设数据宽度为16位的话,就得按16位方式访问才合理。

jlyuan 发表于 2022-9-2 22:29

你再检查下硬件连接与配置。

chenjunt 发表于 2022-9-2 22:31

唉,还是没有什么结果,算了,多谢大家啦
页: [1]
查看完整版本: 怎样才能正确的16位读写?