本帖最后由 anvy178 于 2015-4-16 23:02 编辑
看了下MSP430i2xx系列的 flash操作,擦除是按段来的 ,每一KB为一个段。但是我看TI提供的程序,并不怎么严谨。就拿
void FlashCtl_eraseSegment(uint8_t *flash_ptr); 这个擦除函数来说。函数的参数指针地址,在参数的实体里并没有进行判断范围。 函数的使用注意事项也没有说清楚,一不小心把程序区擦写了 咋办啊 ?(不知道把程序区的地址写上去,会不会擦除呢?没试过) 擦除的操作是,对一个段内的 任何一个地址进行一次虚拟的写操作 ,就会把这个段擦写掉。所以,可以定义一个宏定义根据不同类型的cpu 分一下类,然后定义不同的能擦写的段地址,让用户直接使用宏定义,这样觉得好点。
拿MSP430i2040 来说 ,从0xC000到 0xFFFF一共16K的flash,直接把0xFFFF(假设代码是从Segment 0开始的)这个地址写上去,那不把 代码都给干掉额?
|