自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 STM32F103C8T6的SPI收发数据错误的问题

项目场景:本人最近在做一个STM32F103C8T6的两个SPI模块自通信实验,旨在验证SPI收发数据的正确性。即事先设定好两个SPI模块发送的值,通过ST-LINK单步调试观察单片机内部寄存器的值。待发送的数据如下:同时定义两个SPI的接收数组:问题描述单片机全速运行时,发现传输结果中出现了数据错误:下图为单步调试中,两个SPI模块数组的接收内容:很明显和发送数据不匹配。原因分析:参考了网上的一些解决方案,有人说是因为在watch窗口中观察了SPIx->DR或

2022-05-22 14:46:42 3865 1

原创 STM32F103C6T6的两个SPI模块自通信实验中SPI2无法工作的问题

项目场景:最近打算用STM32的最小系统版进行SPI通信实验,想首先验证SPI工作是否正常及观察收发数据是否正确,便进行STM32F103上SPI1和SPI2自通信。问题描述利用单步调试观察SPI1和SPI2寄存器的值,发现SPI1中各个寄存器的值符合预先设定,SPI2中寄存器的值都为零。(0x40013000是SPI1的存储器映像地址,0x40003800是SPI2的存储器映像地址)原因分析:首先检查了SPI1和SPI2时钟及所在管脚的时钟是否开启,代码如下: /* 打开GPIOA

2022-05-22 12:15:34 2683

原创 STM32用ST-LINK无法单步调试的解决方案

项目场景:本人在刚接触STM32F103C6T6时,用USB转TTL转换器,通过串口下载程序,运行LED灯点亮程序,可以正常运行。问题描述但是用ST-LINK在Keil5软件上进行单步调试的时候,程序执行不到断点处,无法正常进行单步调试。原因分析:通过串口下载程序,和通过ST-LINK单步调试,单片机的启动方式是不同的。解决方案:之前通过串口下载程序时,BOOT0选择1引脚,BOOT1选择0管脚;那么要通过ST-LINK单步调试时,需要把启动方式改成:BOOT0选择0引脚,BOOT1

2022-04-29 17:17:01 2125

原创 关于model->removeRow(i)无法删除数据库指定行的问题

项目场景:Qt中我新建了一个类型为QSqlTableModel,名称为model的指针;用来实现对数据库的添加、删除等操作。有用到以下语句拟对数据库中第i行进行删除:model->removeRow(i)问题描述:目前的问题是当我调用一次model->removeRow(i)时,不能实现删除,当我再调用一次model->removeRow(i)后才能正确删除。其中用到了以下调试语句:qDebug() << "remove states: " << m

2021-05-27 19:09:42 1865 1

原创 C3872:“0xe1e4“:此字符不允许在标识符中使用

C3872:"0xe1e4":此字符不允许在标识符中使用Qt中QMessageBox的问题最近再用Qt设计一个登录窗口,当密码输入错误时弹出消息提示窗。源代码如下: //标题 内容 OK按钮 QMessageBox::warning(this, tr("警告!"),tr("用户名或密码错误"),QMessageBox::Yes);可是这样编译器会报错:可是当我把标题中“警告!”中的

2021-05-10 16:25:35 699

原创 Unix中access和open函数的区别

Unix中access和open函数的区别《Unix环境高级编程》学习笔记学习内容:在书中图4-8提供了access函数运行实例,自己加了些简单的错误检查机制。程序如下:#include"apue.h"#include<fcntl.h>//O_RDONLYint main(int argc, char* argv[]){ if(argc!=2) err_quit("usage: ./a.out filename\n"); if(access(argv[1],F_O

2021-04-09 23:48:43 1038

原创 Unix/Linux中<和>的用法

Unix/Linux中<和>的用法《Unix环境高级编程》学习笔记<表示输入重定向,>表示输出重定向,>>表示将输出追加到设备末尾。例如运行以下语句:./a.out 0 < /dev/tty其中./a.out可执行文件的功能是,返回文件描述符对应的文件标志说明,具体见书中3-11所示程序。表示将标准输入(STDIN_FILENO,对应值是0)重定向为/dev/tty文件。该命令等效于以下命令:./a.out 0 0< /dev/tty程

2021-04-07 09:29:30 1279

原创 关于Linux中ls命令的简单实现:

关于Linux中ls命令的简单实现:在学习《UNIX环境高级编程》这本书中,对图1-3程序进行了简单解释,欢迎大家留言讨论~#include"apue.h"//是作者自定义的头文件#include<dirent.h>//系统头文件int main(int argc, char* argv[]){ DIR * dp;//DIR是一个内部结构,通常用来保存当前被读取的目录有关的信息.(typedef) struct dirent * dirp; if(argc!=2)//如

2021-03-23 19:32:13 182

原创 Ubuntu中cp: cannot create regular file ‘...‘: Permission denied的解决方案

Ubuntu中cp: cannot create regular file ‘…’: Permission denied的解决方案在学习《Unix环境高级编程》过程中,为了将下载的 “apue.h” 头文件导入到环境变量中的 /usr/include 目录下,在终端中输入以下命令:cp apue.3e/include/apue.h /usr/include/终端报错:cp: cannot create regular file '/usr/include/apue.h': Permission

2021-03-22 15:56:06 41248

原创 main函数中argc和argv[]的含义

Linux系统中argc和argv[]的含义一般我们在查看Linux系统中命令文件时,通常会看到int main(int argc, char* argv[])首先解释下含义:argc 是 argument count的缩写,表示输入的参数个数;argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0]一定是执行程序的名称,并且包含了程序所在的完整路径,所以确切的说需要我们输入的main函数的参数个数应该是argc-1个;参考链接:

2021-03-20 18:21:25 415

原创 关于list iterator not incrementable的解决方法

关于list iterator not incrementable的解决方法1.错误源码2.错误分析3.修正编译环境:VS2015语言:C++参考博客:https://blog.youkuaiyun.com/qingtianweichong/article/details/9531919话休絮烦,直接贴上报错图片:看到list字样,应该是list容器部分出现了问题。下面贴出使用list容器的代码块:1.错误源码双向链表list及迭代器声明部分:list<Bullet*> m_bullet

2021-03-20 13:18:49 1124

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除