目录
1.STL六大部件
2.STL容器
3.汇编
4.基于Freertos工训机器人面试
5.opencv常用函数
6.陀螺仪模块 JY901B
7.增量式与位置式PID区别:
8.MQTT
12.描述一下gcc的编译过程?
13.内存的最⼩存储单位以及内存的最⼩计量单位分别是?
14.#include<> 与#include ""的区别?
15.变量的声明与定义有啥区别?
16.描述⼀下32位或64位平台下指针的⼤⼩
17.哪些情况下会出现野指针
18.git流程?
19.linux基本命令?
20.c语言三大结构
21.结构体和联合体的区别
22.字符串常用函数
23.C语言的文件操作
1.STL六大部件
分配器 迭代器 适配器 容器 算法 仿函数
2.STL容器
vector,deque,list,forward_list,array
STL容器适配器:
stack,queue,priority_queue
关联式容器
set,map
3.汇编
GNU汇编使用于I.MX6ULL,汇编程序的默认入口标号是_start
处理器内部数据传输指令
MOV,MRS,MSR
存储器访问指令
LDR,STR
汇编语言直接对应机器指令,I.MX6ULL中用汇编语言设置好C环境,比如初始化DDR,设置SP指针。
4.基于Freertos工训机器人面试
这个项目是我参加的一个比赛过程中做的。其结构和主控都是我们自制,利用串口控制机械臂,使用树莓派的opencv库来进行识别,使用陀螺仪和pid来控制直行,用pid调节电机速度。并且对于工训车的设计,我们也花了不少功夫,1. 我们使用了三个电源,一个给树莓派供电,一个给电机驱动模块供电,一个其他供电,目的主要是防止电机转动时对单片机或树莓派产生影响 2. 车体,我们是采用的三层亚克力板搭成的工训车,全封闭的,防止灰尘或外部环境对主控或其他模块造成影响。3.还有模块的选择上,F4串口和定时器是最符合这次比赛需求的,以及串口屏和串口舵机,会使得项目程序设计简单合理。
5.opencv常用函数
#开启摄像头
cap = cv2.VideoCapture(1)
#设置分辨率 VGA(640*480)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)frame = cv2.flip(frame, 0) # 镜头上下反转
frame = cv2.flip(frame,1) #镜头水平翻转#转换成HSV
hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
#转换成灰度
gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)可以使用cv2.imread()函数读取图像,使用cv2.imshow()函数显示图像。
6.陀螺仪模块 JY901B
陀螺仪分为三轴,六轴,九轴,主要功能分别是三轴加速度,三轴角速度(陀螺仪),三轴地磁计。
7.增量式与位置式PID区别:
1增量式算法不需要做累加,而位置式算法要用到过去偏差的累加值。
2增量式算法得出的是控制量的增量, 而位置式的输出直接对应对象的输出。
3增量式PID控制输出的是控制量增量,并无积分作用,因此该方法适用于执行机构带积分部件的对象,如步进电机等,而位置式PID适用于执行机构不带积分部件的对象,如电液伺服阀。
4在进行PID控制时,位置式PID需要有积分限幅和输出限幅,而增量式PID只需输出限幅
8.MQTT
MQTT是一种基于TCP的发布/订阅协议,基本所有的云平台都支持设备以MQTT协议接入,如果你的设备支持MQTT连接,所以很容易的对接各云平台
12.描述一下gcc的编译过程?
分为四个阶段:预处理,编译,汇编,链接
预处理:头文件包含,宏替换,条件编译,删除注释
编译:主要进行词法,语法,语义分析等,检查无误后将预处理好的文件编译成汇编文件
汇编:将汇编文件转换成二进制目标文件
链接:将项目中的各个二进制文件+所需的库+启动代码链接成可执行文件
13.内存的最⼩存储单位以及内存的最⼩计量单位分别是?
最⼩存储单位是二进制位,内存的最⼩计量是字节
14.#include<> 与#include ""的区别?
include<>到系统指定目录寻找头文件,#include ""在项目所在目录查找文件,如果没有再到系统指定目录查找
15.变量的声明与定义有啥区别?
声明不需要建立存储空间,定义建立存储空间
16.描述⼀下32位或64位平台下指针的⼤⼩
32位平台:任意类型的指针⼤⼩为4字节
64位平台:任意类型的指针⼤⼩为8字节
17.哪些情况下会出现野指针
指针变量未初始化、指针释放后未为置空、指针操作超越变量作⽤域
18.git流程?
同步远程仓库代码:git pull
查看当前状态:git status
提交代码到本地git缓存区:git add
推送代码到本地git库:git commit
提交本地代码到远程仓库:git push
19.linux基本命令?
pwd:用于显示用户当前所处的目录
cd:用来在不同的目录中进行切换
ls:用来列出文件或目录信息
cat:查看文件内容
mkdir:创建一个目录
mv:用于文件或目录的移动或改名
touch:建立文件或更新文件的修改日期
reboot:重新启动系统
echo:在终端输出字符串或变量提取后的值
常用解压缩命令
gzip和gunzip
gzip 文件
gunzip 文件.gz
zip和unzip指令
zip [选项] 文件.zip 要压缩的文件或者目录
unzip [选项] 文件.zip
tar指令
该指令为打包指令,最后打包的文件是x.tar.gz文件(既可以压缩,也可以解压缩).
20.c语言三大结构
选择,顺序,循环结构。选择结构常用的有:if和switch
21.结构体和联合体的区别
结构体各成员各自拥有自己的内存,各自使用互不干涉。联合所占的内存大小为空间内最大内存成员的内存大小;联合内的成员占用同一个内存空间
22.字符串常用函数
strlen函数(求字符串长度函数)
strcpy函数(字符串拷贝函数)
strcat函数(字符串拼接函数)
strcmp函数(字符串比较函数)
strstr函数
23.C语言的文件操作
定义文件指针
//FILE类型
int *p;
FILE* pf=NULL;
//fopen(int* fp)
fopen函数,文件打开
//fclose(int* fp)
fclose函数,文件关闭
字符输入函数 fgetc 所有输入流
字符输出函数 fputc 所有输出流
文本行输入函数 fgets 所有输入流
文本行输出函数 fputs 所有输出流
格式化输入函数 fscanf 所有输入流
格式化输出函数 fprintf 所有输出流
二进制输入 fread 文件
二进制输出 fwrite 文件