1、直接给内存赋值,假设这个内存地址是0x30000000,赋值为0x25:
*(volatile unsigned long *)0x30000000 = 0x25;
扩展延伸:
在定义时,如何将全局变量首地址指向指定的位置?如下:
unsigned int buf[250000] attribute((at(0X30000000)));
如上表示变量buf的首地址在0x30000000的位置;
2、程序直接跳转到指定的位置,如下实例:
* (void (*)())0x1000000
表示程序强制跳转到0x1000000的位置运行。
这个强制跳转,没有MMU的CPU才可以,一般的单片机没有MMU,有MMU的CPU是不行的。有MMU的cpu运行的系统会有多个进程的概念,没有MMU的cpu算是一个进程,然后进程里有多个线程,裸机程序除外。