2011年2月3日 星期四

宣告絕對位址的變數

以前不熟悉指標,當然也不熟悉memory的意思


感謝這個工作,讓我對memory有了進一步的了解


難怪指標在C語言無處不見,因為真的很好用


不過到底那裡好用,這個我一時也說不上來


不過最近研究了一下我之前常用的MCU,絕對位址的宣告如何使用


1、以dsPIC 為例


int var __attribute__ ((address(0x860)));


意思就是將 var 這個變數定義在address 0x860的位址上


2、以stm32  MDK 為例


#include <absacc.h> 
 
int var __at (0x20008000);


 


其實這只是一個簡單的操作手法而已


那麼要讀出絕對位址的方法就很多種了


int ans;


var = 10;


以往的做法


ans = var;


那定義成絕對位址的話


1、以dspic為例


ans = *(volatile int *)0x860;


2、以stm32 為例


ans = *(volatile int *)0x20008000;


 


或許有人可以想到這樣做有什麼好處了


不過不知道的也沒關係


有時候,真的就是"了解它,玩它",就對了