[STM32F4]

STM32F407 FSMC接口8位或者16位读写

[复制链接]
5486|8
手机看帖
扫描二维码
随时随地手机跟帖
yzzly|  楼主 | 2018-11-1 15:27 | 显示全部楼层 |阅读模式
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位读写?
幸福小强| | 2018-11-1 17:26 | 显示全部楼层
不太懂指针。

使用特权

评论回复
戈卫东| | 2018-11-1 18:36 | 显示全部楼层
Uint16 检查这个类型的定义。。

使用特权

评论回复
幸福小强| | 2018-11-1 20:14 | 显示全部楼层
不如直接unsigned int 试试看。

使用特权

评论回复
yzzly|  楼主 | 2018-11-2 08:24 | 显示全部楼层
本帖最后由 yzzly 于 2018-11-2 08:31 编辑

是类型定义不对,Uint16 应该定义为 short,而我定义为int了。结题!
到此,FSMC接口已经完全OK。谢谢各位。下一步测试FSMC操作COG型的LCD。

使用特权

评论回复
yzzly|  楼主 | 2018-11-2 17:12 | 显示全部楼层
本帖最后由 yzzly 于 2018-11-2 17:32 编辑

FSMC操作COG型的LCD也OK!过去用STM32F103VE做产品,都用普通IO口模拟LCD接口,效率很低;
现在STM32F407ZG,168M FSMC时钟,FSMC分别挂SRAM和LCD,AddressSetupTime与DataSetupTime分别只要5、6个AHB3时钟就行了!

使用特权

评论回复
keaibukelian| | 2018-11-6 13:09 | 显示全部楼层
数据类型的问题

使用特权

评论回复
zbl1118| | 2021-9-16 21:35 | 显示全部楼层
可以提供下例程吗,楼主

使用特权

评论回复
yangxiaor520| | 2021-9-17 07:32 | 显示全部楼层
FSMC拿来驱动LCD挺不粗

使用特权

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

本版积分规则

426

主题

1169

帖子

3

粉丝