我的代码如下,只要注释掉所有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。
我会在确认后给您回复,谢谢