工作学习笔记(深圳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(正点原子教程)
最小系统设计
复位电路
低电平持续一段时间,就会产生复位
时钟电路(外部时钟)
BOOT启动模式电路
下载电路
swd接口是程序调试最简单的接口
开发板资源描述
stm32探索
串口连接
E:\\Keil_v5\\ARM\\STLink\\USBDriver
ISP程序下载(FlyMcu)hex文件下载到开发板
St-LINK连接(侥幸说自己学会了怎么下载程序,谭总说小学生水平ovo)
stm32启动模式
新建工程模板:寄存器版本(这里听的有点迷,准备试试江协的stm32教程)
为了让MDK知道头文件在哪
把启动程序和头文件,add到keil让mdk能够识别,然后开始宏定义的工作
在导入了启动文件和头文件之后,要把main函数也加入到工程中。
HAL库入门
Driver文件夹
新建HAL库工程
好的,点了一下魔术棒,电脑被干死机了。。。。。。。。。。
GPIO工作原理与配置(电路有遗留问题,搞不懂了转战野火了)
stm32教学(野火 7天入门stm32_HAL库版)
总体了解
stm32CubeMX
核心板与面包板
Serial Wire Debug
ARM和寄存器
grbl
数电
数制和码制
二进制与八进制转换,三位一组
二进制与十六进制转换,四位一组
模电
半导体
Ubuntu
windows和ubuntu文件互传(FTP,没学会NFS)
vscode安装和远程连接
Qt5开发环境搭建
成功!
交叉编译环境搭建(无敌含金量)
俩小时,干了一下午的精髓的活!~~~~~~~~~~~~~~~~~~~~~~~~~~~~
粘贴是 ctrl + shift + v
AI救我命啊!~~~
ctrl + c 是终端编译的退出 输入:wq回车是保存
MobaXterm(linux设备的连接,以及qtUI如何显示在液晶上)
出现了乱码,不明白为什么,第一次搞这个…
下午
串口驱动问题,让我看看怎么事!
串口驱动解决了
但是液晶不亮,谭总也没找到怎么装,下班了~~~~~~~~~~
晚上
液晶显示了,但是还是乱码,g~
一直not found,问ai说是ssh服务的问题,感觉就这样吧,慢慢看这个板子的教学视频就能找到原因了应该。
原来可以在ubuntu的qt直接添加linux设备的
谭老板给我找了个张工,他说他之前做过这个,所以谭工也就是个老板了ovo
而且,张工回头给我了个pdf,让我自己看,说明他也不知道具体怎么解决这个问题。
我已经试过了pdf上面的所有方法,都没有成功,回头问张工,张工把pdf甩给我了:)
开发板学习
LED
按键
USB
TF卡
ADC
ADC(Analog-to-Digital Converter,模数转换器)是一种将模拟信号(如电压、电流等连续变化的物理量)转换为数字信号(离散的数值)的硬件模块。它是嵌入式系统中连接现实世界(模拟量)与数字系统(如MCU、CPU)的关键桥梁。
DHT11
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写的,理解了之后,更改了数据,使得文字变得清晰。
将qtUI投射到开发板的液晶