OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4907|回复: 7

LTDC_RGB_LCDD编辑求助

[复制链接]

7

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-2-28
在线时间
11 小时
发表于 2017-5-26 17:27:19 | 显示全部楼层 |阅读模式
5金钱
原子大哥,我用STM32CubeMX生成MDK5的LTDC_RGB_LCD,然后按照LTDC LCD RGB TEST里面的代码进行部分移植(除初始化除外,LCD文件则全部copy,编辑出现:
    ..\Src\lcd.c(25): error:  #20: identifier "SRAM_HandleTypeDef" is undefined   SRAM_HandleTypeDef SRAM_Handler;    //SRAM?浔?(???诳???LCD)
    ..\Src\lcd.c(463): error:  #20: identifier "SRAM_HandleTypeDef" is undefined  void HAL_SRAM_MspInit(SRAM_HandleTypeDef *SRAM_Handler)   //from hsram changed to SRAM_Handler
    ..\Src\lcd.c(535): warning:  #223-D: function "HAL_SRAM_Init" declared implicitly  HAL_SRAM_Init(&SRAM_Handler,&FSMC_ReadWriteTim,&FSMC_WriteTim);  
    . .\Src\lcd.c: 1 warning, 2 errors
   后在lcd.h的头文件添加#include "stm32f4xx_hal_sram.h" 编辑后出现如下问题:
LTDC LCD RGB test\LTDC LCD RGB test.axf: Error: L6982E: AT section main.o(.ARM.__AT_0xC0000000) with base 0xc0000000 limit 0xc007a120 overlaps address range with AT section ltdc.o(.ARM.__AT_0xC0000000) with base 0xc0000000 limit 0xc01f4000.
Not enough information to list image symbols.
情况知道是由于SDRAM的起始地址0xc000 0000与0xc007a120地址冲突,但为什么会出现这个问题?怎样解决?
为什么我按STM32CubeMX生成的代码会找不到sram.h的文件,非得自行添加呢(你的未见包含这个文件,只是包含了stm32f4xx_hal.h,但这个文件查了不包含sram的句柄文件)?

最佳答案

查看完整内容[请看2#楼]

这个问题我已经解决了,原来是我将SDRAM的测试那个25000的那个数组的Main函数给弄了过来,u16 testsram[250000] __attribute__((at(0XC0000000)));//测试用数组,才出现了这个错误。我已经删除了那个main.c对SDRAM内存的定义,可新的问题又来了,可HAL_SRAM_Init()死的就是不初始化?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-2-28
在线时间
11 小时
 楼主| 发表于 2017-5-26 17:27:20 | 显示全部楼层
这个问题我已经解决了,原来是我将SDRAM的测试那个25000的那个数组的Main函数给弄了过来,u16 testsram[250000] __attribute__((at(0XC0000000)));//测试用数组,才出现了这个错误。我已经删除了那个main.c对SDRAM内存的定义,可新的问题又来了,可HAL_SRAM_Init()死的就是不初始化?
回复

使用道具 举报

7

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-2-28
在线时间
11 小时
 楼主| 发表于 2017-5-29 14:24:09 | 显示全部楼层
*** Using Compiler 'V5.06 update 3 (build 300)', folder: 'D:\Program Files (x86)\Keil5\ARM\ARMCC\Bin'
Rebuild target 'LTDC LCD RGB test'
assembling startup_stm32f429xx.s...
compiling stm32f4xx_hal_flash_ex.c...
compiling stm32f4xx_hal_dsi.c...
compiling stm32f4xx_hal_sdram.c...
compiling stm32f4xx_hal_pwr.c...
compiling stm32f4xx_hal_flash.c...
compiling stm32f4xx_hal_dma_ex.c...
compiling stm32f4xx_hal_dma2d.c...
compiling stm32f4xx_hal_tim_ex.c...
compiling stm32f4xx_hal_ltdc_ex.c...
compiling stm32f4xx_hal.c...
compiling stm32f4xx_hal_uart.c...
compiling stm32f4xx_ll_fmc.c...
compiling stm32f4xx_hal_dma.c...
compiling stm32f4xx_hal_flash_ramfunc.c...
compiling stm32f4xx_hal_cortex.c...
compiling stm32f4xx_hal_pwr_ex.c...
compiling stm32f4xx_hal_tim.c...
compiling stm32f4xx_hal_gpio.c...
compiling stm32f4xx_hal_ltdc.c...
compiling stm32f4xx_hal_rcc_ex.c...
compiling stm32f4xx_hal_rcc.c...
compiling stm32f4xx_hal_msp.c...
compiling gpio.c...
compiling stm32f4xx_hal_sram.c...
compiling dma2d.c...
compiling fmc.c...
compiling ltdc.c...
compiling main.c...
compiling stm32f4xx_it.c...
compiling usart.c...
compiling system_stm32f4xx.c...
compiling lcd.c...
linking...
LTDC LCD RGB test\LTDC LCD RGB test.axf: Error: L6218E: Undefined symbol HAL_SRAM_Init (referred from lcd.o).
Not enough information to list image symbols.
Finished: 1 information, 0 warning and 1 error messages.
"LTDC LCD RGB test\LTDC LCD RGB test.axf" - 1 Error(s), 0 Warning(s).
Target not created.
Build Time Elapsed:  00:01:00

###############################################
#ifndef __LCD_H
#define __LCD_H               
//#include "sys.h"         
#include "stdlib.h"
#include "stm32f4xx_hal.h"
#include "stm32f4xx_hal_sram.h"
################################################
///////////////////////////////////////////////////////////////////////
#include "lcd.h"
#include "stdlib.h"
#include "font.h"
#include "usart.h"         
//#include "delay.h"         
#include "ltdc.h"
////////////////////////////////////////////////////////////
SRAM_HandleTypeDef hsram1;    //SRAM句柄(用于控制LCD)

//初始化lcd
//该初始化函数可以初始化各种型号的LCD(详见本.c文件最前面的描述)
void LCD_Init(void)
{           
    GPIO_InitTypeDef GPIO_Initure;
        FMC_NORSRAM_TimingTypeDef Timing;
    FMC_NORSRAM_TimingTypeDef ExtTiming;
   
    lcddev.id=LTDC_PanelID_Read();        //检查是否有RGB屏接入
        if(lcddev.id!=0)
        {
                //HAL_LTDC_Init();                            //ID非零,说明有RGB屏接入.
                if (HAL_LTDC_Init(&hltdc) != HAL_OK)         //设置 RGBLCD 的相关参数,并使能 LTDC
                          {
                                Error_Handler();
                          }
        }
    else
    {   
        __HAL_RCC_GPIOB_CLK_ENABLE();                        //开启GPIOB时钟
        GPIO_Initure.Pin=GPIO_PIN_5;            //PB5,背光控制
        GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;  //推挽输出
        GPIO_Initure.Pull=GPIO_PULLUP;          //上拉
        GPIO_Initure.Speed=GPIO_SPEED_HIGH;     //高速
        HAL_GPIO_Init(GPIOB,&GPIO_Initure);
        
        hsram1.Instance=FMC_NORSRAM_DEVICE;        //BANK1
        hsram1.Extended=FMC_NORSRAM_EXTENDED_DEVICE;      
        
        hsram1.Init.NSBank=FMC_NORSRAM_BANK1;     //使用NE1
        hsram1.Init.DataAddressMux=FMC_DATA_ADDRESS_MUX_DISABLE;  //不复用数据线
        hsram1.Init.MemoryType=FMC_MEMORY_TYPE_SRAM;              //SRAM
        hsram1.Init.MemoryDataWidth=FMC_NORSRAM_MEM_BUS_WIDTH_16; //16位数据宽度
        hsram1.Init.BurstAccessMode=FMC_BURST_ACCESS_MODE_DISABLE; //是否使能突发访问,仅对同步突发存储器有效,此处未用到
        hsram1.Init.WaitSignalPolarity=FMC_WAIT_SIGNAL_POLARITY_LOW;//等待信号的极性,仅在突发模式访问下有用
        hsram1.Init.WaitSignalActive=FMC_WAIT_TIMING_BEFORE_WS;   //存储器是在等待周期之前的一个时钟周期还是等待周期期间使能NWAIT
        hsram1.Init.WriteOperation=FMC_WRITE_OPERATION_ENABLE;    //存储器写使能
        hsram1.Init.WaitSignal=FMC_WAIT_SIGNAL_DISABLE;           //等待使能位,此处未用到
        hsram1.Init.ExtendedMode=FMC_EXTENDED_MODE_ENABLE;        //读写使用不同的时序
        hsram1.Init.AsynchronousWait=FMC_ASYNCHRONOUS_WAIT_DISABLE;//是否使能同步传输模式下的等待信号,此处未用到
        hsram1.Init.WriteBurst=FMC_WRITE_BURST_DISABLE;           //禁止突发写
        hsram1.Init.ContinuousClock=FMC_CONTINUOUS_CLOCK_SYNC_ASYNC;
                hsram1.Init.PageSize = FMC_PAGE_SIZE_NONE;
        
        //FSMC读时序控制寄存器
        Timing.AddressSetupTime=15;        //地址建立时间(ADDSET)为15个HCLK 1/180M*15=5.5ns*15=82.5ns
        Timing.AddressHoldTime=0;
        Timing.DataSetupTime=0x46;           //数据保存时间(DATAST)为70个HCLK        =5.5*70=385ns
        Timing.AccessMode=FMC_ACCESS_MODE_A; //模式A
        //FSMC写时序控制寄存器
        ExtTiming.AddressSetupTime=15;            //地址建立时间(ADDSET)为15个HCLK=82.5ns
        ExtTiming.AddressHoldTime=0;
        ExtTiming.DataSetupTime=15;               //数据保存时间(DATAST)为5.5ns*15个HCLK=82.5ns
        ExtTiming.AccessMode=FMC_ACCESS_MODE_A;     //模式A
//        HAL_SRAM_Init(&hsram1,&Timing,&ExtTiming);               
                if (HAL_SRAM_Init(&hsram1, &Timing, &ExtTiming) != HAL_OK)
                  {
                        Error_Handler();
                  }
        HAL_Delay(50); // delay 50 ms  
        

请问这个程序是那里出问题了呢?(大多数是抄原子哥的,怎么会出这个问题呢)
回复

使用道具 举报

7

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-2-28
在线时间
11 小时
 楼主| 发表于 2017-5-29 14:27:06 | 显示全部楼层
不是明明初始化了吗?怎样还提示Undefined symbol HAL_SRAM_Init(referred from lcd.c)?
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2018-12-21
在线时间
5 小时
发表于 2018-12-21 17:50:09 | 显示全部楼层
cslau168 发表于 2017-5-29 14:27
不是明明初始化了吗?怎样还提示Undefined symbol HAL_SRAM_Init(referred from lcd.c)?

.h里面添加了吗
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2018-12-21
在线时间
5 小时
发表于 2018-12-21 17:51:15 | 显示全部楼层
cslau168 发表于 2017-5-29 14:27
不是明明初始化了吗?怎样还提示Undefined symbol HAL_SRAM_Init(referred from lcd.c)?

.h里面有没有定义一下
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2020-7-22
在线时间
1 小时
发表于 2020-8-16 16:26:45 | 显示全部楼层
本帖最后由 steventan 于 2020-8-16 17:02 编辑

楼主解决了吗?
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2022-8-5
在线时间
5 小时
发表于 2023-10-17 15:22:42 | 显示全部楼层
大佬如何解决的可以请教下吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 06:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表