打印
[应用相关]

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

[复制链接]
308|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenjunt|  楼主 | 2020-8-14 20:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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| | 2020-8-14 20:52 | 只看该作者
不太懂指针。

使用特权

评论回复
板凳
chuxh| | 2020-8-14 21:00 | 只看该作者
Uint16 检查这个类型的定义。。

使用特权

评论回复
地板
xxrs| | 2020-8-14 21:05 | 只看该作者
不如直接unsigned int 试试看。

使用特权

评论回复
5
chenjunt|  楼主 | 2020-8-14 21:08 | 只看该作者
是类型定义不对,Uint16 应该定义为 short,而我定义为int了

使用特权

评论回复
6
xxmmi| | 2020-8-14 21:11 | 只看该作者
FSMC接口已经完全OK

使用特权

评论回复
7
chenjunt|  楼主 | 2020-8-14 21:15 | 只看该作者
下一步测试FSMC操作COG型的LCD。

使用特权

评论回复
8
chenjunt|  楼主 | 2020-8-14 21:22 | 只看该作者
FSMC操作COG型的LCD也OK!过去用STM32F103VE做产品,都用普通IO口模拟LCD接口,效率很低;

使用特权

评论回复
9
chenjunt|  楼主 | 2020-8-14 21:25 | 只看该作者
现在STM32F407ZG,168M FSMC时钟,FSMC分别挂SRAM和LCD,AddressSetupTime与DataSetupTime分别只要5、6个AHB3时钟就行了!

使用特权

评论回复
10
happy_10| | 2020-8-14 21:31 | 只看该作者
数据类型的问题

使用特权

评论回复
11
chenjunt|  楼主 | 2020-8-14 21:35 | 只看该作者

唉,还是没有什么结果,算了,多谢大家啦

使用特权

评论回复
12
香水城| | 2020-8-15 14:38 | 只看该作者
你存储外设数据宽度为16位的话,就得按16位方式访问才合理。

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

718

主题

7868

帖子

5

粉丝