2021-4-13-半潜船杂项笔记

发布时间 2023-09-17 19:47:06作者: Yecgaa1

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

image-20210425214834036

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,可能是你没共地或者另一种情况

https://electronics.stackexchange.com/questions/272427/stm32-busy-flag-is-set-after-i2c-initialization

RCC时钟信号选择

BYPASS Clock Source(旁路时钟源)---有源
Crystal/Ceramic Resonator(晶体/陶瓷晶振)---无源

定时器中断进不去可能

//HAL_TIM_Base_Start(&htim2);//这个命令不能打开
HAL_TIM_Base_Start_IT(&htim2);//这个必须要有

定时器来计脉冲数

TIM ETR2外部输入

cubemx配置

image-20210428141152556

如果没有计数需要检查是否打开了计数器自动重载,其他都可以不用动

用另一个定时器开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.

这是一次在生成项目时的蓝屏事故,然后调试出现了这个问题

此时需要删除image-20210518223236506

遥控器混控器

混控器可以改变遥控器的通道输出是由什么决定的,比如由两个摇杆的值以一定比例叠加

遥控器最小值不一定对应电机最小值

如出现可反转电机,此时遥控器最小值(油门最小)对应的是最大反转

接收机的信号问题

当接收机没有连接到遥控器之前接收机不会输出任何数据

但是当接收机连接过遥控器后又断开,接收机仍会输出数据,一段时间后才会消失

uint8和unit16上限

  • UInt8-[0:255]
  • UInt16-[0:65535]
  • UInt32-[0:4294967295]
  • UInt64-[0:18446744073709551615]

所以要注意选类型,如果是代替布尔(其实可以直接用布尔),可以选择unit8

但是记录crr值用unit16或者更大的uint32