专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
用IAR调试软件,写入寄存器的数据无法在IAR软件的界面上查询到
2019-07-14 15:10
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
7718
17
993
用IAR调试软件,写入寄存器的数据,无法在IAR软件的界面上查询到,请问,是我的设置问题,还是哪里出了问题?
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
schumi_LYQ
1楼-- · 2019-07-14 20:36
我已经写数据了,向stm32L053 内部flash ,并且用地址指针直接读取flash数据,再用串口输出flash地址的数据,flash地址是0x0800 0000到0x0800ffff , 64K没有超出地址。
实验硬件现象无错误,
但是为什么IAR软件调出flash内容列表,却不出现我写进去的数据呢?
加载中...
schumi_LYQ
2楼-- · 2019-07-14 21:31
我查询其他内存数据时,是这个情况
加载中...
schumi_LYQ
3楼-- · 2019-07-14 22:08
本帖最后由 ▲-猪-▼Ψ 于 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)
{
}
}
加载中...
schumi_LYQ
4楼-- · 2019-07-15 00:23
求IAR软件具体设置步骤,我的两台电脑都是无法用IAR软件显示内存里面具体的数据值,可能不是我的软件安装错误, 但是软件既然设计了这个功能,怎么可能荒废掉呢???求解决详细方法!
备注:我的IAR是7.2版本的,,
加载中...
schumi_LYQ
5楼-- · 2019-07-15 00:50
精彩回答 2 元偷偷看……
加载中...
jerry181855
6楼-- · 2019-07-15 04:03
帮顶,估计没写入
加载中...
1
2
3
下一页
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
STM32开发板免费用活动
7 个回答
stm32 处理 DHT11占用太多时间,大家程序是怎么设计的
8 个回答
分享一个STM32单片机做的离线编程器代码
9 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
实验硬件现象无错误,
但是为什么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版本的,,
一周热门 更多>