当前位置: 首页 > 编程日记 > 正文

nRF51800 蓝牙学习 进程记录 2:关于二维数组 执念执战

前天在玩OLED时想完成一直想弄得一个东西,就是简单的单片机游戏。因为STM32和nRF51822的内存足够,所以就用缓存数组的方法来显示图像(我也不知道术语是啥,反正就是在内存中建立一个128X64的二维数组,更新显示时将整个数组刷新到屏幕上),而且这两个OLED是串口的(还有一个128X32的OLED,一样串口的,连驱动时序和驱动函数都一样,两个都太小了,还那么贵......),四个IO口就能驱动(两个还是供电的VCC和GND),所以不像之前的那个mini 12864屏幕,它是8位并口的,带读写功能,而这个串口的只能写,不能读(那个Mini12864是5V的,我试着不加外加电路用STM32没驱动成功,可能是我水平不够,另外总共十多个引脚,全弄转换电路太复杂,而STM32的5V兼容当时我还不知道,就一直放着了,没在用STM32 试过,为了简单点使用12864,也为了做毕设,就又买了俩3.3V的),所以开辟一个缓存数组可以解决读屏幕内容这个问题。(以后看还能想着补上三种12864的照片吧)

但是在刚开始写程序时就出了问题,就是对于二维数组的定义和引用出现了问题。现在解决了,顾总结如下(仅我知道的和刚刚解决的)。

1:二维数组在函数定义时,要定义到列,其中列数要与要传递来的二维数组的列向量数一致。如:

定义一个二维数组:

unsigned char T_image[4][6]={      //就是一个俄罗斯方块的一个图形的四个方向变换的图形

{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:然后定义一个函数,此函数能够调用上面二维数组,但不限于上面一个,则定义为:void Position_change(struct POSITION pos,unsigned char ch[][6]);,注意定义中对数组的定义,就是定义到列向量,并且下标数值与即将引用的数组的列向量下标相等值,而行向量下标则不需要写(所以上面定义二维数组时最好行列向量下标值要统一)。使用时便可以直接传递一个定义了的二维数组,如在main中调用时写为:Position_change(pos,T_image); 就可以了。

3:若在这个定义的函数中还调用了另一个函数Draw_position,这个函数要使用ch[][6]传递的函数,则在定义这个函数时和上面那个函数一样,定义到列向量:void Draw_position(unsigned char ch[][6]);然后在上面那个函数中被调用时写成 Draw_position(ch);就可以了,即二维数组变量作为传递函数时只需要写方括号前面的名称就好,不需要写方括号,也不需要精确到列向量,和上面那个函数在main函数中调用一样。即整体写为:

void Position_change(struct POSITION pos,unsigned char ch[][6])

{   Draw_position(ch);

}

4:若函数中还有对传递二维数组的for循环,则只需要对定义中的二维数组进行操作就行了:

for(i=0;i<4;i++)

for(n=0;n<6;n++)

if(ch[i][n]==0).......    //ch就是指定义时的参数变量名称,定义为啥就写为啥好了,就能传递下来了

else......

好了,基本就写完了。其实这个很简单,只是当时学的时候没觉得这个重要,就简单而过了。

以后要写点对nRF51822的应用体验,拟想从开箱开始(额,用了好久了,跳过吧,从怎么连接电脑设置kile5并用SWD下载开始吧),但是不知道人家允许么......

本文水平有限,内容很多词语由于知识问题不严谨或很离谱,但主要作为记录作用,能理解就好了,希望以后的自己和路过的大神对必要的错误提出批评与指点,对可笑的错误不要嘲笑,指出来我会改正的。

转载于:https://www.cnblogs.com/zhinianzhizhan/p/5929765.html

相关文章:

.net卸载程序制作

.net卸载程序制作 原文:.net卸载程序制作方法一&#xff1a; 在打包项目中添加文件msiexec.exe(一般在c:\windows\system32(系统目录中)找到)。 在文件系统视图中选择应用程序文件&#xff0c;在msiexec.exe上单击右键选择“创建快捷方式”&#xff0c;重命名快捷方式为“unins…

Windows下的DNS命令用法

“Windows下DNS相关命令的用法。”在协议分析过程中&#xff0c;经常会遇到一种情况&#xff0c;一次对某域名抓包的过程中&#xff0c;抓到了某个域名的DNS请求&#xff0c;之后再抓包&#xff0c;却抓不到的情况。这时候就需要DNS命令出马了&#xff0c;本文介绍Windows下的D…

Kafka集群配置说明

#kafka数据的存放地址&#xff0c;多个地址的话用逗号分 log.dirs/tmp/kafka-logs #broker server服务端口 port9092 #这个参数会在日志segment没有达到log.segment.bytes设置的大小&#xff0c;也会强制新建一个segment会被 topic创建时的指定参数覆盖 log.roll.hours24 #是否…

Tomcat漏洞说明与安全加固

Tomcat是Apache软件基金会的一个免费的、开放源码的WEB应用服务器&#xff0c;可以运行在Linux和Windows等多个平台上&#xff0c;由于其性能稳定、扩展性好、免费等特点深受广大用户的喜爱。目前&#xff0c;互联网上绝大多数JAVA WEB应用都运行在Tomcat服务器上。 Tomcat作为…

《人性的优点》笔记

1.相信自己&#xff0c;做一个成功的人 2.《圣经》中说&#xff1a;“攻克己心&#xff0c;强如攻城” 3.人最大的敌人&#xff0c;不是别人&#xff0c;正是自己 4.不要为木已成舟的事情耗费太多的心血&#xff0c;你无法改变它 5.忧虑是健康的大敌&#xff0c;它只会让你的生…

SIP协议分析

“ 音视频通话控制协议SIP介绍。”SIP&#xff08;Session Initiation Protocol&#xff09;&#xff0c;即会话发起协议&#xff0c;在RFC2543、RFC3261等中被定义&#xff0c;是一个VOIP信令协议&#xff0c;其目的是在IP网络中实现电话功能&#xff0c;即软电话功能。在互联…

Struts2的工作原理

Struts2是在Struts1的基础上发展而来的&#xff0c;Struts是WebWork和Struts1的集合&#xff0c;采用的正是WebWork的核心&#xff0c;更多的是WebWork。 下载的Struts2源代码文件 主要的包和类&#xff1a; 包名 说明 org.apache.struts2. components 该包封装视图组件&…

Tiny4412 Uboot

1. Build uboot a) 安装好toolchain (arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz)并设置好 环境变量PATH&#xff0c;保证可以正常使用。 b) 解压 uboot_tiny4412-20130729.tgz 并进入相应的目录 tar xzf uboot_tiny4412-20130729.tgz c) 配置 uboot 并编译 cd uboot_tiny4412 m…

iOS逆向(1)——利用ipa重签名,3分钟iPhone安装多个微信

本文要达成如图效果&#xff0c;在一台iPhone上安装第二个微信&#xff1a; 准备&#xff1a; Xcode微信ipa&#xff08;可通过iTool进行下载&#xff09;重签名脚本 步骤 打开Xcode&#xff0c;新建Single View App项目&#xff0c;名字可以随意&#xff0c;这里就用Wech…

使用Fiddler进行HTTP流量分析

“ Fiddler抓包工具使用。”Fiddler作为一个PC端的HTTP/HTTPS协议分析工具&#xff0c;能够抓取PC上的流量&#xff0c;并且它对HTTP类数据的分析&#xff0c;要比Wireshark要简单&#xff0c;友好&#xff0c;它对数据的组织格式很好地提高了分析效率。本文介绍如何在PC上使用…

Java学习笔记(二一)——Java 泛型

【前面的话】 最近脸好干&#xff0c;掉皮&#xff0c;需要买点化妆品了。 Java泛型好好学习一下。 【定义】 一、泛型的定义主要有以下两种&#xff1a; 在程序编码中一些包含类型参数的类型&#xff0c;也就是说泛型的参数只可以代表类&#xff0c;不能代表个别对象。&#x…

GitHub与Git入门

一、GitHub GitHub为开发者提供Git仓库的托管服务&#xff0c;可以进行代码共享、团队协同开发&#xff0c;创建了社会化&#xff08;social coding&#xff09;编程的概念。 二、GitHub与Git的区别 开发者将源代码存入“Git”仓库&#xff0c;而GitHub则在网络上提供Git仓库…

《UML大战需求分析》阅读笔记1

通过阅读本书的序和第一章&#xff0c;让我对于UML的理解更加深刻了&#xff0c;并且懂了怎样把你UML学的更好。 作者先让我们明白什么是UML&#xff0c;大概知道了UML各个图的形态和各种用途&#xff0c;然后再详细的介绍各个图怎样使用。 UML是个非必要的建模工具&#xff0c…

裸奔的支付X聊天,你还敢用吗?

“ 一直想在社交领域突破的某付宝&#xff0c;却自始至终对社交功能如此的不用心&#xff0c;让用户的数据在网络中裸奔&#xff0c;使用户不寒而栗。”没错&#xff0c;这篇文章要说的就是BAT中A家的支付X&#xff0c;那个千方百计做社交的支付工具。如果你使用了它的聊天窗口…

MVC3项目依赖文件错误解决

MVC3的项目依赖分为两大类&#xff1a; 1、ASP.NET Web Pages 2、ASP.NET MVC 3 如果没有正确引入&#xff0c;或者项目的版本有错误会出现程序集引用错误。 在服务器上部署时&#xff0c;解决思路如下&#xff1a; 1、下载MVC3的安装包&#xff0c;然后在服务器上安装&#xf…

让自己的开源项目支持CocoaPods集成

平时我们会经常用CocoaPods集成第三方库&#xff0c;那如何使自己的代码也可以通过CocoaPods集成呢&#xff1f;只需要简单几步&#xff1a; 创建git仓库&#xff0c;把代码提交到Github或码云等在git仓库中创建.Podspec文件&#xff0c;修改里面的配置&#xff08;如代码的版…

由于客户端检测到一个协议错误 代码0x1104

重新连接N次都还是这个错误提示&#xff0c;最后再重起电脑&#xff0c;还是没用。研究了一下错误终于解决了。 首先检查远程连接端口对不对&#xff1f;Windows远程默认的连接端口是3389&#xff0c;一般大家连接时直接输入IP或域名就可以连接了。如果还要加:端口号的话&#…

使用Fiddler抓取手机HTTP流量包

“ Fiddler手机流量抓包实战。”Fiddler作为一个PC端的HTTP/HTTPS协议分析工具&#xff0c;不仅能够抓取PC上的流量&#xff0c;还能作为代理&#xff0c;抓取手机流量&#xff0c;在之前的文章《使用Fiddler进行HTTP流量分析》中介绍了Fiddler的基本用法&#xff0c;本文介绍如…

Spark Steaming 点滴

Spark Streaming 模块是对于 Spark Core 的一个扩展&#xff0c;目的是为了以高吞吐量&#xff0c;并且容错的方式处理持续性的数据流。目前 Spark Streaming 支持的外部数据源有 Flume、 Kafka、Twitter、ZeroMQ、TCP Socket 等。Discretized Stream 也叫 DStream) 是 Spark S…

CocoaPods远程私有库

上一篇&#xff08;让自己的开源项目支持CocoaPods集成&#xff09;介绍了将自己开发的框架代码发布到Cocoapods&#xff0c;全球的开发者都可以通过pod search搜索到我们的框架代码以及通过pod install进行安装。但有时候我们希望只有我们项目内部的人才可以集成和修改&#x…

大数据平台的秘密

大数据&#xff0c;这个词越来越热&#xff0c;很多人都在谈大数据&#xff0c;其实很多张口闭口大数据的人&#xff0c;或许都不知道数据是如何产生、传递、存储、运算到应用。有段时间&#xff0c;看到一些大数据文章&#xff0c;就感觉纯属凑热闹&#xff0c;小数据都没搞明…

Fiddler使用技巧:强大的数据文本编解码功能

“ 郑重推荐Fiddler工具自带的TextWizard功能。”Fiddler作为一个HTTP类协议的抓包分析工具&#xff0c;之前已介绍过抓包分析功能&#xff0c;可参考文章&#xff1a;《使用Fiddler进行HTTP流量分析》《使用Fiddler抓取手机HTTP流量》在抓包分析功能之外&#xff0c;我们一定不…

jquery validate 详解一

jQuery校验 官网地址&#xff1a;http://bassistance.de/jquery-plugins/jquery-plugin-validation 一导入js库 <script src"../js/jquery.js" type"text/javascript"></script><script src"../js/jquery.validate.js" type"…

安装VMWare tools,以及解决安装后/mnt中有hgfs但没共享文件的方法

一、首先是安装VMWare tools安装过程可参考&#xff1a;http://www.cnblogs.com/jiu0821/p/7559949.html二、解决安装VMWare tools后/mnt中有hgfs但没共享文件 前提&#xff1a;在虚拟机软件中设置了共享目录 此时在linux中进入 /mnt/hgfs 文件夹&#xff0c;但发现共享的文件没…

音乐(文件)断点下载

这篇文章介绍音乐等文件的下载&#xff0c;支持断点续传。 我们需要创建两个类 HYDownLoader&#xff1a;音乐下载的主类&#xff0c;可以进行新建下载、暂停下载、取消下载等。 HYFileTool&#xff1a;文件管理类&#xff0c;主要为HYDownLoader服务&#xff0c;可以判断文件…

php设计模式

原型模式&#xff08;prototype&#xff09; PHP设计模式之&#xff1a;原型模式 刚刚了解了原型模式&#xff0c;通过资料以及自身了解整合以下资料&#xff1a; 原型模式通过复制已经存在的实例来返回新的实例&#xff0c;而不是新建实例&#xff0c;并且原型&#xff08;被复…

TextKit及应用

在iOS开发中我们常常使用UIKit的UITextView、UITextField、UILabel来显示文字。它们底层都是基于一个叫做TextKit的强大引擎。通过TextKit&#xff0c;我们可以方便地修改文字的样式和排版&#xff0c;而不需要直接操作复杂的Core Text。 1.什么是TextKit 在iOS7中&#xff0c…

判断类之间的父子关系

如何判断两个类之间的父子关系&#xff1f; java为我们提供了instanceof运算符&#xff0c;可以用来判断一个对象是否是否个类的实例&#xff0c;所以很容易的想到子类的对象肯定是父类的实例。但是如何所涉及到的类是不可实例化的该怎么办呢&#xff1f;好在java的Class为我们…

顺F速运,你被爱加M坑了

“ 顺F速运APP安全性分析。”之前的文章《Wireshark分析实战&#xff1a;某达速递登录帐号密码提取》对某达速递的APP进行了分析&#xff0c;该APP将数据完全暴露于网络流量中。于是对快递行业老大顺F速运的APP进行了分析&#xff0c;发现该APP质量还算上乘&#xff0c;但是&am…

[大数据之Spark]——Actions算子操作入门实例

Actions reduce(func) Aggregate the elements of the dataset using a function func (which takes two arguments and returns one). The function should be commutative and associative so that it can be computed correctly in parallel. 这个方法会传入两个参数&#x…