看我的理解,C语言我也没学过,是否正确?也正学习
/*****************************************************<br />文件名: REMAP.c<br />功能: 将存储器重新映射到片内RAM(0x40000000~0x40000003F),然后更改0x40000000~0x4000003F的内容.<br />说明: 观察 0x40000000~0x40000003F地址上的数据有何变化.<br />***************************************************************/<br />#include "config.h"<br />#define VECTOR_RAM (unsigned char *)0x40000000 //定义一个无符号字符型常量指针(地址)<br /> //重点理解如下:因为不能将一个整型量或任何其它非地址类型的数据赋值给<br /> //一个指针变量或常量,故用"unsigned char(无符号字符型,其实质也是整数数据)"定义,<br /> //为了说明该字符型变量(常量)为指针(地址)用*定义,同 int *ip,该语句意思为定义<br /> //一个指针变量,同样(unsigned char *)0x40000000为一个无符号型常量指针(地址),<br /> //用"*"来说明该常量为一个指针(地址)型,<br />/*****************************************************************<br />**名称:main()<br />**功能:存储器映射<br />******************************************************************/<br /><br />int main(void)<br /> <br /> { uint8 i; // 定义一个变量<br /> uint8 *addr ; // 定义指针类型变量addr<br /> <br /> MEMMAP =0X02; //中断向量从静态RAM重映射(用户RAM模式)<br /> <br /> addr=VECTOR_RAM; //为指针变量赋初值,指向地址为0X40000000.<br /> <br /> for(i=0;i<8;i++)<br /> { *addr=0x55; //为指针变量此时所指向的地址处赋值,该值为该地址处的内容 .<br /> addr++; //指针(地址)加一.<br /> }<br /> <br /> addr=VECTOR_RAM;<br /> <br /> for(i=0;i<8;i++)<br /> { *addr=0xAA;<br /> addr++;<br /> }<br /> <br /> MEMMAP =0x00; //中断向量从Boot Block 重映射(Boot装载程序模式)<br /> <br /> while(1);<br /> return(0);<br />}
|
|