mdk compiler version 5

需求 新版本的 mdk 默认安装 v6 编译器,旧工程依赖 v5 编译器无法编译,需要解决。 解决 下载 v5 编译器 官网基本很难下载 第三方 csdn 下载 网盘 https://pan.baidu.com/s/1EgzGFCL7VflL9r6iJNj0sQ?pwd=5rhc 安装 安装可以和 mdk 安装到一起去,也可以安装到其他地方。 配置 点击魔棒右边的 file extensions. folder 标签 -> use arm compiler 右边的 … add compiler 选择你上一步安装的位置 close 使用 点击魔棒 target 标签 -> arm compiler 下拉,选择 v5.06… 参考 《 Arm Compiler 5.06 》__ARM编译器官网下载、安装和使用说明(小白也能懂) Keil5遇到:*** Target ‘xxx‘ uses ARM-Compiler ‘Default Compiler Version 5‘ which is not available. KEIL MDK5.37版本自行添加AC5(ARMCC)编译器

2023-10-23 · 1 min · 68 words · RamLife

STM32CubeIDE 使用 dap 通过 openocd 调试

需求 最近使用 stm32u575 芯片的时候,调试时发现很尴尬的问题, jlink 必须安装高版本,然后盗版的就不能用了。MDK 可以直接使用 DAPLink,但是 stm32cubeide 不能直接支持。所以需要想办法解决这个问题。 解决 参考了网上的资料,st 自带的 openocd 不能用,端口不对。 openocd 需要下载官方的 openocd,不要使用 stm32cubeide 自带的。下载地址: https://gnutoolchains.com/arm-eabi/openocd/ 。下载后自行安装。 配置 openocd stm32cubeide 菜单栏 -> Run -> External Tools -> External Tools Configrations -> Program 右键 -> New Configration. Name 自己输入。 Location: 选择刚才下载的 openocd 中的 openocd.exe 所在路径。 Arguments: -f interface\cmsis-dap.cfg -f target\stm32u5x.cfg apply 然后 Run. 配置 debug Run -> Debug Configurations -> GDB Hardware Debugging 右键 -> New Configuratin....

2023-10-10 · 1 min · 184 words · RamLife

QT qml和c++交互方式介绍

需求 qt 中 qml 和 c++ 中的类如何进行交互 解决 c++ 类注册到元对象系统 通过使用上下文属性,可以将C++对象嵌入到QML环境中。上下文属性适用于简单的应用程序。它们将您的对象导出为全局对象。在QML引擎实例化之后,上下文被暴露给QML环境。 调用函数 QQmlApplicationEngine engine; QmlCpp qmlcpp; // 先初始化一个类的实例 qmlcpp.setValue(898); // 设初值 // 将这个 C++ 实例注册到 Qml 引擎上下文中标示为 “qmlpro” 的名字, 这样 Qml 中就可以通过 qmlpro 来访问这个 C++ 实例。 engine.rootContext()->setContextProperty("qmlpro",&qmlcpp); class QmlCpp : public QObject { Q_OBJECT public: explicit QmlCpp(QObject *parent = nullptr); // Q_INVOKABLE: // Apply this macro to declarations of member functions to allow them to be invoked via the meta-object system....

2023-10-09 · 4 min · 775 words · RamLife

QT property 介绍

需求 qt 中 property 和 Q_PROPERTY 如何使用? 解决 qml 在 qml 中使用 property 来定义一个对象的属性。具体语法如下: [default] [required] [readonly] property <propertyType> <propertyName> 特性 类似于成员变量,不同的是可以初始化,并且没有public、private、 protected等限制。 可以使用 onXXXChnaged 作为这个属性的信号处理函数. property string someText onSomeTextChanged: console.log("The someText will be: " + someText) properName以一个小写字母开头,只能包括字母、数字和下划线。 propertyType可以是QML基本类型,enumeration以int来代替,也可以是QML对象类型,神奇的var类型是泛型的,支持任何类型的属性值. Item { property int theNumber property string theString property url theUrl property Item someItem property Rectangle someRectangle property var someNumber: 1.5 property var someString: "abc" property var someBool: true property var someList: [1, 2, "three", "four"] property var someObject: Rectangle { width: 100; height: 100; color: "red" } } 属性值可以被初始化,也可以使用JavaScript表达式来赋值,通过这两种方式赋值时,可以是一个静态值,也可以是一个与其它属性绑定的值。 Rectangle { id: rootRect property color theColor: "green" property color previousColor: rootRect....

2023-10-07 · 3 min · 497 words · RamLife

QT 连接 mysql 报错,找不到驱动

需求 使用 qt 连接 mysql 时报错,提示 QSqlDatabase: QMYSQL driver not loaded。 解决 qt 连接 mysql 的通道从上向下: qt 程序 qt 数据库插件即: qsqlmysql.dll 和 qsqlmysqld.dll mysql 库: libmysql.dll mysql 可执行文件: mysql.exe 检查是否有 qt 数据库插件 这种一般报错就是: QSqlDatabase: QMYSQL driver not loaded QStringList drivers = QSqlDatabase::drivers(); //获取现在可用的数据库驱动 foreach(QString driver, drivers) { qDebug() << driver; } 查看输入里面有没有 "QMYSQL", 如果没有,就需要按照 qt 官网的方法编译一个出来。 检查 mysql 库 这种一般的报错就是连接不上。 编译调试的时候,一般可以自动找到 libmysql.dll, 但是 release 的时候,就会缺少这个了。需要从 mysql 的安装目录下面的 lib 文件夹中,把这个库复制到 release 之后的文件夹内。...

2023-10-02 · 1 min · 137 words · RamLife

mysql 在 windows 下安装

需求 需要在 windows10 64bit 平台按照 mysql,记录安装过程。 解决 当前环境是企业版 windows, administrator 账户安装 mysql 8.0.34.0. 安装基本都是下一步,只有几个地方需要注意一下。 安装 setup type 选择 full type and networking 根据需要来选择。如果当前是开发机器,那就 development, 如果还需要跑其他软件的服务器,那就 server, 如果不跑其他,单纯是 mysql 服务器, 那就 dedicated. authentication 建议选择 legacy,便于和旧的客户端软件兼容。 accounts and roles 设置密码 apply configuration 这边可能在 starting the server 的时候会出错。具体解决方法见下一节。 connect to server 输入密码,进行验证。 installation complete 可以把安装后就启动的两个钩去掉。 问题 Failed to start service MySQL80: A task may only be disposed if it is in a completion state 右键 my computer -> manage -> services -> 右键 mysql80 -> properties -> log on 标签, 查看 this account 到底是哪个账户,我这里是 Network Service....

2023-10-01 · 1 min · 147 words · RamLife

二叉树介绍

需求 了解二叉树 解决 是什么 从根节点开始,小的向左边放,大的向右边放,一层一层放下去。满足左小右大原则。 没有子节点的是叶子 子节点的个数是度 从根到当前节点的为一路径上节点总数是深度 从当前节点到最远叶子路径上的节点总数是高度 用处 用于大数据量时的反复的搜索和插入。 有序链表: 查找成本大 O(N), 插入成本小 O(1) 有序数组: 查找成本小 O(1), 插入成本大 O(N) 排序二叉树: 比较折中,查找时类似于二分查找 O(logN), 插入成本也小 O(logN). 打印 层序遍历 public int[] levelOrder(TreeNode root) { int arr[]=new int[10000]; int index=0; Queue<TreeNode>queue=new ArrayDeque<>(); if(root!=null) queue.add(root); while (!queue.isEmpty()){ TreeNode node=queue.poll(); arr[index++]= node.val; if(node.left!=null) queue.add(node.left); if(node.right!=null) queue.add(node.right); } return Arrays.copyOf(arr,index); } 分层存储 public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>>list=new ArrayList<List<Integer>>(); if(root==null)return list; Queue<TreeNode>q1=new ArrayDeque<TreeNode>(); q1.add(root); while (!...

2023-08-16 · 3 min · 565 words · RamLife

c/c++ 解决打印缓冲

需求 c/cpp 解决打印缓冲 解决 c++ 直接使用 endl 即可立即输出。 c 以下几种都可以。 增加 \n setbuf(stdout, NULL) fflush(stdout) 参考 QT QProcess 使用及实时输出回显

2023-08-09 · 1 min · 19 words · RamLife

QT qprocess 调用进程,输出到文件,实时输出

需求 使用 QProcess 调用 ping, 并输出结果到文件,或者实时输出显示。 解决 调用进程 std::shared_ptr<QProcess> process_ = nullptr; process_ = std::make_shared<QProcess>(this); process_->start("ping www.baidu.com"); if (process_ != nullptr) { //process_->close(); process_->kill(); process_->waitForFinished(); process_ = nullptr; } close() 可以直接关闭子进程 kill() 用于向子进程发送 SIGKILL, 然后通过 waitForFinished() 来等待子进程退出。 输出到文件 在 start() 之前: process_->setStandardOutputFile("out.txt"); 实时输出显示 在 start() 之前: process_->setReadChannel(QProcess::StandardOutput); connect(process_.get(), &QProcess::readyRead, [=](){ qDebug() << process_->readAllStandardOutput(); }); 记得使用 closeReadChannel() 来关闭读取通道。 参考 QT QProcess 重定向问题 QProcess开启外部程序,实时获取该程序的标准输出 QProcess快速实现外部程序调用 Qt开发之路34—QProcess重定向子进程的日志输出 QT: 使用QProcess启动进程并实时获取标准输出 Qt 之启动外部程序

2023-08-09 · 1 min · 68 words · RamLife

QT 信号槽和回调函数的区别

需求 信号槽和回调函数区别 解决 方便 信号和槽相对更加方便。 回调函数和接口在每次使用的时候,都需要额外判断函数指针是否为空。 当需要回调多个函数的时候,还需要管理多个函数指针。 当调用和被调用中间隔了几个类,回调就会很麻烦,需要把指针一路传递过去。 速度 回调函数和接口这样直接使用的明显会更加快速,信号和槽会慢一些。曾经出现一个问题,使用信号和槽在断开连接时只打印一次,使用回调函数会打印两次,经过调试发现,使用信号和槽在调试模式也会打印两次。初步判断是信号虽然触发了两次,但是因为时间过短,所以导致只执行了一次槽函数。 参考

2023-07-28 · 1 min · 11 words · RamLife