TI中文支持网
TI专业的中文技术问题咨询交流网站

msp432调用SysCtl_disableSRAMBank后SysCtl_getSRAMSize函数返回0

我的代码如下,只要注释掉所有SysCtl_disableSRAMBank函数,sramSize变成65535,一切正常。

但只要调用了SysCtl_disableSRAMBank(SYSCTL_SRAM_BANK1); sramSize变成0,我觉得应该返回8KB也就是2000才对,因为这时候只有一个8KB的存储区0被使能了。

#include "msp432.h"
#include "driverlib.h"


/**
 * main.c
 */
void main(void)
{volatile uint32_t sramSize;
	WDT_A_holdTimer();		// stop watchdog timer
	//SysCtl_disableSRAMBank(SYSCTL_SRAM_BANK3);
	SysCtl_disableSRAMBank(SYSCTL_SRAM_BANK1);

	sramSize = SysCtl_getSRAMSize();

	__no_operation();
}

请问我哪里搞错了?

Susan Yang:

关于该SysCtl_disableSRAMBank 您可以参考

It is important to note that when a higher bank is disabled, all of the SRAM banks above that bank are also disabled. For example, if the user disables SYSCTL_SRAM_BANK5, the banks SYSCTL_SRAM_BANK6 through SYSCTL_SRAM_BANK7 will be disabled.

通过测试您的·代码发现

执行

SysCtl_disableSRAMBank(SYSCTL_SRAM_BANK1);之后,bank1到7都变成了disable

user5964221:

回复 Susan Yang:

请问您测试sramSize值在调用SysCtl_getRAMSize()后是多少了吗?我这里它变成0,我主要不理解它为啥是0。

Susan Yang:

回复 user5964221:

uint_least32_t SysCtl_getSRAMSize ( void)
Gets the size of the SRAM.

Returns
The total number of bytes of SRAM.

放在SysCtl_disableSRAMBank函数之前的话,sramSize是65535。在SysCtl_disableSRAMBank之后就会变为0,因为这时bank1到7都变成了disable. 若是使用SysCtl_disableSRAMBank(SYSCTL_SRAM_BANK2)的话,bank2-7会变为disable,而bank1是enable。

我会在确认后给您回复,谢谢

赞(0)
未经允许不得转载:TI中文支持网 » msp432调用SysCtl_disableSRAMBank后SysCtl_getSRAMSize函数返回0
分享到: 更多 (0)