Part Number:MSPM0G3507
我修改SCT文件开辟了一个64字节的NOINIT区域RAM,用于复位后不需初始化用。如图所示:
测试发现使用内核中自带的NVIC_SystemReset()函数强制MCU复位,NOINIT区域的数据的确不改变;但使用复位管脚复位以及使用MSPM0库函数(DL_SYSCTL_RST_CPU、DL_SYSCTL_RESET_BOOT、DL_SYSCTL-RESET_POR)有时候发现会改变NOINIT区域内容。想确认哪几种复位不改变NOINIT内容?
Yale Li:
这些非初始区是被分配在了RAM,RAM的特性就是掉电易失。所以掉电之后再上电,这块区域的值的结果是不可预料的。
未被初始化仅仅是指编译完成后、上电之前没有给定值。这部分的值是在程序运行期间被赋值的。
执行内核自带的NVIC_SystemReset()函数,NOINIT区域的数据没有被改变,是因为这个函数执行的复位仅仅是软件层面的。
建议看一下TRM的2.4.1.1 Reset Levels:
,
游泳的雨:
这里面没有写明是否会改变NOINIT区,我就想知道单片机一直供电正常,通过程序实现的各种复位方式,哪些会改变NOINIT区