• slider image 331
  • slider image 332
  • slider image 333
  • slider image 334
  • slider image 335
  • slider image 336
:::


Browsing this Thread:   1 Anonymous Users






Re: 使用指標問題
#5
版主
版主


查看用戶資訊
一個解說指標的範例: 參照:

unsigned char Input_Buffer[320] ; // 宣告一個 321 Bytes RAM 的陣列
const unsigned char *ROMPTR; ; // 宣告一個 指向 ROM 的指標

unsigned char *RAMPTR ; // 宣告一個指向 RAM 的指標
unsigned int j ; // 迴圈計數變數 j
void main(void)
{
ROMPTR = Lookup_Table ; // 將指標變數指向 ROM 的查表陣列的起始位址
RAMPTR = Input_Buffer ; // 設定一個指標變數 (RAMPTR) 指向 RAM 陣列的第一個位址。

// RAMPTR = Input_Buffer; // 將陣列 Input_Buffer 的起始位址傳給 RAMPTR。*RAMPTR 稱為指標,只能存取資料用。單獨的 RAMPTR 稱之為指標變數可以直接設定位址的指向。
// RAMPTR = &Input_Buffer[0]; // 作用與上一行相同

for (j=0; j<=302; j++) *RAMPTR++ = *ROMPTR++; // Copy ROM Data to RAM 陣列
NOP( );
while(1);
}

const unsigned char Lookup_Table[ ] =
{0xA0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,
18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,
34,35,36,37,38,39,40,41,42,43,44,45,56,57,48,49,50,
51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,
:
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,
18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,
34,35,36,37,38,39,40,41,42,43,44,45,56,57,48,49,50,
51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,
68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,
84,85,86,87,88,89,80,91,92,93,94,95,96,97,98,99,100,
0xAA,0xAB};

發表於: 10/13 14:01

Edited by Ryang on 2021年10月14日 20:28:25
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 使用指標問題
#4
管理員
管理員


查看用戶資訊
可以估狗一下 "C 指標與多維陣列" 會有很多實用的範例與講解,
另外, Microchip University https://mu.microchip.com/
也有專門教C語言的課程,
目前只有英文版, 中文版應該在年底前會翻譯好上架,
如果對於程式語言想要更了解的會員可以上去補習一下喔!
(順便練一下英聽)

在開發環境與工具(英文版)分類中,
關於 C語言的相關課程有三門,
紅框中有您想學習的多維矩陣介紹, 下一個章節即為指標 https://mu.microchip.com/page/development-tools
縮圖

縮圖

Attach file:



jpg  MU_C_language.jpg (363.83 KB)
67979_61661f9f6ae09.jpg 1182X735 px

jpg  MU_C_Array.jpg (199.52 KB)
67979_61661fbb009db.jpg 1143X738 px

發表於: 10/13 7:52
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 使用指標問題
#3
初級會員
初級會員


查看用戶資訊
問題解了,謝謝~

另外再請教一下雙指標(指標的指標)的疑問
我想要使用宣告的char *DoublePointAddress[2]變數,
存放SADC1_GAIN_X1 、GET_CSA_1 的位址
請指教一下語法要如何書寫
存入SADC1_GAIN_X1 、GET_CSA_1位址
取出SADC1_GAIN_X1 、GET_CSA_1內容值?
謝謝~

char SADC1_GAIN_X1 [8] = {"SETADC10"};
char GET_CSA_1 [8] = {"CURRENT1"};

char *DoublePointAddress[2];

發表於: 10/12 15:08
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 使用指標問題
#2
管理員
管理員


查看用戶資訊
由於您宣告下列兩個數值為 const char (常數 char *)
const char SADC1_GAIN_X1 [8] = {"SETADC10"};
const char GET_CSA_1 [8] = {"CURRENT1"};
但是 function 卻是用 char *來接, 兩者型別不一致,
void MultipleCMD_load(char *Mtemp1,char *Mtemp2)

1. 更改變數為 char*
char SADC1_GAIN_X1 [8] = {"SETADC10"};
char GET_CSA_1 [8] = {"CURRENT1"};

或是

2. 更改 function 的參數型態為 const char*
void MultipleCMD_load(const char *Mtemp1, const char *Mtemp2)

另外, 矩陣名稱即為指標, 不用加 &, 加了應該會報錯
MultipleCMD_load(SADC1_GAIN_X1 , GET_CSA_1 ) ;

發表於: 10/12 14:17
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


使用指標問題
#1
初級會員
初級會員


查看用戶資訊
請問語法要如何修改才能解掉編譯後提示的warning問題
eMMC-main.c:1228:27: warning: incompatible pointer types passing 'const char (*)[8]' to parameter of type 'char *' [-Wincompatible-pointer-types]
MultipleCMD_load(&SADC1_GAIN_X1, &GET_CSA_1) ;
^~~~~~~~~~~~~~
eMMC-main.c:1173:29: note: passing argument to parameter 'Mtemp1' here
void MultipleCMD_load(char *Mtemp1,char *Mtemp2)

程式碼如下:
const char SADC1_GAIN_X1 [8] = {"SETADC10"};
const char GET_CSA_1 [8] = {"CURRENT1"};
char MultipleCMDBuf1[8], MultipleCMDBuf2[8];

void MultipleCMD_load(char *Mtemp1,char *Mtemp2)
{
for(char i = 0; i < 8;i++){
MultipleCMDBuf1[i] = Mtemp1[i] ;
MultipleCMDBuf2[i] = Mtemp2[i] ;
}
}

void main()
{
˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙
MultipleCMD_load(&SADC1_GAIN_X1 , &GET_CSA_1 ) ;
˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙
˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙
˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙
}

發表於: 10/12 13:58
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://mu.microchip.com/page/tmu
http://www.microchip.com.tw/modules/tadnews/page.php?ncsn=2&nsn=41
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
https://page.microchip.com/APAC-PrefCenters-TW.html
https://www.youtube.com/user/MicrochipTechnology
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
https://www.microchip.com/development-tools/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
[ more... ]

教育訓練中心

課程 - 台北教育訓練中心
課程 - 新竹教育訓練中心
課程 - 高雄教育訓練中心
教育訓練中心介紹
購買 - 實驗工具
臺灣實驗板介紹與資源