片子是STM8S207RBT6,用的是IAR的开发环境。在通过对FLASH_PUKR寄存器写入MASS密钥后可以成功解除对FLASH的写保护,但是当对Flash操作完以后,想重新对FLASH进行写保护,手册上说“应用程序可以在任何时刻通过清FLASH_IAPSR寄存器中的PUL位来重新禁止对FLASH程序区的写操作”。于是我在程序里这样做
FLASH_IAPSR &=~ MASK_FLASH_IAPSR_PUL;但是编译器报错,提示expression must be a modifiable lvalue 我换成直接对寄存器的PUL位来操作也不行。
后来我查了一下iostm8s207rb.h头文件里面对FALSH_IAPSR这个寄存器器的定义,发现是这样的__IO_REG8_BIT(FLASH_IAPSR, 0x505F, __READ, __BITS_FLASH_IAPSR);是不是表示这个寄存器是只读的,但是手册上明明说是可以对这个寄存器进行写操作的啊,至少可以对PUL位进行写操作。 |