资料准备:对应模块的参考手册(RM)
注:本文章基于STM32G030,文中所说的“本芯片”等,都代表STM32G030
一、OTP介绍
OTP:one-time programmable,只允许一次编程,也就是只能从1写0,不能从0写1。这里可能有人要问,这不是flash的特性么?需要注意的是,flash是允许擦除的,是允许从0写1的。而OTP不允许擦除,就算在ICP烧录代码时,也不会丢。而且,如果只有一位是0,整个双字(64位)都不能再写了,甚至也不能写0x0000 0000 0000 0000。这里的双字节根据不同的单片机有差距,由于我所使用的每次只能写双字节,因此,这里便是双字节。
“The OTP area cannot be read when RDP level is 1 and boot source is not the
Main Flash memory area.”当读保护级别位1时,并且BOOT源不是主程序区域时,OTP是不允许读的。
在不通的系列上,OTP的起始地址有所不同,需要自行去参考手册的flash章节查找,本芯片中OTP起始地址是0x1FFF7000
二、UID介绍
UID是芯片厂商为每个芯片出厂写入的,是一个96位的全球唯一编码。就相当于人类的身份证。HAL库中提供了获取UID的接口
/**
* @