Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
最近在用RT-thread开发FMSC驱动TFT,碰到非常非常奇怪问题!!
发布于 2012-09-19 17:07:25 浏览:3197
订阅该版
最近在用RT-thread开发FMSC驱动TFT,碰到一个非常非常奇怪问题,老是保总线出错,而同样代码没有RT-thread,却不报错,郁闷至极,主要代码如下: ```#define Bank1_LCD_DATA 0x60020000 //disp Data ADDR #define Bank1_LCD_CMD 0x60000000 //disp Reg ADDR //#define LCD_REG *(vu16 *)(Bank1_LCD_CMD) //#define LCD_RAM *(vu16 *)(Bank1_LCD_DATA) #define LCD_REG *((volatile unsigned short *)Bank1_LCD_CMD) #define LCD_RAM *((volatile unsigned short *)Bank1_LCD_DATA)) LCD_REG=2; LCD_RAM=6;//只要一执行到这句就报错``` 调试汇编代码: ```20: LCD_REG = a; 0x08001FAA F04F42C0 MOV r2,#0x60000000 0x08001FAE 8010 STRH r0,[r2,#0x00] 121: LCD_RAM = b; 0x08001FB0 4802 LDR r0,[pc,#8] ; @0x08001FBC 就是这句就报总线出错。 0x08001FB2 8001 STRH r1,[r0,#0x00]``` 那位高手能帮我看看!!谢谢
查看更多
5
个回答
默认排序
按发布时间排序
aozima
2012-09-19
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
检查您的FSMC设置是否遗漏了些未初始化的参数。
njgwx
2012-09-19
这家伙很懒,什么也没写!
没跑系统时正常没报错,带上RT-thread就不时报错,多加一条语句就会出现,我怀疑是ALIGN(RT_ALIGN_SIZE)造成的,跟初始化没关系。 附FMSC初始化代码: ``` void LCD_CtrlLinesConfig(void) { GPIO_InitTypeDef GPIO_InitStructure; /* Enable FSMC, GPIOD, GPIOE, GPIOF, GPIOG and AFIO clocks */ RCC_APB2PeriphClockCmd(//RCC_APB2Periph_GPIOB |//SDHC RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE); /* Set PD.00(D2), PD.01(D3), PD.04(NOE), PD.05(NWE), PD.08(D13), PD.09(D14), PD.10(D15), PD.14(D0), PD.15(D1) as alternate function push pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_14 | GPIO_Pin_15; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOD, &GPIO_InitStructure); /* Set PE.07(D4), PE.08(D5), PE.09(D6), PE.10(D7), PE.11(D8), PE.12(D9), PE.13(D10), PE.14(D11), PE.15(D12) as alternate function push pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15; GPIO_Init(GPIOE, &GPIO_InitStructure); // GPIO_WriteBit(GPIOE, GPIO_Pin_6, Bit_SET); /* Set PF.00(A0 (RS)) as alternate function push pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_Init(GPIOD, &GPIO_InitStructure); /* Set PG.12(NE4 (LCD/CS)) as alternate function push pull - CE1(LCD /CS) */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; GPIO_Init(GPIOD, &GPIO_InitStructure); } /******************************************************************************* * Function Name : LCD_FSMCConfig * Description : Configures the Parallel interface (FSMC) for LCD(Parallel mode) * Input : None * Output : None * Return : None *******************************************************************************/ void LCD_FSMCConfig(void) { FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure; FSMC_NORSRAMTimingInitTypeDef p; /*-- FSMC Configuration ------------------------------------------------------*/ /*----------------------- SRAM Bank 4 ----------------------------------------*/ /* FSMC_Bank1_NORSRAM4 configuration */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE); p.FSMC_AddressSetupTime = 1; //ADDSET 地址建立时间 p.FSMC_AddressHoldTime = 0; //ADDHOLD 地址保持时间 p.FSMC_DataSetupTime = 2; //DATAST 数据建立时间 p.FSMC_BusTurnAroundDuration = 0; //BUSTURN 总线返转时间 p.FSMC_CLKDivision = 0; //CLKDIV 时钟分频 p.FSMC_DataLatency = 0; //DATLAT 数据保持时间 /* Color LCD configuration ------------------------------------ LCD configured as follow: - Data/Address MUX = Disable - Memory Type = SRAM - Data Width = 16bit - Write Operation = Enable - Extended Mode = Enable - Asynchronous Wait = Disable */ p.FSMC_AccessMode = FSMC_AccessMode_B; //ACCMOD FSMC 访问模式 FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1; //扩展nor bank的第4个bank FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable; //不使用总线复用 FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM; //扩展类型 ///* FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b; //数据宽度 FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable; FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low; // FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable; FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState; FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable; FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable; FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable; //读写统一参数 //FSMC_NORSRAMInitStructure.FSMC_AsyncWait = FSMC_AsyncWait_Disable; FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable; FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p; FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p; //*/ FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); /* BANK 4 (of NOR/SRAM Bank 1~4) is enabled */ FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE); } ```
aozima
2012-09-19
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
>我怀疑是ALIGN(RT_ALIGN_SIZE)造成的 --- 您的FSMC配置与访问中并没有出现ALIGN。即使有,也仅作用于被其修饰的变量。 看了一下您的代码没有配置 FSMC_AsynchronousWait 参数。 可以用FSMC_NORSRAMStructInit初始化结构体所有成员再配置参数,并打开 assert_param 功能。
njgwx
2012-09-20
这家伙很懒,什么也没写!
aozima 你说得太对了,就是FSMC_AsynchronousWait没有设置造成的,按你说的改了就OK,再次万分感谢!!
撰写答案
登录
注册新账号
关注者
0
被浏览
3.2k
关于作者
njgwx
这家伙很懒,什么也没写!
提问
7
回答
11
被采纳
0
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
rt-thread 小内存算法源码分析
2
env中添加lvgl软件包后,keil编译包--c99错误
3
【NXP-MCXA153】 定时器驱动移植
4
GD32F450 看门狗驱动适配
5
【NXP-MCXA153】看门狗驱动移植
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
7
个答案
2
次被采纳
a1012112796
18
个答案
1
次被采纳
红枫
5
个答案
1
次被采纳
Ryan_CW
5
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
11
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部