野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12070|回复: 5

IAR 软件问题----- 在线调试,软件端不显示flash内写入的数据

[复制链接]
发表于 2016-11-27 18:12:56 | 显示全部楼层 |阅读模式
用IAR调试软件,写入寄存器的数据,无法在IAR软件的界面上查询到,请问,是我的设置问题,还是哪里出了问题?



我已经写数据了,向stm32L053   内部flash  ,并且用地址指针直接读取flash数据,再用串口输出flash地址的数据,flash地址是0x0800 0000到0x0800ffff , 64K没有超出地址。

实验硬件现象无错误,
但是为什么IAR软件调出flash内容列表,却不出现我写进去的数据呢?


用KEIL5,就可以在电脑上看见flash里面写的内容,

回复

使用道具 举报

 楼主| 发表于 2016-11-27 18:14:19 | 显示全部楼层
我觉得自己的软件没有问题,但是保险起见,我还是粘贴上来了

flash  内容用串口输出的代码如下



/**
  ******************************************************************************
  * @file     FLASH
  * @author  
  * @version
  * @date   
  * @brief    要求程序可对MCU的内部Flash页进行擦除,
              可写入固定数量的数据,并可将写入的数据读出。
              要求读出的数据与写入的数据内容必须一致。

              擦除后,写,用串口输出flash数据

              0x080000000 - 0x0800FFFF    64K  flash
              0x080800000 - 0x080107FF    2K   EEPROM

              1PAGE            = 128 byte
              1sector(0-15)    = 32page (0-31)
              
              7s可以完成写数据和读数据,校验数据
  ******************************************************************************
  */

#include "main.h"

#define FLASH_USER_START_ADDR   0x08008000   /* flash起始地址 */
#define FLASH_USER_END_ADDR     0x0800A000   /* flash终止地址 */


uint8_t DATA_32[] = "STM32LO53C8";


int i =0;

uint32_t FirstPage = 0, NbOfPages = 0, Address = 0;
uint32_t PageError = 0;
__IO uint32_t data32 = 0 , MemoryProgramStatus = 0;

static FLASH_EraseInitTypeDef EraseInitStruct;

UART_HandleTypeDef UartHandle;
__IO ITStatus UartReady = RESET;
uint8_t aTxBuffer[] = " THIS IS TRUE  ";
uint32_t BUFFER_data;

uint8_t aRxBuffer[RXBUFFERSIZE];

static void SystemClock_Config(void);
static void Error_Handler(void);
void UART_INT(void);




int main(void)
{
    HAL_Init();
    BSP_LED_Init(LED3);
    SystemClock_Config();
    UART_INT();
    HAL_FLASH_Unlock();

    NbOfPages = (FLASH_USER_END_ADDR - FLASH_USER_START_ADDR + 1) >> 7;

    EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES;
    EraseInitStruct.PageAddress = FLASH_USER_START_ADDR;
    EraseInitStruct.NbPages = NbOfPages;

    if (HAL_FLASHEx_Erase(&EraseInitStruct, &PageError) != HAL_OK)
    {
        Error_Handler();
    }

    Address = FLASH_USER_START_ADDR;

    while (Address < FLASH_USER_END_ADDR)
    {
        if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, Address , (uint32_t)DATA_32) == HAL_OK)
        {
            Address = Address + 4;
        }
        else
        {
            Error_Handler();
        }
    }

    HAL_FLASH_Lock();
  
  
    /* 变量    MemoryProgramStatus = 0: 数据正确   
               MemoryProgramStatus != 0: 数据错误                        ******/
    Address = FLASH_USER_START_ADDR;
    MemoryProgramStatus = 0x0;
    BUFFER_data= *(__IO uint32_t*)(0x8008000);
    if(HAL_UART_Transmit_IT(&UartHandle, (uint8_t*)BUFFER_data, 11)!= HAL_OK)
    {
        Error_Handler();
    }
   
   
    while (Address < FLASH_USER_END_ADDR)
    {
        data32 = *(__IO uint32_t*)Address;

        if (data32 != (uint32_t)DATA_32)  
        {
           MemoryProgramStatus++;  
        }
        Address = Address + 4;
    }

    if (MemoryProgramStatus == 0)
    {
        BSP_LED_On(LED3);
        UART_INT();

        if(HAL_UART_Transmit_IT(&UartHandle, (uint8_t*)aTxBuffer, TXBUFFERSIZE)!= HAL_OK)
        {
            Error_Handler();
        }

    }
    else
    {
        Error_Handler();
    }
  
    while (1)
    {
    }
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-27 18:16:21 | 显示全部楼层
在flash  的地址无数据显示

这是IAR 问题界面

这是IAR 问题界面
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-27 18:17:04 | 显示全部楼层
其他的地址数据,如图

捕获2.PNG
捕获3.PNG
捕获4.PNG
捕获5.PNG
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-27 18:20:30 | 显示全部楼层
没有人喜欢用IAR吗?
回复 支持 反对

使用道具 举报

发表于 2016-11-28 09:04:28 | 显示全部楼层
你直接用串口把这些地址的内容打印出来看看
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-31 07:45 , Processed in 0.044895 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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