LPC2148 USBMem 示例:更改 readme.txt 文件的内容
LPC2148 USBMem example : changing the contents of readme.txt file
我正在研究 MCB214x 板的 USBMem 示例。
使用十六进制编辑器,我找到了 RAM 上数据区的偏移量 (0x800),并编写了以下代码来更改 readme.txt 文件中的数据。
我创建了一个计数器变量,当我按下开关 sw1 时它会递增。我想在每次按下开关时将它的值存储到文件中。
class 个变量
U8 * offset = &Memory[0x800];
int counter=0;
现在在 main 函数里面我写了下面的代码
PINSEL0 = PINSEL0|(0<<15);
IO0DIR = (0<<15);
while (1){
if(!SW1){
counter = counter+1;
LED_On(1<<16);
*offset = counter; //line 1
offset +=4; // line 2
} else {LED_Off(1<<16);}
};
问题是当我 运行 电路板上的代码时,在我按下开关并且 USB 设备变得可访问后,led 仍然亮着!
然而,当我注释掉行 "line 1" 和 "line 2" 和 运行 时,led 的代码完全可以打开和关闭!
谁能给我解释一下这是怎么回事?
你的问题是"line 2"。仅添加 4 将使 offset
运行 RAM 的末端 非常 快。超出末尾访问可能会触发错误。
请记住,即使按下按钮的时间很短,也需要几毫秒的时间,而且循环没有延迟,只有几条指令长。
我正在研究 MCB214x 板的 USBMem 示例。 使用十六进制编辑器,我找到了 RAM 上数据区的偏移量 (0x800),并编写了以下代码来更改 readme.txt 文件中的数据。
我创建了一个计数器变量,当我按下开关 sw1 时它会递增。我想在每次按下开关时将它的值存储到文件中。
class 个变量
U8 * offset = &Memory[0x800];
int counter=0;
现在在 main 函数里面我写了下面的代码
PINSEL0 = PINSEL0|(0<<15);
IO0DIR = (0<<15);
while (1){
if(!SW1){
counter = counter+1;
LED_On(1<<16);
*offset = counter; //line 1
offset +=4; // line 2
} else {LED_Off(1<<16);}
};
问题是当我 运行 电路板上的代码时,在我按下开关并且 USB 设备变得可访问后,led 仍然亮着! 然而,当我注释掉行 "line 1" 和 "line 2" 和 运行 时,led 的代码完全可以打开和关闭!
谁能给我解释一下这是怎么回事?
你的问题是"line 2"。仅添加 4 将使 offset
运行 RAM 的末端 非常 快。超出末尾访问可能会触发错误。
请记住,即使按下按钮的时间很短,也需要几毫秒的时间,而且循环没有延迟,只有几条指令长。