自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 温湿度检测DHT11代码文件以及其rtos移植文件

链接:https://pan.baidu.com/s/1WliH6nyZ5TJQ4wvB7mlrNA?

2024-08-16 19:18:27 191

原创 STM32 CAN外设(STM32F103C8T6)

引脚控制权在CAN外设,配置为复用推挽输出模式,输入引脚可以配置为上拉输入,当控制器接收到报文后会自动和配置的过滤器进行比对,符合条件的报文会自动保存在FIFO队列中,CPU直接读取FIFO即可。STM32内置bxCAN外设(CAN控制器),支持CAN2.0A和2.0B,可以自动发送CAN报文和按照过滤器自动接收指定CAN报文,程序只需处理报文数据而无需关注总线的电平细节。波特率最高可达1兆位/秒3个可配置优先级的发送邮箱2个3级深度的接收FIFO。(该芯片的USB和CAN无法同时使用的)

2024-07-19 17:24:34 683

原创 Linux rpm与yum

其中,68.10.0-1为版本号,后面的为适用的操作系统,32位系统会显示i686,i386,noarch表示通用。:查询安装软件后所产生的各种文件以及安装位置。注意卸载可能会导致一些其他软件无法正常工作。卸载rpm包:使用指令。安装rpm包:使用指令。rpm -ivh [rpm包全路径名]:查询指定软件是否安装。rpm -qi [软件名]:查询安装软件的详细信息。rpm -ql [软件名]rpm -qf [文件名]rpm -q [软件名]:查询该文件的软件归属。rpm -e [软件名]

2024-06-26 13:45:54 376

原创 Linux 动态监控系统

top与ps命令很相似。它们都用来显示正在执行的进程。Top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的的进程。

2024-06-24 16:20:39 659

原创 Linux 服务管理

服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysqld , sshd防火墙等),因此又称为守护进程。比如通过xshell进行连接的时候,需要输入的端口号就是通过守护进程连接的。

2024-06-20 17:23:08 391

原创 Linux 进程管理

上图中,PID为该进程号,PPID为该进程号的父进程,即该进程是由其父进程产生的,例如从图中我们可以知道,框出部分进程的父进程是进程号为2的进程所产生的。即是先有的kthreadd后产生的该进程,上面两个无父进程,因为是linux启动即生成的,是大部分进程的“祖宗”。进行查看,其中a表示列出所有进程信息,u以用户格式显示进程信息,x显示后台进程参数,也可以使用| grep 进行进程的筛选。来查看我们想查看的进程的父进程,注意,当更改用户进行查看的时候,进程号是不会变的。%MEM为该进程的物理内存占用比。

2024-06-19 17:32:37 496

原创 Linux host映射 设置主机名并通过主机名找到指定系统

1.windows进入到 C:\Windows\System32\drivers\etc\hosts 内,使用edit with notepad打开hosts文件,在下面添加需要寻找的ip以及其主机名。该ip以及主机名即linux的一致。1.在linux中输入 /etc/hosts 进入后 同上输入windows主机ip以及主机名,主机ip查询方式打开命令符输入ipconfig找到ipv4即是主机ip,主机名右键此电脑属性中即可查到复制即可。

2024-06-15 11:10:13 487

原创 Linux 网络配置 固定ip

5.子网框出部分需要保持一致,网关需要保持一致,修改完后点击确定,应用后再点击确定进行,配置好后,在虚拟机终端输入reboot重启或者使用service network restart重启网络配置。6.重启后,xshell也要进行相应的ip更改右键左侧需要进行更改的会话选择属性,进入后将主机ip更改为固定ip即可。4.进入到虚拟机进行如下操作,编辑中选择虚拟网络编辑器,随后选择nat模式,更改设置。2. 框出部分改为static,以下是修改完后的。修改完后esc退出编辑输入:wq保存退出。

2024-06-13 23:49:46 590

原创 Linux磁盘分区使用情况查询

我们知道文件在文件夹中ls查看是以-开头的,这里可以使用grep进行过滤,grep支持正则表达式可以进行细分,这里使用指令。如图我们可以了解到磁盘的一些大致的使用情况,注意当已用部分有超过80%使用的分区就意味着你需要进行磁盘的清理了。使用指令tree [目录],如果无法查询到该tree指令则需要进行安装,安装指令为。指令-hac在上面指令的基础上说明汇总值,一共占用了多少空间,一目了然。以上的指令通过管道依次执行为 列出文件夹下的内容->过滤筛选留下文件->统计个数。在原有的基础上,加入-R指令。

2024-06-09 15:41:59 624

原创 Linux 磁盘分区步骤

首先在linux系统中创建一个newdisk用于挂载 在根目录下使用mkdir newdisk创建,此处挂载目录的选择没有固定的,接下来使用mount /dev/sdb1 /newdisk/ 挂载到刚新建的目录下。此时就会发现挂载点已经设置成newdisk,完成挂载。现在添加分区,使用fdisk /dev/sdb 指令进入到分区设置,可以通过m查看帮助,输入n添加新分区。3.但是使用lsblk -f查看会发现新分区并没有同上拥有的字符串,因为还没挂载,挂载点自然也是没有的。会发现挂载点已经没有了。

2024-06-05 22:09:39 568

原创 Linux 文件权限管理中有关rwx的细节

1.对于r(读)来说,在同一组的用户中,假设a用户权限为drwx--x---,则说明在所在组中的其他用户对a用户只有执行的权限,a用户中有一个文件例如a文件,a文件权限为drwxrw----,可读可写,其他用户在对a用户进行操作时,可以执行一些相应的权限,但是无法进行读写,例如b用户进入到a用户可以,却无法使用ls等指令查看a用户内的目录,但是可以使用vim指令进入到其内部文件,由于内部文件对所在组具有读写权限,这里就可以对文件进行增删查改,相当于互不侵犯的那种。

2024-06-02 23:37:26 294 3

原创 c语言数据结构--串的模式匹配算法BF算法以及KMP算法(极简)

代码中,while的循环条件在不超过主子串的长度下进行,因为超过的话就表示不符合要求也没必要进行了。这里j=1不用解释,i的回溯的话,每次i的移动j也会随之移动一位,则i减去j等于包括i初始移动位置全部减去了,此时加1回到原本的初始位置,再加1便是下一个需要移动到的位置,因此是i-j+2。KMP算法代码如下,其中GetNext函数为next数组部分,下面的函数其实和BF算法的一样,只不过i和j的回溯发生了改变,主串不需要进行回溯,而子串则回溯到next数组给定位置即可。

2024-04-20 18:14:08 414 3

原创 c语言转c++ 简单教程笔记(有一些通用的已经)(待更新)

c++定义字符串 string num="hello";等价于 cout << "###" << n << endl;添加键值对 m["hello"]=2;c语言输入输出 scanf("%d", n);等价于cin >> n;栈的创建 stack<int>s;

2024-02-15 20:51:19 900 1

原创 STM32 软硬件SPI通信协议原理 大致讲解(基于江科协W25Q64实现通信)

W25Qxx系列是一种低成本、小型化、使用简单的非易失性存储器常应用于数据存储、字库存储、固件程序存储等场景。存储介质: Nor Flash(闪存)时钟频率:80MHz/160MHz (Dual SPI)/320MHz (Quad SPI)引脚说明:VCC,GND:电源(2.7~3.6V)CS(SS):SPI片选CLK(SCK):SPI时钟DI(MOSI):SPI主机输出从机输入DO(MISO):SPI主机输入从机输出WP:写保护。

2024-02-10 20:22:45 801 2

原创 RTOS实时操作系统——UCOSIII简介

1.UCOSIII是一个可裁剪,可剥夺的多任务系统,没有任务数目的限制,是UCOS的第三代内核操作系统。2.为什么要选择UCOSIII:2.1稳定、可靠UCOIII是经过了多种安全认证加持的,包括航空、工业控制、医疗、汽车等等多领域的安全认证。2.2uC/OS-I1官方提供了十分完善的资料,共有数十个文档资料。2.3支持系列广,支持多种不同架构的不同型号的处理器,如: ST. NXP、Xilinx. Infineon等2.4移植简单C语言编写简单易用, 可移植性非常好。

2024-02-07 16:32:26 1610 1

原创 c语言Visual Studio中创建代码的静态库保护以及使用的方法

在写好一个c语言项目的时候,如何通过分享或出售给其他人而不想泄露源代码,这里介绍一下利用Visual Studio中静态库的创建方法来进行代码的保护以及如何打开静态库代码。此时在代码文件路径中的Debug文件夹中就会有一个后缀为.lib的文件。当使用到这个代码时,将这个代码粘贴到需要使用的代码文件路径中,以下为操作步骤。在配置类型中,右边小箭头下拉中选择静态库,点击应用。此时代码已经变为静态库形式的了,此时运行,软件会报错。打开写好的代码程序,右键点击项目,点击属性。此处还需要提供静态库代码的头文件。

2024-02-04 14:28:38 486 1

原创 数码管系列——STM32数码管显示数字时钟

数码管显示数字时钟需要进行数码管显示和定时器中断以及时钟进制的编写。

2024-01-19 09:18:29 2241 1

原创 STM32数码管系列——单个数码管的静态显示,动态自增以及四位数码管滚动(待完善)

以四位一体数码管和74HC244N三态门芯片组合为例进行编程。

2024-01-13 14:49:54 2330 1

原创 I2C协议通过硬件读写MPU6050(待更新说明)

以下是关于STM32F103C8T6的两个I2C所指定的复用IO口,硬件I2C只能使用其规定好的引脚。在使用该处IO口时都要配置成复用开漏输出模式。关于I2C库函数中需要用的一些函数的说明:I2C_GenerateSTART():生成起始条件I2C_GenerateSTOP():生成终止条件I2C_AcknowledgeConfig():配置CR1的ACK这一位,应答使能,给0无应答返回,给1,接收一个字节返回一个应答。I2C_SendData():发送数据,将Data数据写入到DR寄存器。

2024-01-12 12:08:30 453 1

原创 qt五子棋人人对战全代码记录(末尾含qt源码文件)

程序界面设计部分代码如下:基于Qt自带的窗口进行棋盘的界面设计,这里在原有的界面进行棋盘,棋子以及落点标示点的绘制,通过for循环以及自带的#include //画家头文件 中 painter.drawLine()函数进行横竖线的绘制,其余同理利用brush.setColor()以及painter.drawEllipse()椭圆绘制棋子部分。parent//使用鼠标// 设置窗口大小initGame();

2023-12-23 19:56:59 1504 8

原创 STM32 I2C协议通讯的基本流程(以江科协的用I2C协议进行陀螺仪六位数据的传送显示为基准)(更新完)

接下来为了方便进行I2C的读写操作,封装一些使用频繁的代码,便于修改理解,MyI2C_W_SCL()用于进行SCL的写操作,解释一下其中的BitAction为枚举类型,当其中的数不为0x00默认高电平,以下同理。发送字节的逻辑就是,在SCL低电平时进行数据的写操作,数据放在SDA中,SCL高电平时读取SDA,然后再拉低SCL完成一个字节的读取操作,然后进行下一位字节的操作,这里使用for循环使用右移操作就可以依次进行从高位到低位的8个字节的读取了。开始读取后,写一个发送字节的函数进行操作,具体示意如下图。

2023-12-19 16:33:58 520 1

原创 江科协STM32教程——STM32 使用串口助手进行LED灯的点亮熄灭灭控制全代码过程(USART串口通信的简单应用)

进入中断后,将串口接收到的字符用一个数组RxData[]暂存,进入if的条件再定义一个RxState 进行判断,初始值赋0,在里面又进行判断接收到的数据是不是用于判断的头字符,定义判断字符为@,同时为了保证数据是重新开始的,加上Serial_RxFlag == 0用且判断,接收到的为@则进入接收数据的部分,注意使用else if判断,里面判断是不是尾字符(用于结束),如果不是的话就进行数据的正式接收,将接收到的字符用数组形式存放在RxData里,然后接收到结束字符后进入最后的收尾工作。(此时LED灯亮起)

2023-12-06 19:16:55 4547 1

原创 STM32 输出比较产生PWM波驱动呼吸灯,直流电机应用全代码实现过程(通过PWM波调节占空比实现)——江科协入门教程

我们需要先开启基本的时基单元,然后通过调用TIM_OC1Init来调出输出比较的配置代码,这里在引出的时候只需配置如下的部分就行,未配置的部分是高级定时器才需要用到的。关于如何输出PWM波形,我们需要先知道,PWM波其实就是一种占空比可调的波形,通过STM32的输出比较功能来控制一个周期内高低电平的占比从而达到输出PWM波形。然后配置GPIO口来输出PWM波形,注意,这里的输出IO口只能是PA0,需要使用其他的IO口则需要进行引脚重定义。PWM分辨率: Reso = 1 / (ARR + 1)

2023-12-03 10:53:41 1286 1

原创 Qt打开程序无法显示完整程序文件的解决方法之一

可能在之前动过路径,导致打不开程序,在项目中,对应的Build里修改构建目录为当前代码存放位置即可。

2023-11-30 23:38:49 705 1

原创 STM32 USART串口协议 (可以实现设备间通信,硬件系统拓展,芯片互连的功能)

首先,我们了解一下什么是通信,为什么需要通信,简单来讲,就是通过通信可以实现更多单靠STM32芯片本身完成不了的工作,比方蓝牙,WIFI功能的实现,显然只靠STM32本身是不行的,这时候就需要借助通信来实现芯片、模块之间的连接,用以进行硬件拓展,从而达到功能多样化。STM32的通信类别有如下:(下图参考取自江科协)全双工指一般有两条数据线,即输入输出,半双工即一根数据线实现输入输出,还有一种单工,只能单向传输数据。同步时钟可以通过时钟信号进行采样,异步时钟则需要通过采样频率进行接收发送。

2023-11-29 21:55:06 1948 1

原创 STM32定时器外部中断定时计数(输入计数10次执行更新中断)

定时器中断更新需要用函数TIM_GetITStatus来实现,在主函数中编写如下第二个的代码,第一个参数给选定的定时器,第二个参数是指定要检查的 定时器中断源。定义一个函数,返回TIM_GetCounter的值,该函数放在TIM函数中或者主函数均可,该函数能显示计数器的值,但不是中断更新的值。在代码上面上面我们配置一下GPIO,注意,TIM2的ETR引脚已经固定为PA0了,如果要更改比较麻烦,GPIO的配置就不再赘述了。预分频值设置为1-1,即按下按键即响应一次,周期为10,即按下10次后记为1。

2023-11-28 19:35:26 1749 1

原创 STM32定时中断具体配置讲解(定时1s触发中断为例)(有待更新)

配置基本按照如下代码就行,其中TIM_Period为计数周期ARR的值,TIM_Prescaler即预分频PSC的值,这里用到一个计算公式算得自己想要的时间,公式为(TIM_Prescaler+1)/72MHz=计数时钟周期再乘以计数周期TIM_Period,假设需要一个1s的定时,则设定TIM_Prescaler为7200+1,公式得到为0.1ms,再乘以一个10000的计数周期则为1s的定时了。向上面这样,定时1s的中断就已经弄好了,接下来我们在主函数里调用就行。这里介绍一下STM32定时中断。

2023-11-25 23:38:11 2587

原创 STM32闪烁电路以及流水灯的大致配置说明(附Delay延时函数源码)

延时100ms执行下一个,在whlie里循环进行,达到闪烁的目的。那么既然如此,流水灯的函数是不是就出来了,我们直接过一段时间依次给给定的LED灯置低就行了,注意同时将上一个LED灯的IO口置高关闭(IO口接LED灯的低电平输出引脚),具体配置如下,依次点亮PA0,PA0,PA2三个IO口的LED灯。以下是延时函数源代码,需要自取。

2023-11-24 23:30:12 1226

原创 STM32按键电路(双按键控制LED灯亮灭以及单个按键控制LED灯亮灭)

这里介绍一下STM32的按键电路,直接切入正题。

2023-11-24 22:55:49 5879 1

qt五子棋人人对战全代码记录(源码文件在末尾)

qt五子棋人人对战全代码记录(源码文件在末尾)

2023-12-28

空空如也

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

TA关注的人

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