- 博客(24)
- 资源 (5)
- 收藏
- 关注
原创 STM32 BKP备份寄存器介绍
1. BKP可以用来保存数据 BKP中包括了42个16位的寄存器,共可保存84字节的内容,它们由VBAT的供电来维挂。2. BKP内保存的数据可以被毁灭(如果有人希望恶意得到这些数据的话,令其丢失比保护数据更重要)。STM32提供了一种称之为TAMPER的机制来完成。中文译为“侵入检测”,这需要占用一个外部引脚(PC13)。3. 如果不用侵入检测功能,那么这个外部引脚可以用作RTC校准功能,这个稍后再研究。4. 当有系统复位/电源复位/待机模式下被唤醒这三种情况时,BKP...
2021-12-09 08:40:24
3970
原创 STM32 外设操定的步骤
STM32的所外设都在两个总线上面,面对不同外设我们首先需要对它进行使能操作,这样才可以使用或操作对应的外设。1、第一点必须对设备进行使能。2、设置外设的时钟3、操作外设附外设操作LL函数:(1)、AHB总线下面的所有外设操作函数:LL_AHB1_GRP1_PERIPH_ALLLL_AHB1_GRP1_PERIPH_DMA1LL_AHB1_GRP1_PERIPH_DMA2LL_AHB1_GRP1_PERIPH_SRAMLL_AHB1_GRP1_PERIPH_F...
2021-12-07 14:12:38
941
原创 LL_FLASH_SetLatency 闪存存取的设置
闪存的指令和数据访问是通过AHB总线完成的。预取模块是用于通过ICode总线读取指令的。仲裁是作用在闪存接口,并且DCode总线上的数据访问优先。读访问可以有以下配置选项:● 等待时间:可以随时更改的用于读取操作的等待状态的数量。● 预取缓冲区(2个64位):在每一次复位以后被自动打开,由于每个缓冲区的大小(64位)与闪存的带宽相同,因此只通过需一次读闪存的操作即可更新整个缓冲区的内容。由于预取缓冲区的存在, CPU可以工作在更高的主频。 CPU每次取指最多为32位的字,取一...
2021-12-06 15:28:07
1517
原创 IAR : Failed the search for probes,ensure that the USB drives are installed 问题解决
1、用STM32CubeMX生存代码后,选择了调试工具为JTAG方式:2、进入程序,直接试下载运行一下,结果:3、问题解决:在项目的Option中,【debug】选择【Jlink/trace】就这么简单,结果还坑半天,!!!!...
2021-12-03 16:36:19
5635
原创 STM32的时钟系统
什么是时钟时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令。时钟系统就是CPU的脉搏,决定cpu速率,像人的心跳一样 只有有了心跳,人才能做其他的事情,而单片机有了时钟,才能够运行执行指令,才能够做其他的处理 (点灯,串口,ADC),时钟的重要性不言而喻。2、为什么 STM32 要有多个时钟源呢?STM32本身十分复杂,外设非常多 但我们实际使用的时候只会用到有限的几个外设,使用任何外设都需要时钟才能启动,但并不是所有的外设都需要系统时钟那么高的频率,为了兼容不同.
2021-12-03 11:43:36
2295
原创 STM32 GPIO寄存器操作步骤
寄存器操作(GPIO)1)、配置时钟:查询寄存器属于那个总线,APB1还是APB2, 此时需要配置总线的时候,当外设时钟没有启用时,软件不能读写外设寄存器数值。返回值始终为0x00.GPIO以如下方式开启时钟: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//开启GPIOA2)、配置GPIO的引脚的工作模式设置 (1)、GPIO有4种输入状态,4种输出状态:...
2021-12-02 17:23:44
3202
原创 QT 关于QSerailPort 数据收不完全的完美解决方案
Qt 官方串口库QSerialPort的 readyRead() 信号,只要有数据就抛出,这就导致一条数据分多次抛出。由于正常的数据没有固定的开头和结尾,这就导致无法获取正常的一组数据。下面是示例代码:1、打开串口的操作代码: m_pSerialPort->setPortName(m_szComPort); m_pSerialPort->setBaudRate(m_eRate); m_pSerialPort->setDataBits(m_eDataBtis);
2020-08-06 11:52:38
1574
原创 QLineEdit 只能输入数字检验方法
void QLineEdit::setValidator(const QValidator *v)Sets this line edit to only accept input that the validator, v, will accept. This allows you to place any arbitrary constraints on the text which may ...
2020-04-09 09:23:44
1715
1
原创 QT 通信CRC校验
1、头文件(不需说太多)#ifndef YTEP_COMM_MATHCTRL_H#define YTEP_COMM_MATHCTRL_H#include <QByteArray>#include <QMessageBox>class YTEP_COMM_MathCtrl{public: YTEP_COMM_MathCtrl();public: ...
2020-03-28 16:49:17
2551
原创 QHBoxLayout,QVBoxLayout的setStretch的作用
个horizontalLayout中的两个QTextEdit控件按2:3的比例扩大或缩小时其实很简单.void QBoxLayout::setStretch(int index, int stretch)Sets the stretch factor at position index. to stretch.This function was introduced in Qt 4.5...
2020-03-24 08:55:07
4671
原创 QT 界面编程中用new创建的控件后是否要delete的问题
一般情况下我们用C++编程的时候,如果用new来创建对象,用完后必须用delete把创建的对象删除,如果不删除就会导致内存泄漏。在QT界面设计中控件如果是new出来的不可避免要涉及到要delete的问题,但是如果我们把它删除了,会导致程序出现问题。如下所示:YTEP_UI_DevicePotAutoAddDlg::YTEP_UI_DevicePotAutoAddDlg(QWidget *par...
2020-03-16 17:53:32
3427
2
原创 Qt 自定控件的信号槽实现示例
一般用Qt进行软件开发时,经常使用信号+槽的方式进行函数动作相应。方法一般有两种:利用designer设置信号/槽函数后,源文件在slots里面直接写函数实现直接使用程序connect函数,在源码里面添加关联上述两种方法,对于一般的动作相应都能实现。但对于不同窗口之间的消息传递可能会有问题!例如,有窗口1和窗口2,点击窗口1中某按钮,窗口2中进行某函数动作。对于这种情况,我们常采用emi...
2020-03-04 16:09:18
582
转载 QT QPushButton 通过stylesheet 设置样式
1.QT QPushButton 通过stylesheet 设置样式ui->pushButton->setStyleSheet("QPushButton{background-color:rgba(255,178,0,100%);\ color: white; border-radius: 1...
2020-03-02 18:00:04
2003
转载 QT中的explicit关键字的意思
QT中的explicit关键字的作用c++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数),承担了两个角色。一是个构造器,二是个默认且隐含的类型转换操作符。所以,有时候在我们写下如 AAA = XXX, 这样的代...
2020-02-27 09:10:40
1598
原创 Qt 打开SQLite用数据时出现 Driver not loaded
由于Qt对SQLite数据库的支持最好(其他数据库驱动好像要收费),因此我们首先SQLite作为数据库开发。当开发完成后,我们要将生成的exe打包,然后放到其他机器上运行。打包的过程很简单,就是将exe与它所需要的动态库(dll)放在同一个文件夹下。而一切就绪后,我们尝试运行exe,结果提示“sqlite driver not load”的问题。这个问题让我头痛了好久,经过网上搜索我终于找到了解决...
2020-02-21 15:46:11
7740
4
原创 Qt 数据库编程出现 :error: undefined reference to
QT Creator编译程序出现以下错误:ytep_db_database.o: In function ZN16YTEP_DB_DataBaseC2Ev': ytep_db_database.cpp:11: undefined reference to_imp___ZN12QSqlDatabaseC1Ev’ytep_db_database.o: In function ZN16YTEP_DB...
2020-02-20 15:30:03
2480
原创 Qt SQL的使用简介
一、开始在头文件中加入#include <QtSQL>二、在Pro文件中加入QT += sql这样就可以和程序中使用QSqlDataBase连接数据库了,如果不加入 “ QT += sql " ,编译时会出现 “ rror: undefined reference to… " 的错误,切记!!!...
2020-02-15 14:50:25
473
转载 QT .pro文件 LIBS用法详解
在程序中需要使用到团队其它成员开发的静态库和动态库,起初是知道使用LIBS变量在在.pro文件中指定需要包含的库,但是实际使用的时候却遇到很大麻烦,但其实确实是因为自己看官方文档不太用心造成的。下面是官方文档对于LIBS变量的使用说明:这段话对于LIBS的使用说的很清楚了,就是-L指定库的目录,而-l指定库的名字(如果是在Linux下,则去掉lib和后缀名,windows下去掉后缀名...
2020-02-15 14:09:47
786
转载 Linux命令大全
系统信息arch 显示机器的处理器架构(1)uname -m 显示机器的处理器架构(2)uname -r 显示正在使用的内核版本dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)hdparm -i /dev/hda 罗列一个磁盘的架构特性hdparm -tT /dev/sda 在磁盘上执行测试性读取操作cat /proc/cpuinfo 显示CPU info...
2020-01-19 21:49:53
109
原创 让你的软件速度飞起来
软件速度取决于算法同样的事情,方法不一样,效果也不一样。比如,汽车引擎,可以让你的速度超越马车,却无法超越音速;涡轮引擎,可以轻松超越音速;却无法飞出地球;如超越音障,却无法飞出地球;如果有火箭发动机,就可以到达火星。在软件设计过程中,有时我们只在乎有好的语法结构,有完美的注释,而往往不注重软件的优化,算法的科学,从而导致软件运行过程看似没有任何问题,可运行结果确走很多不必要的道路,往往在大的...
2020-01-18 22:33:48
345
原创 Windows精确时间获取方法
Windows精确时间获取方法很多时候,我们需要计算两个运行过程间计算机需要耗时多少,一般情况下我们采用GetTickcount函数:它返回从操作系统启动到当前所经过的毫秒数,常常用来判断某个方法执行的时间,其函数原型是DWORD GetTickCount(void),返回值以32位的双字类型DWORD存储,因此可以存储的最大值是(2^32-1) ms约为49.71天,因此若系统运行时间超过49...
2020-01-17 23:36:55
1049
緩沖溢出原理.rar
2020-08-04
SQLite数据库查询器.rar
2020-02-24
BCB6(BorlandC++Builder6.0编译器)
2012-11-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人