- 博客(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数码管系列——单个数码管的静态显示,动态自增以及四位数码管滚动(待完善)
以四位一体数码管和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
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人