> 技术文档 > 工作学习笔记(深圳xxx公司软件工程师助理)

工作学习笔记(深圳xxx公司软件工程师助理)


文章目录

    • stm32(正点原子教程)
      • 最小系统设计
        • 复位电路
        • 时钟电路(外部时钟)
        • BOOT启动模式电路
        • 下载电路
      • 开发板资源描述
      • stm32探索
      • 串口连接
        • ISP程序下载(FlyMcu)hex文件下载到开发板
      • St-LINK连接(侥幸说自己学会了怎么下载程序,谭总说小学生水平ovo)
      • stm32启动模式
      • 新建工程模板:寄存器版本(这里听的有点迷,准备试试江协的stm32教程)
      • HAL库入门
      • 新建HAL库工程
      • GPIO工作原理与配置(电路有遗留问题,搞不懂了转战野火了)
    • stm32教学(野火 7天入门stm32_HAL库版)
      • 总体了解
      • stm32CubeMX
      • 核心板与面包板
      • ARM和寄存器
    • grbl
    • 数电
      • 数制和码制
    • 模电
      • 半导体
    • Ubuntu
      • windows和ubuntu文件互传(FTP,没学会NFS)
      • vscode安装和远程连接
      • Qt5开发环境搭建
      • 交叉编译环境搭建(无敌含金量)
    • MobaXterm(linux设备的连接,以及qtUI如何显示在液晶上)
      • 原来可以在ubuntu的qt直接添加linux设备的
    • 开发板学习
      • LED
      • 按键
      • USB
      • TF卡
      • ADC
      • DHT11
    • qt任务
    • 将qtUI投射到开发板的液晶

stm32(正点原子教程)

最小系统设计

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

复位电路

工作学习笔记(深圳xxx公司软件工程师助理)
低电平持续一段时间,就会产生复位

时钟电路(外部时钟)

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

BOOT启动模式电路

工作学习笔记(深圳xxx公司软件工程师助理)

下载电路

工作学习笔记(深圳xxx公司软件工程师助理)
swd接口是程序调试最简单的接口

开发板资源描述

工作学习笔记(深圳xxx公司软件工程师助理)

stm32探索

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

串口连接

E:\\Keil_v5\\ARM\\STLink\\USBDriver
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

ISP程序下载(FlyMcu)hex文件下载到开发板

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

工作学习笔记(深圳xxx公司软件工程师助理)

St-LINK连接(侥幸说自己学会了怎么下载程序,谭总说小学生水平ovo)

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

stm32启动模式

工作学习笔记(深圳xxx公司软件工程师助理)

新建工程模板:寄存器版本(这里听的有点迷,准备试试江协的stm32教程)

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

为了让MDK知道头文件在哪
工作学习笔记(深圳xxx公司软件工程师助理)
把启动程序和头文件,add到keil让mdk能够识别,然后开始宏定义的工作
工作学习笔记(深圳xxx公司软件工程师助理)
在导入了启动文件和头文件之后,要把main函数也加入到工程中。
工作学习笔记(深圳xxx公司软件工程师助理)

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

工作学习笔记(深圳xxx公司软件工程师助理)

HAL库入门

工作学习笔记(深圳xxx公司软件工程师助理)

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

工作学习笔记(深圳xxx公司软件工程师助理)
Driver文件夹
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

新建HAL库工程

工作学习笔记(深圳xxx公司软件工程师助理)

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
好的,点了一下魔术棒,电脑被干死机了。。。。。。。。。。
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

GPIO工作原理与配置(电路有遗留问题,搞不懂了转战野火了)

工作学习笔记(深圳xxx公司软件工程师助理)

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

stm32教学(野火 7天入门stm32_HAL库版)

总体了解

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

stm32CubeMX

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

核心板与面包板

Serial Wire Debug
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

工作学习笔记(深圳xxx公司软件工程师助理)

ARM和寄存器

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

grbl

数电

数制和码制

工作学习笔记(深圳xxx公司软件工程师助理)
二进制与八进制转换,三位一组
二进制与十六进制转换,四位一组

模电

半导体

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

工作学习笔记(深圳xxx公司软件工程师助理)

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

工作学习笔记(深圳xxx公司软件工程师助理)

Ubuntu

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

windows和ubuntu文件互传(FTP,没学会NFS)

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

vscode安装和远程连接

工作学习笔记(深圳xxx公司软件工程师助理)

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

Qt5开发环境搭建

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
成功!
工作学习笔记(深圳xxx公司软件工程师助理)

交叉编译环境搭建(无敌含金量)

俩小时,干了一下午的精髓的活!~~~~~~~~~~~~~~~~~~~~~~~~~~~~
工作学习笔记(深圳xxx公司软件工程师助理)
粘贴是 ctrl + shift + v
工作学习笔记(深圳xxx公司软件工程师助理)
AI救我命啊!~~~
工作学习笔记(深圳xxx公司软件工程师助理)
ctrl + c 是终端编译的退出 输入:wq回车是保存
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

MobaXterm(linux设备的连接,以及qtUI如何显示在液晶上)

出现了乱码,不明白为什么,第一次搞这个…
工作学习笔记(深圳xxx公司软件工程师助理)
下午
串口驱动问题,让我看看怎么事!
串口驱动解决了
但是液晶不亮,谭总也没找到怎么装,下班了~~~~~~~~~~

晚上
液晶显示了,但是还是乱码,g~

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

工作学习笔记(深圳xxx公司软件工程师助理)
一直not found,问ai说是ssh服务的问题,感觉就这样吧,慢慢看这个板子的教学视频就能找到原因了应该。
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

原来可以在ubuntu的qt直接添加linux设备的

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
谭老板给我找了个张工,他说他之前做过这个,所以谭工也就是个老板了ovo
而且,张工回头给我了个pdf,让我自己看,说明他也不知道具体怎么解决这个问题。
我已经试过了pdf上面的所有方法,都没有成功,回头问张工,张工把pdf甩给我了:)

开发板学习

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

LED

工作学习笔记(深圳xxx公司软件工程师助理)

按键

USB

工作学习笔记(深圳xxx公司软件工程师助理)

TF卡

工作学习笔记(深圳xxx公司软件工程师助理)

ADC

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
​​ADC​​(Analog-to-Digital Converter,模数转换器)是一种将​​模拟信号​​(如电压、电流等连续变化的物理量)转换为​​数字信号​​(离散的数值)的硬件模块。它是嵌入式系统中连接现实世界(模拟量)与数字系统(如MCU、CPU)的关键桥梁。

DHT11

工作学习笔记(深圳xxx公司软件工程师助理)

qt任务

mainwindow.h

#ifndef MAINWINDOW_H#define MAINWINDOW_H#include #include #include #include #include #include #include #include #include #include #include QT_BEGIN_NAMESPACEQT_END_NAMESPACE// 自定义三角形按钮类class TriangleButton : public QPushButton{ Q_OBJECTpublic: enum Direction { UP, DOWN, LEFT, RIGHT }; TriangleButton(Direction dir, const QString &text, QWidget *parent = nullptr);protected: void paintEvent(QPaintEvent *event) override;private: Direction direction; QString buttonText;};class MainWindow : public QMainWindow{ Q_OBJECTpublic: MainWindow(QWidget *parent = nullptr); ~MainWindow();private slots: void onUpButtonClicked(); void onDownButtonClicked(); void onLeftButtonClicked(); void onRightButtonClicked(); void onReadButtonClicked();private: void setupUI(); // UI组件 QWidget *centralWidget; QVBoxLayout *mainLayout; QWidget *controlArea; QGridLayout *gridLayout; TriangleButton *upButton; TriangleButton *downButton; TriangleButton *leftButton; TriangleButton *rightButton; QPushButton *readButton;};#endif // MAINWINDOW_H

mainwindow.cpp

#include \"mainwindow.h\"#include // TriangleButton 实现TriangleButton::TriangleButton(Direction dir, const QString &text, QWidget *parent) : QPushButton(parent), direction(dir), buttonText(text){ setFixedSize(60, 60); setStyleSheet(\"QPushButton { border: 0px solid black; background-color: lightgray; }\"  \"QPushButton:pressed { background-color: darkgray; }\");}void TriangleButton::paintEvent(QPaintEvent *event){ QPushButton::paintEvent(event); QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); painter.setPen(QPen(Qt::black, 2)); painter.setBrush(QBrush(Qt::black)); QPolygon triangle; int centerX = width() / 2; int centerY = height() / 2; int size = 15; switch (direction) { case UP: triangle << QPoint(centerX, centerY - size) << QPoint(centerX - size, centerY + size) << QPoint(centerX + size, centerY + size); break; case DOWN: triangle << QPoint(centerX, centerY + size) << QPoint(centerX - size, centerY - size) << QPoint(centerX + size, centerY - size); break; case LEFT: triangle << QPoint(centerX - size, centerY) << QPoint(centerX + size, centerY - size) << QPoint(centerX + size, centerY + size); break; case RIGHT: triangle << QPoint(centerX + size, centerY) << QPoint(centerX - size, centerY - size) << QPoint(centerX - size, centerY + size); break; } painter.drawPolygon(triangle); // 绘制文本 painter.setPen(Qt::black); QFont font = painter.font(); font.setPointSize(10); painter.setFont(font); QRect textRect; switch (direction) { case UP: textRect = QRect(0, height() - 15, width(), 15); break; case DOWN: textRect = QRect(0, 0, width(), 15); break; case LEFT: textRect = QRect(width() - 20, 0, 25, height()); break; case RIGHT: textRect = QRect(0, 0, 15, height()); break; } painter.drawText(textRect, Qt::AlignCenter, buttonText);}// MainWindow 实现MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){ setWindowTitle(\"控制面板\"); setFixedSize(400, 300); setupUI(); // 连接信号和槽 connect(upButton, &QPushButton::clicked, this, &MainWindow::onUpButtonClicked); connect(downButton, &QPushButton::clicked, this, &MainWindow::onDownButtonClicked); connect(leftButton, &QPushButton::clicked, this, &MainWindow::onLeftButtonClicked); connect(rightButton, &QPushButton::clicked, this, &MainWindow::onRightButtonClicked); connect(readButton, &QPushButton::clicked, this, &MainWindow::onReadButtonClicked);}MainWindow::~MainWindow(){}void MainWindow::setupUI(){ // 创建中央widget centralWidget = new QWidget(this); setCentralWidget(centralWidget); // 创建主布局 mainLayout = new QVBoxLayout(centralWidget); // 创建控制按钮区域 controlArea = new QWidget(); controlArea->setStyleSheet(\"QWidget { border: 0px solid black; }\"); gridLayout = new QGridLayout(controlArea); // 创建方向控制按钮 upButton = new TriangleButton(TriangleButton::UP, \"y-\", this); downButton = new TriangleButton(TriangleButton::DOWN, \"y+\", this); leftButton = new TriangleButton(TriangleButton::LEFT, \"x-\", this); rightButton = new TriangleButton(TriangleButton::RIGHT, \"x+\", this); // 创建Read按钮 readButton = new QPushButton(\"Read\", this); readButton->setFixedSize(80, 40); readButton->setStyleSheet(\"QPushButton { border: 2px solid black; background-color: lightblue; }\" \"QPushButton:pressed { background-color: darkblue; color: white; }\"); // 布局设置 gridLayout->addWidget(upButton, 0, 1, Qt::AlignCenter); gridLayout->addWidget(leftButton, 1, 0, Qt::AlignCenter); gridLayout->addWidget(rightButton, 1, 2, Qt::AlignCenter); gridLayout->addWidget(downButton, 2, 1, Qt::AlignCenter); gridLayout->addWidget(readButton, 1, 3, Qt::AlignCenter); // 设置网格间距和边距 gridLayout->setSpacing(20); gridLayout->setContentsMargins(30, 30, 30, 30); mainLayout->addWidget(controlArea);}// 槽函数实现void MainWindow::onUpButtonClicked(){ qDebug() << \"Y- 按钮被点击\"; // 在这里添加你的Y-控制逻辑}void MainWindow::onDownButtonClicked(){ qDebug() << \"Y+ 按钮被点击\"; // 在这里添加你的Y+控制逻辑}void MainWindow::onLeftButtonClicked(){ qDebug() << \"X- 按钮被点击\"; // 在这里添加你的X-控制逻辑}void MainWindow::onRightButtonClicked(){ qDebug() << \"X+ 按钮被点击\"; // 在这里添加你的X+控制逻辑}void MainWindow::onReadButtonClicked(){ qDebug() << \"Read 按钮被点击\"; // 在这里添加你的Read功能逻辑}

谭工给画了一张图,然后我用ai写的,理解了之后,更改了数据,使得文字变得清晰。
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)

将qtUI投射到开发板的液晶

工作学习笔记(深圳xxx公司软件工程师助理)
工作学习笔记(深圳xxx公司软件工程师助理)