开发环境:AVR Studio 4.19 + avr-toolchain-installer-3.4.1.1195-win32.win32.x86
2016.10.16遇到一个问题:
1、将notepad++的内容复制到avr studio,发现中文乱码;
2、反过来从avr studio复制到notepad++,也是乱码。
于是将默认字体、从Courier改为新宋体,问题解决:
一直认为局部变量都是使用寄存器来实现、也没想过寄存器是否够用。
今天Debug时发现有一类局部变量可以在watch窗口里面看到它的数值、即地址空间在RAM的局部变量。
如下图:局部变量event是RAM空间(鼠标放在变量上、会显示变量类型和地址空间),可以在watch窗口看到它的数值
而msg_index是寄存器(鼠标放上去无任何显示),在watch窗口里不可见。
遇到过好几次,在执行了赋值语句后、watch窗口中的变量值不更新,或者莫名其妙的自己更新。
后来发现,先把变量从watch窗口删除,再把变量重新拖到watch窗口,变量值就正常了。
这应该是由于代码修改之后、这些变量的地址有变化,而watch窗口里面的变量还对应着之前地址。
换句话说,watch窗口是以地址来区分变量,而不是符号/变量名/label。
因此、如果代码有更新最好对一下watch窗口中的变量的地址,是否和代码中的一致(鼠标放在变量上、就会显示变量的类型和地址)。