幻影武者 发表于 2016-7-26 14:22:30

STM32F745IG SRAM 读写问题

你好,很荣幸用了STM32F745IG,感觉这是一款比较强大,比较好用的一款。
        不过在开发过程中碰到了一点小小的疑惑,在强大的STM面前我还只是菜鸟,希望能指引我走向强者之路:
        问题:参考开发包移植了SRAM ,可是 如果使用如下代码,用示波器量不出读信号.回读回来的也是写入的数据,不过是没有读信 号的回读.
                  atempaddr = (uint8_t *)(DPRAM_LEDBASE + i);
                *(__IO uint8_t*) atempaddr = 0;
                sl_val =*(__IO uint8_t*) atempaddr ;
                但是改成了         
                HAL_SRAM_Write_8b(&hsram,(uint32_t *) atempaddr,&val, 1);
                HAL_SRAM_Read_8b(&hsram, (uint32_t *)atempaddr, &read_val, 1);                结果就成功了,我真是感慨啊,贵公司的函数果然是精品了,应该是我的理解能力有限,希望能给我解惑!
           
        致敬!

乞丐工程师 发表于 2016-7-29 09:28:23

:dizzy::dizzy::dizzy::dizzy:

月痕-338170 发表于 2016-7-29 13:35:35

uint8_t --> uint32_t,试试

moyanming2013 发表于 2016-7-29 21:06:45

本帖最后由 moyanming2013 于 2016-7-29 21:07 编辑

官方代码中使用的是uint32_t*,你用的是uint8_t*,如果考虑数据真实到底是多大的话,可能你获取的是高字节的0x00或其它随机值,而实际上atempaddr指向的是一个32位的uint32_t。
实际就是注意大小端和数据大小。
HAL_SRAM_Write_8b(&hsram,(uint32_t *) atempaddr,&val, 1);

SZHYK 发表于 2016-8-1 19:42:55

签到签到。

romberg 发表于 2016-8-11 11:38:15

uint8_t 改 uint32_t试试看

任风吹吹 发表于 2016-8-11 12:12:05

romberg 发表于 2016-8-11 11:38
uint8_t 改 uint32_t试试看

估计这个是正解,uint8_t 这种方式不确定MCU是否真正有操作。
页: [1]
查看完整版本: STM32F745IG SRAM 读写问题