// MSP430-F5638-IPZ 上运行的工作应用程序的通用框架代码
// CCS v.10.4.0.00006
//整个程序大约有23,000行代码和22个文件
// ISR = RTC_B、在 P3.0至 P3.6上切换-所有 ISR 正常工作
// 2个问题/问题
// 当前定义的1个数组对于 MCU 内存太大
// 如何正确调整和存储大型全局数据数组?
// 错误编号10099-D
// 程序不能放入可用内存中,或者该段包含一个需要 trampoline 的调用站点,该调用站点不能为该段生成 trampoline。 ".bss"大小为0xd460时、运行定位失败。
// 可用内存范围:lnk_msp430f5638.cmd /DC2-430-all-01第139行 C/C++问题
//#2如果我在无限时间内放置一个断点、我可以查看调试器中的数组并查看数据是否正确加载
// 如果我删除断点并全速运行,我在数组中看不到任何内容,也没有对它们的访问权限
// CCS 调试器仅显示??? 对于数据、显示了打开单个单元格
// 无法读取0x02C70:执行状态阻止访问
// 无法读取0x02C72:执行状态阻止访问
//调整数据日志数组的大小
//如果四个类似的数组(我需要的)的值为2700,则会出现上面列出的内存错误
//如有必要,可以在更少的时间步长记录数据,但更喜欢更高的保真度
//#define DATA_LOG 2700 //内存过大错误
#define DATA_LOG 180 //内存正常
//单个全局数组,还需要相同大小的三个以上的数组,它们都是数据与时间的关系
//需要从其他文件访问
unsigned int data_profile[data_log][2];
void main (void)
{
//设置 TI MSP430-F5638-IPZ
// RTC_B ISR 生成一个2Hz 中断
//开关在按下时生成中断
LOOP_COUNT = 0;
//无限循环
while (1)
{
//从虚拟数据与当前时间配置文件生成数据
DATA_PROFILE[LOOP_COUNT][0]= DATA_TIME;
DATA_PROFILE[LOOP_COUNT][1]= DATA_VALUE;
//更新循环计数器
LOOP_COUNT++;
//进入低功耗模式,设置 LPM3 + GIE 部分
// 2秒 RTC_B ISR 唤醒 CPU、恢复 AM (激活模式)并在 main 中无限次恢复
_bis_SR_register (LPM3_bits + GIE);
}
}