#define _I volatitile const /*!< Defines 'read only' permissions 定义只读权限 */
所以_I修饰的变量只用来读取,且该变量不可以被编译器优化
#define _O volatitle /*!< Defines 'write only' permissions 定义只写权限 */
#define _IO volatitle /*!< Defines 'read / write' permissions 定义读/写权限 */
所以_O和_IO修饰的变量不能被编译器优化
链接:(25条消息) 嵌入式C语言强化笔记--__I、 __O 、__IO_PeterrrWang的博客-CSDN博客
该程序的作用是检查FLASH_ADDR_BOOTLOADFLAG地址中的数值是否等于FLASH_SYMBOL_BACKBOOTLOAD,如果等于就向FLASH_ADDR_BOOTLOADFLAG中写0xFFFFFFFF。
地址之前加_IO表示该地址中存储的数值是可变的,需要从内存或者寄存器中重新读取该变量