概述
关键字
1.static
定义变量:在下一次函数执行时该变量保持不变,并且源文件的所有函数都可以使用它
定义函数:1)其他文件中可以定义相同名字的函数,不会发生冲突 2)静态函数不能被其他文件所用。
例子:
2.extern
定义变量: 只在头文件中做声明,在.c文件里面使用时需引用一下头文件。
例:
(1) 在 test1.h 中有下列声明:
#ifndef TEST1H
#define TEST1H
extern char g_str[]; // 声明全局变量g_str
void fun1();
#endif
(2) 在 test1.cpp 中
#include "test1.h"
char g_str[] = "123456"; // 定义全局变量g_str
void fun1() { cout << g_str << endl; }
(3) 以上是 test1 模块, 它的编译和连接都可以通过。
如果我们还有 test2 模块也想使用 g_str , 只需要在原文件中引用就可以了
#include "test1.h"
void fun2() { cout << g_str << endl; }
定义函数:如果你想在本源文件中使用另一个源文件的函数,就需要在使用前用声明该函数,声明函数加不加extern都没关系,所以在头文件中函数可以不用加extern。
3.union联合体,枚举类型emua
- 为什么使用union?
1.解决“相同信息”的困扰,避免重复代码,提高代码的简洁性。
相同成员公用,差异成员则通过 union 区分,这就避免了代码重复,也避免了代码耦合。
2.节省内存
例子:(28条消息) C语言union的用法及好处_rchris520的博客-CSDN博客_union的作用
注:普通结构体占有的空间为所有变量的总和,而union只占有最高位的空间。
枚举:每个值自动赋值0,1,2,3,4,5......
4.typedef
(28条消息) 关于typedef的用法总结_艾斯曼的博客-CSDN博客_typedef的用法
初始单片机与IO口
执行: 把LED一端接到GND上,另外一端接到lo上,让IO口输出0的时候,led灯就不会亮,但是输出高电平就会亮。(MCU微控制器),对IO口需进行配置。
各种热敏电阻:将物理量转换为电压值传给单片机
寄存器的基本认知:
{1.GPIO基本结构与T作方式
引脚的功能:1.输入输出电压(驱动)2.输出某个特殊信号(查芯片手册)
四种输入模式: 1.输入浮空2.输入上拉3.输入下拉4.模拟输入
四种输出模式:1.开漏输出(带上或下拉)2.开漏复用功能(带上或下拉)3.推挽输出(带上或下拉)4.推挽复用功能(带上或下拉)
四种速度:2MHZ,25MHZ,50MHZ,100MHZ
八种工作模式:模拟输入 浮空输入 下拉输入 上拉输入 开漏输出 推挽输出 复用开漏输出 复用推挽输出
概念:
1.5V容忍:用于保护电路,防止被烧坏
2.浮空输入:外部引脚直接进入施密特触发器,直接进入芯片读取。一般用于通讯。
3.上拉输入:可以让内部稳定接收到高电压,对低电压敏感。
4.下拉输入:对高电压敏感
5.模拟输入:不经过施密特触发器,用于模数转换,可以准确的读到实际电压。
6.推挽输出:用于电压驱动类控制,可以稳定的输出电压。
7.开漏输出:用于电流驱动类型控制,(一般不用),用于电压转换可以将io从3.3v升为供电电压(5v),这个需要上拉。}
计时器:通过改变高低电平的时间,就能改变电压。PWM(占空比)
测试使用的是pid算法
无反馈--开环 有反馈--闭环 P--输入与目标误差值 I--积分 D--微分
例:当步兵云台与对方的哨兵机器人角度相差值不是0时,则使用pid算法
反馈:1.角度反馈2.速度反馈
通过编码器来采集频率可以得到速度,知道高低电平的频率,形成波传给单片机
例子:
AB---差了一个相位,用来获取方向 Z-- 用来获知圈数
通信(数据传输)
例:遥控器用无线通信通过接收机传输给单片机
协议:与单片机约定什么时候开始发送,什么时候停止发送等
串口通信(USART):使用二进制,具备占用传输线数量少、长距离传输时成本低的优点;但数据传输控制相比于并行通信复杂。
并行通信:控制简单、传输速度快;但由于其占用数据线过多,长距离传输数据时成本较高,且接受设备出同时接收数据时容易出现错位即抗干扰能力弱。
异步通信:实现容易、成本低;传输效率不高。
CAN通信:CAN通信只由两根线完成的,一条称为CAN_H(CAN High),一条称为CAN_L(CAN Low),共同构成一组差分信号线。
使用CAN总线共享,减少线路,方便排查;一个CAN总线上的所有器件通讯速率必须相同。(28条消息) STM32 CAN通信的学习笔记总结(从小白开始)_从心开始 >的博客-CSDN博客_can通讯原理
引脚:TX、RX、VCC、GND
步兵机器人控制串讲
1.LED灯:用来提示,判断程序是否正常执行
2.按键:切换红蓝模式
3.串口通信+DMA
使用电机:得到的是云台的相对角度
使用陀螺仪:得到的是云台的绝对角度
底盘跟随:云台转动后底盘与之产生的角度差值,即p(误差值),目标角度为0度。
底盘的绝对角度:云台的绝对角度-云台与底盘的相对角度;
云台跟随:不需要使用pid算法,云台会自动跟随。
最后
以上就是想人陪学姐为你收集整理的RM机器人控制导论的全部内容,希望文章能够帮你解决RM机器人控制导论所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复