nRF51800 蓝牙学习 进程记录 2:关于二维数组 执念执战
前天在玩OLED時(shí)想完成一直想弄得一個(gè)東西,就是簡單的單片機(jī)游戲。因?yàn)镾TM32和nRF51822的內(nèi)存足夠,所以就用緩存數(shù)組的方法來顯示圖像(我也不知道術(shù)語是啥,反正就是在內(nèi)存中建立一個(gè)128X64的二維數(shù)組,更新顯示時(shí)將整個(gè)數(shù)組刷新到屏幕上),而且這兩個(gè)OLED是串口的(還有一個(gè)128X32的OLED,一樣串口的,連驅(qū)動(dòng)時(shí)序和驅(qū)動(dòng)函數(shù)都一樣,兩個(gè)都太小了,還那么貴......),四個(gè)IO口就能驅(qū)動(dòng)(兩個(gè)還是供電的VCC和GND),所以不像之前的那個(gè)mini 12864屏幕,它是8位并口的,帶讀寫功能,而這個(gè)串口的只能寫,不能讀(那個(gè)Mini12864是5V的,我試著不加外加電路用STM32沒驅(qū)動(dòng)成功,可能是我水平不夠,另外總共十多個(gè)引腳,全弄轉(zhuǎn)換電路太復(fù)雜,而STM32的5V兼容當(dāng)時(shí)我還不知道,就一直放著了,沒在用STM32 試過,為了簡單點(diǎn)使用12864,也為了做畢設(shè),就又買了倆3.3V的),所以開辟一個(gè)緩存數(shù)組可以解決讀屏幕內(nèi)容這個(gè)問題。(以后看還能想著補(bǔ)上三種12864的照片吧)
但是在剛開始寫程序時(shí)就出了問題,就是對(duì)于二維數(shù)組的定義和引用出現(xiàn)了問題。現(xiàn)在解決了,顧總結(jié)如下(僅我知道的和剛剛解決的)。
1:二維數(shù)組在函數(shù)定義時(shí),要定義到列,其中列數(shù)要與要傳遞來的二維數(shù)組的列向量數(shù)一致。如:
定義一個(gè)二維數(shù)組:
unsigned char T_image[4][6]={ //就是一個(gè)俄羅斯方塊的一個(gè)圖形的四個(gè)方向變換的圖形
{0,1,0,1,1,1},
{ 1,0,1,1,1,0},
{1,1,1,0,1,0},
{0,1,1,1,0,1}};
2:然后定義一個(gè)函數(shù),此函數(shù)能夠調(diào)用上面二維數(shù)組,但不限于上面一個(gè),則定義為:void Position_change(struct POSITION pos,unsigned char ch[][6]);,注意定義中對(duì)數(shù)組的定義,就是定義到列向量,并且下標(biāo)數(shù)值與即將引用的數(shù)組的列向量下標(biāo)相等值,而行向量下標(biāo)則不需要寫(所以上面定義二維數(shù)組時(shí)最好行列向量下標(biāo)值要統(tǒng)一)。使用時(shí)便可以直接傳遞一個(gè)定義了的二維數(shù)組,如在main中調(diào)用時(shí)寫為:Position_change(pos,T_image); 就可以了。
3:若在這個(gè)定義的函數(shù)中還調(diào)用了另一個(gè)函數(shù)Draw_position,這個(gè)函數(shù)要使用ch[][6]傳遞的函數(shù),則在定義這個(gè)函數(shù)時(shí)和上面那個(gè)函數(shù)一樣,定義到列向量:void?Draw_position(unsigned char ch[][6]);然后在上面那個(gè)函數(shù)中被調(diào)用時(shí)寫成 Draw_position(ch);就可以了,即二維數(shù)組變量作為傳遞函數(shù)時(shí)只需要寫方括號(hào)前面的名稱就好,不需要寫方括號(hào),也不需要精確到列向量,和上面那個(gè)函數(shù)在main函數(shù)中調(diào)用一樣。即整體寫為:
void Position_change(struct POSITION pos,unsigned char ch[][6])
{? Draw_position(ch);
}
?? 4:若函數(shù)中還有對(duì)傳遞二維數(shù)組的for循環(huán),則只需要對(duì)定義中的二維數(shù)組進(jìn)行操作就行了:
for(i=0;i<4;i++)
for(n=0;n<6;n++)
if(ch[i][n]==0)....... //ch就是指定義時(shí)的參數(shù)變量名稱,定義為啥就寫為啥好了,就能傳遞下來了
else......
?
?
? 好了,基本就寫完了。其實(shí)這個(gè)很簡單,只是當(dāng)時(shí)學(xué)的時(shí)候沒覺得這個(gè)重要,就簡單而過了。
以后要寫點(diǎn)對(duì)nRF51822的應(yīng)用體驗(yàn),擬想從開箱開始(額,用了好久了,跳過吧,從怎么連接電腦設(shè)置kile5并用SWD下載開始吧),但是不知道人家允許么......
?
本文水平有限,內(nèi)容很多詞語由于知識(shí)問題不嚴(yán)謹(jǐn)或很離譜,但主要作為記錄作用,能理解就好了,希望以后的自己和路過的大神對(duì)必要的錯(cuò)誤提出批評(píng)與指點(diǎn),對(duì)可笑的錯(cuò)誤不要嘲笑,指出來我會(huì)改正的。
?
轉(zhuǎn)載于:https://www.cnblogs.com/zhinianzhizhan/p/5929765.html
總結(jié)
以上是生活随笔為你收集整理的nRF51800 蓝牙学习 进程记录 2:关于二维数组 执念执战的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在预装win8的电脑上换win7系统讲解
- 下一篇: 求一个自甘堕落的个性签名!