首先需要准备的一些工具(后续带有专门的工具链接)

1 串口驱动

- CH341SER -> 用RS232串口线连接开发板和电脑传输数据

2 Notepad++

- 编辑代码工具 -> linux系统和windows系统进行共享目录时

3 SecureCRT

- 用于控制开发板,相当于Linux下的终端界面

4.1 Ubuntu-18.04(上课过程使用:16.04 ~ 18.04)

- ubuntu是linux系统(18.04 - 2018年4月出版 - 20.04 、 22.04)

检查之前课设的 ubuntu 是否符合标准/是否可用 - 根据虚拟机中是否有 交叉编译器 (终端下输入命令:arm-linux-gcc -v)

4.2 Ubuntu - 12.04

若使用 Ubuntu-12.04 要注意的是使用 用户 / 访客 模式

4.3.VSCoode

(我个人觉得Vscoode是比较万能的一个工具,但是设置编译环境有点麻烦)

// 用户模式:
gec@ubuntu:~$
// 访客模式:
guest-TrOVIR@ubuntu:~$
// 访客模式下,无法进入 共享文件夹 

介绍一个切换 用户/访客 模式:

5 VMware:

- 虚拟机:虚拟的电脑 - 用于承载其他系统(一台电脑双系统)

一般使用 VMware15 pro 即可;

问题1:若开打虚拟机会蓝屏。 解决办法:则需要安装VM16版本;

问题2:无法打开虚拟机,显示xxx-v已禁用。 解决办法:关机 -> 进入BIOS模式 -> 开启虚拟化

解决方式大概两种:

1.大多数时候,虚拟机打不开都是因为防火墙拦截所致.
解决方案:断网,关闭杀毒软件(360,腾讯管家等),关闭防火墙

 2.如果断网,关闭防火墙后,打开虚拟机还是没有反应.可能是软件运行的权 限不够,此时要以管理员身份来运行VMware.解决方案:右键VMware图标-属性-兼容性-以管理员身份运行此程序.

02 步骤: (按照工具文件的安装包进行一个设置)

需要安装一个虚拟安装的官网:https://www.vmware.com/

安装需要的虚拟机:

1. 打开在官网下载的VMware安装包,然后点击【下一步】

2. 勾选【我接受许可协议中的条款】,然后点击【下一步】;

3. 自定义VMware的安装位置,取消勾选的两项,然后点击【下一步】;

4. 取消勾选的两项,然后点击【下一步】;

5.  点击【完成】,VMware安装完成。(然后就可以开始你虚拟机了) 

后续操作位安装压缩包的ubuntu目录,找到相关的文件运行相关的文件!

 1.然后点击开始运行

2 虚拟机密码:(123456)

提示:

我们发现关机开机需要花费大量时间,就尽量不要关虚拟机,直接挂起即可,有利提高开发效率

挂起虚拟机的步骤:(点击上方的暂定按键即可挂起)

3 打开虚拟机终端:

终端(ctrl+alt+T):用于编写所有操作命令//打开即出现liunx下的终端

或者是右击出现OPEN打开的方式进入

然后是相关的快捷键:

快捷键

作用

ctrl + alt + T

打开终端

ctrl + C

结束程序

ctrl + Z

结束进程

ctrl + L(终端令行输出:clear 效果一样)

清屏

F11

ubuntu命令行模式界面

Ctrl + shift + “+=”

终端字体放大

Ctrl + "-_"

终端字体缩小

Ctrl + Alt

鼠标退出ubuntu系统(windows和ubuntu切换)

Tab

自动补充键(输入前缀即可)补全代码按键

Ctrl + Q

Notepad++ 多行注释与取消注释切换

Ctrl + K

Notepad++ 多行注释

Ctrl + shift + K

Notepad++ 多行取消注释

↑ ↓

终端下查询输入命令历史记录

做一个简单的是项目实现:

03 共享目录设置:
共享文件夹:为了虚拟机和Windows之间建立联系,进行文件互通,有利于我们进行代码编译修改

共享文件夹的的图文解析:(相当于一个桥梁进行传输)

04 访问共享文件夹:

共享文件夹:相当于 windows系统 和 linux系统 “沟通的桥梁”。

// 切换到共享文件夹路径中
gec@ubuntu:~$ cd /mnt/hgfs/共享文件夹名字(自己的)
gec@ubuntu:/mnt/hgfs/共享文件夹名字(自己的)$ 

 若已设置,却不显示共享路径:(一般不会有第二种情况,极少数会出现这个问题)

1 查看是否设置共享路径成功命令:

2 确实设置陈成功后,输入以下命令:

/* 如果之前没有命令包则先执行sudo apt-get install open-vm-tools
*/
// 输入以下命令sudo vmhgfs-fuse .host:/ /mnt/hgfs -o nonempty -o allow_other

3 完成则设置成功,可以进入 /mnt/hgfs 目录下进行 ls 查看

练习:

设置共享文件夹目录(共享目录名为share!

第二节课时

01 路径介绍:

(注意:每层路径都使用 / 区分开)

路径名

路径

通俗讲解

家目录

~

自己linux系统的家

根目录

/

装载linux所有系统文件

共享目录

/mnt/hgfs/共享文件名

连接linux和windows的“桥梁”

当前目录下

.

上一层目录

..

全部文件

*

上一次目录

-

刚从哪层切换过来的目录

驱动目录

/dev

之后开发板使用经常用到

02 shell命令:(注意:每个shell命令都需要 空格 分开)

命令

作用

使用方法

ls

查看目录信息

ls (路径名)

-l :查看文件详细信息

-a :查看全部文件

cd

切换目录

cd 路径名

(若不添加路径名,则默认去到家目录下)

cp

拷贝文件/目录

cp 文件名 要拷贝的路径

(若拷贝目录需要进行递归操作:-r)

mv

1 移动

2 重命名

有两个设置模式!

1 mv 文件名 要移动到的路径(

2 mv 文件名 新的文件名 (如果没有文件夹则重新命名)

cat

查看文件内容

cat 文件名

touch

创建文件

touch 新文件名

mkdir

创建目录

mkdir 新目录名(注意是小写)

rm

删除文件

rm 文件名

(若删除目录需要进行递归操作:-r)

chmod

修改文件权限

chmod 权限参数 文件名

man

查看man手册

man 版本号 函数名

(若不知道版本号,则 -f 查找)

(q:退出 h:详细讲解)

03 chmod 修改权限

文件权限示例:-rwxrwxrwx

-

rwx

rwx

rwx

文件类型

文件所属者(user)

文件所属组(grouth)

文件其他组(other)

ugo----简单来记录

权限参数模板:

权限参数:

r - 读

w - 写

x - 执行

r

w

x

r

w

x

r

w

x

二进制 (1/0 -> 有/无)

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

十进制 (有则+ / 无则+0)

4

2

1

4

2

1

4

2

1

参考示例:

文件所属者

文件所属组

文件其他组

二进制值:

1

1

1

1

1

0

0

0

1

十进制值:

4+2+1 = 7

4+2+0 = 6

0+0+1 = 1

权限注释:

所属者可读可写可执行

所属组可读可写

其他组仅可执行

注意:烧录在板子上的时候需要给与一定的限权

01 vi/vim编辑器

// vi编辑器使用
gec@ubuntu:/mnt/hgfs/share_217$ vi main.c
// vim编辑器使用
gec@ubuntu:/mnt/hgfs/share_217$ vim main.c

1.1 vi/vim 的 3种模式:

命令模式:(最初进入,所有模式切换都需经过的途径)

dd: 删除光标所在行

插入模式:(命令模式下,按 i 进入插入模式;按 Esc 退出命令模式;)

在此模式下,可 编辑/写入 字节数据

低行模式:(“:” + 命令;按 Esc 退出命令模式;)

在低行模式下,可以进行 保存、退出、设置行号、查找 ... 功能;

保存文件

退出

设置vi/vim行号

保存并退出

强制保存并退出

:w

:q

:set nu

:wq

:wq!

02 gedit编辑器(linux下的文本编辑器):

gec@ubuntu:/mnt/hgfs/share_217$ gedit main.c

2.1 gedit快捷键:(与WINDS差不多使用的快捷键)

复制

粘贴

剪切

后撤

保存

ctrl + c

ctrl + v

ctrl + x

ctrl + z

ctrl + s

03 Notepad++编辑器:

基于 windows 下的编辑器,可支持多种语言编辑格式(但是记得你要选好后缀,不然会有一些格式的错误)Notepad++功能比 Windows 中的 Notepad(记事本)强大,除了可以用来制作一般的纯文字说明文件,也十分适合编写计算机程序代码。Notepad++ 不仅有语法高亮度显示,也有语法折叠功能,并且支持宏以及扩充基本功能的外挂模组。(它是一个免费的软件)

Notepad++是免费软件,可以免费使用,自带中文,支持众多计算机程序语言: C,C++,Java,pascal,C#,XML,SQL,Ada,HTML,PHP,ASP, AutoIt, 汇编, DOS批处理, Caml, COBOL, Cmake, CSS,D, Diff, ActionScript, Fortran, Gui4Cli, Haskell, INNO, JSP, KIXtart, LISP, Lua, Make处理(Makefile), Matlab, INI文件, MS-DOS Style, NSIS, Normal text, Objective-C, Pascal,Python, Javascript,Verilog,Haskell,InnoSetup,CMake,VHDL,Matlab

(直接解压安装既可以使用)

快捷键

作用

ctrl + K

注释 选定代码块

ctrl + shift + K

取消注释 选定代码块

ctrl + Q

注释/取消注释 选定代码块

Tab

对齐

shift + Tab

缩进

04 程序编译 + 运行文件:

gcc:GND代码编译器,用于编译代码(程序每次修改后都需要保存并重新编译,不然会出错)

# 编译命令:gcc 源码文件 -o 可执行文件名
gec@ubuntu:/mnt/hgfs/share_217$ gcc main.c -o main
# 运行可执行文件:./可执行文件名
gec@ubuntu:/mnt/hgfs/share_217$ ./mainhelloworld# 若不指定生成可执行文件名,则默认生成可执行文件名为:a.xxx linux-a.out windows-a.exe
gec@ubuntu:/mnt/hgfs/share_217$ gcc main.c
gec@ubuntu:/mnt/hgfs/share_217$ lsa.exe  a.out  main  main.c

复习一下 C语言:七大原则:空行、空格、成对书写、缩进、对齐、代码行、注释七方面的书写规

硬性要求:

1 该换行就换行;

2 该缩进对齐就缩进对齐;

3 符号间需要空格;

4 参数定义规范;

5 符号成对书写;

6 注释:单行注释: //       多行注释: /* */

c语言格式:

#include <stdio.h>// int main(参数个数, 第1个参数,第2个参数 ...)// 根据函数返回值定义对应函数类型
int main(int argc, char *argv[])
{// printf("argv[0] : %s\n", argv[0]);
printf("argv[1] : %s\n", argv[1]);
printf("argv[2] : %s\n", argv[2]);return 0;
}
// 终端下:
gec@ubuntu:/mnt/hgfs/share$ gcc main.c -o main    (-o  可以运行执行文件)  一定是编译,然后在运行!!
gec@ubuntu:/mnt/hgfs/share$ ./main zhangsan lisiargv[0] : ./mainargv[1] : aweiargv[2] : zhangsi

基础知识:

关系运算符(一般使用if进行一个使用)

常用类型

int

char

float

long

大小(字节)

4

1

4

8

关系运算符

相等条件为真

不相等条件为真

大于 / 小于

大于等于 / 小于等于

符号

==

!=

>

>=

逻辑运算符

与条件

或条件

非条件

符号

&&

||

ASCII码对照表:(虚拟机使用MAN ASCLL可以查看手册,不太建议去背起来)

2 条件判断

   if(条件A){// 如果条件A为真,则运行此代码demo_A ... ;}else if(条件B){// 如果条件A不满则,则检测条件B是否满足;// 条件B为真,则运行此代码demo_B ... ;}else{// 若不满足条件A&&条件B,则运行此代码demo_B ... ;}

3 循环逻辑:

while(){ }:

别给写成是while(1)死循环!!!!

for循环:

   for(变量初始化; 条件; 每次循环变量的变化){操作;}

例子:

    for(num=1; num<=5; num++){sleep(1);printf("num:%d\n", num);}

4 数组介绍:

一维数组:数组名[ 数组大小 ] = {};

示例:

注:数组创建, [] 中要给一个常量才可以,不能使用变量。可以直接用常量,或者使用宏定义。

数组的初始化(实现数组的监控)

// 示例代码:
void main(){// 定义数组 arr[] // 大小:3个char型// 并初始化值arr[0] = 'A', arr[1] = 'b';char arr[3] = {'A','b'};for(int i=0; i<3; i++){printf("%c  ", arr[i]);}
}
// ubuntu终端:
gec@ubuntu:/mnt/hgfs/share$ ./a.out A  b   

int arr[6] ="abcdef";

结论:

  • 数组是具有相同类型的集合,数组的大小(即所占字节数)由元素个数乘以单个元素的大小。
  • 数组只能够整体初始化,不能被整体赋值。只能使用循环从第一个逐个遍历赋值。
  • 初始化时,数组的维度或元素个数可忽略 ,编译器会根据花括号中元素个数初始化数组元素的个数。
  • 当花括号中用于初始化值的个数不足数组元素大小时,数组剩下的元素依次用0初始化。
  • 字符型数组在计算机内部用的时对应的ascii码值进行存储的。
  • 一般用”“引起的字符串,不用数组保存时,一般都被直接编译到字符常量区,并且不可被修改。

二维数组格式:

数组名[ 元素组数 ][ 每组元素大小 ] = {};

数组名[ 行 ][ 列 ];

A[3][4]

(注意:二维数组可省略元素组数(系统自动根据初始化/输入数据决定),不可省略每组元素大小空间)即为可以省略行!!但是不可以省略每一组的空间大小!

// 示例代码:
int main(){// 输入字符串存放到 arr[]int i;char arr[3][10];for(i=0; i<3; i++){scanf("%s",arr[i]);}// 打印输出 arr[]for(i=0; i<3; i++){printf("\t%s\n",arr[i]);}
}// ubuntu终端:
gec@ubuntu:/mnt/hgfs/share$ ./a.out
zhangsan
lisi
wangwu zhangsanlisiwangwu

05 指针:

C语言中指针是一种数据类型,指针是存放数据的内存单元地址。

计算机系统的内存拥有大量的存储单元,每个存储单元的大小为1字节,为了便于管理,必须为每个存储单元编号,该编号就是存储单元的“地址”,每个存储单元拥有一个唯一的地址。

指针变量除了可以存放变量的地址外,还可以存放其他数据的地址,例如可以存放数组和函数的地址。

*

解引用符号

&

取地址符号

%p

打印地址类型

%ls

打印指针数据

指针变量的使用
1. 给指针变量赋值

格式:指针变量=地址型表达式

“地址型表达式”即运算结果是地址型的表达式。C语言规定,变量地址只能通过取地址运算符获得,即“&”,其运算对象是变量或数组元素名,运算结果是对应变量或数组元素的地址。

需要注意的是,虽然地址是一个整数,但是C语言中不允许把整数看成“地址常量”,所以此处的“地址型表达式”不能是整数。

2. 使用指针变量

格式:指针变量名

需要使用地址时,可以直接引用指针变量名。

3. 通过指针变量引用所指向的变量

格式:*指针变量名

“*指针变量名” 代表其指向的变量或数组元素,其中的“*”称为指针运算符。需要注意的是,这种引用方式要求指针变量必须已经定义且有值。

4. 指针的基本运算:

1. 取地址运算符 &

取地址运算符“&”的功能是取变量的地址,它是单目运算符。取地址运算符的运算对象必须是已经定义的变量或数组元素,但不能是数组名。运算结果是运算对象的地址。

2. 指针运算符 *

指针运算符“*”的功能是取指针变量所指向地址中的内容,与取地址运算符“&”的运算是互逆的,它是单目运算符。指针运算符的运算对象必须是地址,可以是已赋值的指针变量,也可以是变量或数组元素的地址,但不能是整数,也不能是非地址型的变量。运算结果就是地址对应的变量。

06 结构体使用

结构的意义:把多个类型变量整合成一个struct 结构体必须的单词

struct tag { member-list;member-list;member-list;...
} variable-list;
// struct:         结构体
// tag:            标签
// menber-list:    标准变量
// variable-list:  结构体变量
int num;
struct num;

结构体示例代码:

#include <stdio.h>struct student{
char *name;        //名字
int num;          //学号
char sex;         //性别
float height;     //身高
}zhangsan={"张三", 1, 'M', 190.66666};// jiegoutibianliang.xxx ————> 结构体 的 xxx属性   //并没有严格的规定!!!int main(){printf("info:   No.%d\n", zhangsan.num);
printf("name:   %s\n", zhangsan.name);
printf("sex:    %c\n", zhangsan.sex);
printf("height: %.2f\n", zhangsan.height);return 0;
}

结构体练习题目:

示例:

嵌入式接口技术基础(粤嵌教学)相关推荐

  1. WLGK-51单片机接口技术基础实验 —LED闪烁灯

    WLGK-51单片机接口技术基础实验--LED闪烁灯 当我们开始接触单片机,首先接触的第一个实验就是LED灯的使用,类似于我们学习软件开始接触的第一个程序"HelloWorld", ...

  2. WLGK-51单片机接口技术基础实验 ——LED闪烁灯

    WLGK-51单片机接口技术基础实验-LED闪烁灯 当我们开始接触单片机,首先接触的第一个实验就是LED灯的使用,类似于我们学习软件开始接触的第一个程序"HelloWorld",这 ...

  3. ARM嵌入式开发学习,粤嵌提出合理的学习方向

    学习ARM嵌入式有很多途径,一部分人通过自学,还有一部分人通过参加相关ARM嵌入式培训班学习.下面是粤嵌主要针对自学人群提出的关于学习ARM嵌入式开发的一点建议,希望对大家有所帮助! 学习ARM,从硬 ...

  4. 嵌入式接口技术(一)GPIO

    GPIO GPIO GPIO 模式 详解 应用场景 资料 GPIO GPIO 模式 模拟输入 浮空输入 下拉输入 上拉输入 开漏输出 只能输出低电平,类似于三极管的集电极,要输出高电平需要上拉电阻才能 ...

  5. 计算机组成原理mips描述,计算机组成原理与接口技术:基于MIPS架构/华中科技大学教学改革建设教材...

    <计算机组成原理与接口技术:基于MIPS架构/华中科技大学教学改革建设教材>以MIPS微处理器为背景,全面阐述了计算机组成原理与接口技术.首先简要阐述了计算机系统的基本构成.结构模型.工作 ...

  6. 中职计算机网络技术应用教学教案,计算机网络基础教案:计算机网络技术基础(中职教育)...

    计算机网络基础教案:计算机网络技术基础(中职教育) (11页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 第三章 计算机网络技术基础一X教学 ...

  7. 关于微型计算机原理的文献,关于微型计算机原理论文范文资料 与微型计算机原理和接口技术实验教学体系改革有关论文参考文献...

    <微型计算机原理和接口技术实验教学体系改革>:这是一篇与微型计算机原理论文范文相关的免费优秀学术论文范文资料,为你的论文写作提供参考. [摘 要] 本文结合上海星研微机原理实验教学仪器-S ...

  8. 计算机专业电子技术基础教学,计算机专业电子技术基础课程教学内容的组织

    计算机专业电子技术基础课程教学内容的组织 摘 要:电子技术基础课程是计算机专业的一门专业基础课,涵盖了基本电路分析.模拟电路分析及数字电路分析三大内容.本文针对课程教学中存在的问题,以提高学生对课程学 ...

  9. 粤嵌携手华工汽车学院举办嵌入式大赛

    粤嵌教育将与华南理工大学广州汽车学院(以下简称华工汽车学院)将再度携手,共同举办2012年大型嵌入式比赛.据了解,比赛将于12月14日下午两点在华工汽车学院举行,参赛人员由粤嵌培训基地学员和华工汽车学 ...

最新文章

  1. 双一流高校通知「19级硕士秋季学期不开学!」决定引热议,你怎么看?
  2. mysql事务怎么加排他锁_八种方法实现CSS页面底部固定 - SegmentFault 思否
  3. delphi 打包工具_每年帮你省钱20万的砖头打包方式,是你想要的吗?
  4. 【Android应用开发】Android 蓝牙低功耗 (BLE) ( 第一篇 . 概述 . 蓝牙低功耗文档 翻译)
  5. python—多进程之进程的创建(一)
  6. A query was run and no Result Maps were found for the Mapped Statement....
  7. JAVA排序算法之插入排序
  8. 基于ASP.NET的新闻管理系统(三)代码展示
  9. NSLayoutConstraint 使用详解 VFL使用介绍
  10. Transact-SQL 语法约定
  11. java 高级调试_多种高级debug方法,帮你更快定位问题
  12. tcpdump高级过滤
  13. 中兴面试题 01背包问题
  14. 打造平台化保险产业生态圈的四种模式
  15. Translation QA 检查
  16. java中的正则matches方法和find方法的区别
  17. MFC单文档之给主窗口添加背景图片
  18. 计算机打数据执行保护删除不掉,运行某应用程序时,出现数据执行保护 (DEP)提示的解决方案...
  19. Rust、D、Go三者的Pk1
  20. bison版本问题导致编译报错:‘parse.error‘ is not used

热门文章

  1. 使用AnalyticDB轻松实现以图搜图和人脸检索
  2. ROC曲线绘制(详细)以及模型选择
  3. 微信小程序获取当前位置并根据经纬度跳转地图导航
  4. json对象,java对象,json字符串,java字符串转换方式,没写的自己去看源码!
  5. 黑客攻防技术宝典(一)
  6. 三面阿里,offer到手定级P7,过程很艰辛结果很满意
  7. 关于角色的转变的思考
  8. 夫唯不争,天下莫能与之争
  9. mac os 10.12 Sierra 连接 惠普 M1136 MFP 打印机,通过 samba 协议,安装驱动,连接打印机...
  10. T149基于51单片机4层电梯控制器Proteus设计、keil程序、c语言、源码