本帖最后由 waiter 于 2016-7-20 20:25 编辑
我想通过UART输入8个数,作为内部访问Flash/SRAM的地址,先输入的作为地址的高位,比如输入的是:
123456CD,那么就是内部访问地址为 0x123456CD.
我写的代码是(在 UART_Loopback_demo 基础上改的):
for(i=0;i<8;i++){
chrx = UART_GetChar(TERM_PORT); // get 8 address
adr = adr<<4 ;
if ( (chrx>='0') & (chrx<='9') )
chrx -= '0' ;
else if ( (chrx>='A') & (chrx<='F') )
chrx = chrx - 'A' + 0xA;
else if ( (chrx>='a') & (chrx<='f') )
chrx = chrx - 'a' + 0xA;
else
err += 1;
adr += chrx;
}
不知道有没有更好的方法?
还有一个问题,能不能做成用回车当作边界? 也就是回车前的8个字符作为地址。如果两个回车之间不足8个字符,就在高位填充0.这样该怎么写?
向各位大虾学习啊。
有了地址,就可以访问NV32内部的SRAM/Flash的值,直接读取即可:
if(err==0) {
data=M32(adr);
printf("\n adr:0x%x = 0x%x \n ",adr,data);
}
else
printf("\n:UART1>Read Register. Address Input is Invalid!");
地址落在0x0起的低段地址,就是直接读取FLASH的内容。
|