定义了一个结构体常量,并初始化在 flash 中,
struct
{
uint8_t dat[64]
}ct;
const struct ct test_data = {0xff.0xff.0xff........0xff}
hal_program_flash 提示出错, progerr 手册里这个错误原因是 写入地址 不是 值为 全1 ,即 0xffffffffffffffff,
因为初始化了这个地方就是全 1 ,如果写入的地址不是这个常量位置就是可以写入的。
因为用st-link 写入时,是全片擦除的,这样就可以写入,问题在于哪怕是你写入 0xffff这种全 1 的值,再次写入也会出错,咋会是这样呢? |