layout: post
title: 4月份笔记
categories: 日志
tags:
- 开发
- 日志
BGImage: 'https://github.xutongxin.me/https://raw.githubusercontent.com/xutongxin1/PictureBed/master/img0/202020210504195730.png'
jekyll-theme-WuK:
musicid: '460119352'
USB软重启
拔出设备并执行以下命令
ls /sys/bus/usb/drivers/usb/
接入设备再次执行该命令
记录差异,比如 1-1
之后在不插拔的情况下执行
echo '1-1' | sudo tee /sys/bus/usb/drivers/usb/bind
启用设备;
echo '1-1' | sudo tee /sys/bus/usb/drivers/usb/unbind
禁用设备;
链接:https://www.zhihu.com/question/269627584/answer/358564001
Distclean
不仅有cmake clean的功能
还附加一个git回档的功能,所以平时慎用
用clean即可
vscode配置文件
//setting.json
"background.enabled": true,
"background.useDefault": false,
"background.customImages": [
"file:///C:\\Users\\星星\\Pictures\\87082023_p0.jpg"
],
"background.style": {
"content": "''",
"pointer-events": "none",
"position": "absolute",
"z-index": "99999",
"width": "100%",
"height": "100%",
"background-position": "center",
"background-repeat": "no-repeat",
"background-size": "100%,100%",
"opacity": 0.2
},
"kite.showWelcomeNotificationOnStartup": false,
"commentTranslate.targetLanguage": "zh-CN",
"editor.fontFamily": "Fira Code",
"editor.fontLigatures":true
//tasks.json
"label": "build",
"type": "shell",
"command": "/bin/bash",
"args": [
"-c",
"${command:cmake.tasksBuildCommand} upload"
],
"options": {
"cwd": "${command:cmake.buildDirectory}"
},
"group": "build",
"problemMatcher": {
"base": "$gcc",
"fileLocation": [
"relative",
"${command:cmake.buildDirectory}"
]
},
"presentation": {
"echo": false,
"showReuseMessage": false,
"clear": true,
"panel": "shared",
"group": "build"
}
},
{
"label": "nsh",
"type": "shell",
"key": "ctrl+shift+n",
"command": "./Tools/mavlink_shell.py /dev/ttyACM0",
"problemMatcher": []
},
{
"label": "clean",
"type": "shell",
"command": "make clean",
"problemMatcher": [],
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "ready",
"type": "shell",
"command": "/home/seabird/bin/cmake --no-warn-unused-cli -DCONFIG:STRING=px4_fmu-v2_default -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE:STRING=MinSizeRel -DCMAKE_C_COMPILER:FILEPATH=/opt/gcc-arm-none-eabi-9-2020-q2-update/bin/arm-none-eabi-gcc-9.3.1 -H/home/seabird/Project/PX4-Autopilot -B/home/seabird/Project/PX4-Autopilot/build/px4_fmu-v2_default -G Ninja",
"problemMatcher": [],
"group": "build",
"dependsOn": [
"clean"
]
},
vscode 管道不存在
win10默认openssh废物
改环境变量,删openssh,加git的ssh
移植uart程序
https://blog.csdn.net/oqqENvY12/article/details/57131022
CMakeLists.txt中
DEPENDS 中删去 platforms__common
rw_uart.c中
删去#include <systemlib/systemlib.h>
配置自定义msg文件
添加.msg
然后编译时会在bulid产生对应的.h,此时vscode在引用该信息时会报错但不影响(由于build文件夹默认不检索)
https://blog.csdn.net/Lin_QC/article/details/84550743
其中比较重要的几句
1. # 和 topics 之间有空格
2. topics 之后的第一个主题必须与 文件名相同
3.timestamp 这个字段必须添加不然之后的make会报错
文件名和内容相同就一样吗
不一定
你的内容的定义必须是完全一致,md5一致
vscode比较就是相同但md5不同
MusicTime绑定错误
https://raw.githubusercontent.com/xutongxin1/PictureBed/master/img0/image-20210425214834036.png
I2C地址获取
for (uint8_t i = 0; i < 255; i++) {
if(HAL_I2C_IsDeviceReady(&hi2c1,i,1,1000)==HAL_OK)
printf("OK");
}
如果发现255个地址都没有且发现HAL_I2C_IsDeviceReady都是HAL_Busy,可能是你没共地或者另一种情况
RCC时钟信号选择
BYPASS Clock Source(旁路时钟源)---有源
Crystal/Ceramic Resonator(晶体/陶瓷晶振)---无源
定时器中断进不去可能
//HAL_TIM_Base_Start(&htim2);//这个命令不能打开
HAL_TIM_Base_Start_IT(&htim2);//这个必须要有
定时器来计脉冲数
TIM ETR2外部输入
cubemx配置
如果没有计数需要检查是否打开了计数器自动重载,其他都可以不用动
用另一个定时器开1s中断来检查这个值
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if (htim == (&htim2))
{
a+=htim1.Instance->CNT;
htim1.Instance->CNT=0;//这种复位是有效的
}
}
1s定时器数值
7199*9999
PWM是ARR/CRR,所以ARR可以设置9999
电调
电调是个毒瘤玩意
电调有指定的信号输入要求,如:50Hz频率
电压不是说0v就不转,3.3v满转。而是一定电压范围
一般是1500中值不转(arr9999),1500-2000正传,1000-1500反转
但也有例外的,如手头上的
300左右转(143crr/9999arr,此时对应50Hz)
也是300左右不转和满速(630crr就不转了)
但是不转不代表立即停止,还要减速
而且CRR633能转,但是633不能启动
还有就是
需要电机反转应该先减速再反转,否则电流过大会烧坏电调
最后
记得共地
多声明
对于普通函数
h文件extern,c文件正常
对于结构体
c文件定义结构体内部包含啥,h文件extern struct xxx xxx;
CNT是啥
首先72M的时钟信号会进入PSC预分频,假设PSC为71,那么每收到71+1个时钟信号时CNT就会+1,直到达到ARR就产生中断,此时如果打开自动重载就会让CNT回到0
好,再来梳理一下。进入中断的频率就是CNT累加到ARR的次数,而CNT累加必须和PSC有关,所以中断次数就是72*10^6/(PSC+1)/(ARR+1)
com.jetbrains.cidr.execution.debugger.backend.gdb.GDBDriver$GDBCommandException: Remote communication error. Target disconnected.: No error.
这是一次在生成项目时的蓝屏事故,然后调试出现了这个问题
此时需要删除
遥控器混控器
混控器可以改变遥控器的通道输出是由什么决定的,比如由两个摇杆的值以一定比例叠加
遥控器最小值不一定对应电机最小值
如出现可反转电机,此时遥控器最小值(油门最小)对应的是最大反转
接收机的信号问题
当接收机没有连接到遥控器之前接收机不会输出任何数据
但是当接收机连接过遥控器后又断开,接收机仍会输出数据,一段时间后才会消失
uint8和unit16上限
- UInt8-[0:255]
- UInt16-[0:65535]
- UInt32-[0:4294967295]
- UInt64-[0:18446744073709551615]
所以要注意选类型,如果是代替布尔(其实可以直接用布尔),可以选择unit8
但是记录crr值用unit16或者更大的uint32