你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
每日签到
STM32团队2
论坛吐槽优化专区
升级测试
IAR 软件问题----- 在线调试,软件端不显示flash内写入的数.....
[复制链接]
▲-猪-▼Ψ
提问时间:2016-11-26 23:58 /
问答
是否解决:
本帖最后由 ▲-猪-▼Ψ 于 2016-11-27 18:04 编辑
用IAR调试软件,写入寄存器的数据,无法在IAR软件的界面上查询到,请问,是我的设置问题,还是哪里出了问题?
赞
0
收藏
2
评论
18
分享
发布时间:2016-11-26 23:58
举报
请先
登录
后回复
18个回答
wenyangzeng
回答时间:2017-1-26 07:55:30
a0a.1 32b0c
本帖最后由 wenyangzeng 于 2017-1-27 07:38 编辑
IAR查看寄存器应该是这样
评分
参与人数
1
ST金币
+2
收起
理由
zero99
+ 2
查看全部评分
赞
0
评论
回复
支持
0
反对
1
▲-猪-▼Ψ
回答时间:2016-11-27 00:03:31
a0a.1 32b0c
我已经写数据了,向stm32L053 内部flash ,并且用地址指针直接读取flash数据,再用串口输出flash地址的数据,flash地址是0x0800 0000到0x0800ffff , 64K没有超出地址。
实验硬件现象无错误,
但是为什么IAR软件调出flash内容列表,却不出现我写进去的数据呢?
赞
0
评论
回复
支持
反对
▲-猪-▼Ψ
回答时间:2016-11-27 00:07:36
a0a.1 32b0c
我查询其他内存数据时,是这个情况
赞
0
评论
回复
支持
反对
▲-猪-▼Ψ
回答时间:2016-11-27 00:11:15
a0a.1 32b0c
本帖最后由 ▲-猪-▼Ψ 于 2016-11-27 00:16 编辑
我自己的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)
{
}
}
赞
0
评论
回复
支持
反对
▲-猪-▼Ψ
回答时间:2016-11-27 00:20:18
a0a.1 32b0c
求IAR软件具体设置步骤,我的两台电脑都是无法用IAR软件显示内存里面具体的数据值,可能不是我的软件安装错误, 但是软件既然设计了这个功能,怎么可能荒废掉呢???求解决详细方法!
备注:我的IAR是7.2版本的,,
赞
0
评论
回复
支持
反对
▲-猪-▼Ψ
回答时间:2016-11-28 09:00:35
a8a.1 32b0c
没有人喜欢这么查询吗?
赞
0
评论
回复
支持
反对
peter001
回答时间:2016-11-28 11:43:14
a0a.1 32b0c
帮顶,估计没写入
赞
0
评论
回复
支持
反对
▲-猪-▼Ψ
回答时间:2016-11-28 12:21:40
a8a.1 32b0c
peter001 发表于 2016-11-28 11:43
帮顶,估计没写入
我串口取的地址指针,就是flash的地址啊,是我的串口指针书写方式不对吗?
赞
0
评论
回复
支持
反对
队长shiwo
回答时间:2017-1-26 09:04:48
a0a.1 32b0c
是不是被覆盖掉了的啊
赞
0
评论
回复
支持
反对
1
2
/ 2 页
下一页
所属标签
相似问题
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
IAR查看寄存器应该是这样
评分
查看全部评分
实验硬件现象无错误,
但是为什么IAR软件调出flash内容列表,却不出现我写进去的数据呢?
我自己的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)
{
}
}
备注:我的IAR是7.2版本的,,
我串口取的地址指针,就是flash的地址啊,是我的串口指针书写方式不对吗?