- 博客(59)
- 收藏
- 关注
原创 Linux下使用部分exec族函数,system函数,popen函数
可以看到的是我写的字符串常量中给出了文件地址以及参数,而且虽然system函数调用了execl函数,但是我们使用system函数给参数的时候却不需要加上NULL(因为(char *)0就相当于NULL),而且我们写的一长串字符常量是通过空格被划分成了不同的参数,程序会自动识别。下面我们用代码验正一下。运行结果如下,我们可以看到,当excel函数使用成功的时候,它就调用了echoarg文件,并且直接运行该文件的程序了,他原来的程序就不管了。并且perror函数已经告诉了我们失败的原因,是路径的错误。
2024-01-18 11:14:20
2188
原创 Linux下进程子进程的退出情况
wait函数具有阻塞功能,可以然子进程先运行完,父进程才可以运行。我们知道,fork函数创建的进程子进程和父进程的运行时没有规律的,两个进程是“抢着”运行,父进程是不会等待子进程的。如果创建了子进程,并且父进程运行完了之后,就直接结束了,这时候子进程就会变成了孤儿进程。子进程在结束的时候exit函数的参数是3,wait函数的参数status原来是10,现在变成了3。运行结果如下,我们可以看到子进程的ID号是2298,父进程的ID是2297。进程的退出分为了两大类,一类是正常的退出,另一类是非正常的退出。
2024-01-18 11:12:03
1362
原创 简述Linux下fork与vfork的使用与区别
在讲述区别之前,先说一说下面的五个问题①什么是程序,什么是进程,有什么区别?程序是代码的集合,完成系统的复杂任务;程序跑起来就会产生进程。程序是静态的概念,进程是动态的概念。就比如我们桌面上的这些图标,你可以认为他们不运行的时候就是程序,可是你打开它,就要运行,就会产生对应的进程。比如说我在Windows操作系统下写博客,我打开可微信和QQ浏览器。这两个软件运行的时候就会产生对应的进程,我按ctrl+shift+Esc就可以在任务管理器中看到②如何在linux查看系统中有哪些进程?
2024-01-17 15:20:07
1103
原创 Linux利用标准c库对文件操作
打开文档’参数pathname:文件路径名mode:文件模式,有以下六种种类功能r只读打开r+可读可写打开w可写打开,写入文件同时清除原文件内容w+可读可写;如果文件存在,写入文件同时清除原文件;如果不存在创建文件a可写打开,如果文件存在,在原文件尾部继续写;如果不存在创建文件a+可读可写打开,如果文件存在,在原文件尾部继续写;如果不存在创建文件fopen() mode 与 open() flags的联系rO_RDONLYwar+O_RDWRw+a+
2024-01-17 15:18:10
642
原创 Linux下模拟cp功能及文档参数的修改
先打开文件,读出文件的内容到缓冲区,然后利用strstr(参数1,参数2)函数找到我们先要修改的参数,并利用指针进行修改。//创建打开文件2,并且将flag的参数中加入O_TRUNC,让文件打开时清空原来的内容。//将文件光标置于文件开头,下次打开文件的时候就不会有原文件和修改后的文件同时出现的现象了。
2024-01-16 10:03:36
990
原创 Linux下文件的创建写入读取编程
在linux下操作一个文件,首先要保证文件的存在(不存在就创建),接着打开文件(打开成功)并得到文件描述符,接着在进行读写操作,最后还需要关闭文件。如果我们对文件进行读写之后不关闭文件,而直接关闭我们的编译器,可能会造成文件损坏。文件描述符其实就是我们使用open函数后一个返回值,我们一般用fd表示。如果你成功的打开文件,open就会返回一个非负值,我们让fd等于这个非负值;如果你打开文件失败,open就会返回-1,那么fd就被赋值为-1。
2024-01-16 10:00:25
1928
原创 RTOS中断管理的简单应用
我们在stm32f103c8t6单片机上验证RTOS中断管理,利用stm32cube进行RTOS的配置。在选择TIM2当做RTOS的时钟,裸机的时钟源默认是 SysTick,但是开启 FreeRTOS 后,FreeRTOS会占用 SysTick (用来生成1ms 定时,用于任务调度),所以需要为其他总线提供另外的时钟源
2023-12-21 08:00:00
1376
原创 RTOS中软件定时器的简单应用
我们在stm32f103c8t6单片机上验证RTOS中软件定时器的简单应用,利用stm32cube进行RTOS的配置。在选择TIM2当做RTOS的时钟,裸机的时钟源默认是 SysTick,但是开启 FreeRTOS 后,FreeRTOS会占用 SysTick (用来生成1ms 定时,用于任务调度),所以需要为其他总线提供另外的时钟源。
2023-12-21 07:45:00
1295
原创 RTOS中的任务通知
我们在stm32f103c8t6单片机上验证RTOS中任务通知API函数的功能,利用stm32cube进行RTOS的配置。在选择TIM2当做RTOS的时钟,裸机的时钟源默认是 SysTick,但是开启 FreeRTOS 后,FreeRTOS会占用 SysTick (用来生成1ms 定时,用于任务调度),所以需要需要为其他总线提供另外的时钟源。
2023-12-20 08:15:00
1049
原创 RTOS中的事件标志组验证
我们在stm32f103c8t6单片机上验证RTOS中事件标志组API函数的功能,利用stm32cube进行RTOS的配置。在选择TIM2当做RTOS的时钟,裸机的时钟源默认是 SysTick,但是开启 FreeRTOS 后,FreeRTOS会占用 SysTick (用来生成1ms 定时,用于任务调度),所以需要需要为其他总线提供另外的时钟源。
2023-12-20 07:30:00
1019
原创 在RTOS中验证互斥量有效解决优先级反转现象
我们在stm32f103c8t6单片机上验证RTOS互斥量有效解决优先级反转现象,利用stm32cube进行RTOS的配置。在选择TIM2当做RTOS的时钟,裸机的时钟源默认是 SysTick,但是开启 FreeRTOS 后,FreeRTOS会占用 SysTick (用来生成1ms 定时,用于任务调度),所以需要需要为其他总线提供另外的时钟源。
2023-12-19 08:00:00
1087
原创 在RTOS中验证二值信号量与计数型信号量
我们在stm32f103c8t6单片机上验证RTOS二值信号量与计数信号量,利用stm32cube进行RTOS的配置。在选择TIM2当做RTOS的时钟,裸机的时钟源默认是 SysTick,但是开启 FreeRTOS 后,FreeRTOS会占用 SysTick (用来生成1ms 定时,用于任务调度),所以需要需要为其他总线提供另外的时钟源。
2023-12-19 07:30:00
1046
原创 RTOS队列的写入与读出
我们在stm32f103c8t6单片机上验证RTOS队列的写入与读出,利用stm32cube进行RTOS的配置。在选择TIM2当做RTOS的时钟,裸机的时钟源默认是 SysTick,但是开启 FreeRTOS 后,FreeRTOS会占用 SysTick (用来生成1ms 定时,用于任务调度),所以需要需要为其他总线提供另外的时钟源。
2023-12-18 08:00:00
1054
原创 RTOS中任务的创建与删除
我们在stm32f103c8t6单片机上验证RTOS中任务的创建与删除,利用stm32cube进行RTOS的配置。在选择TIM2当做RTOS的时钟,裸机的时钟源默认是 SysTick,但是开启 FreeRTOS 后,FreeRTOS会占用 SysTick (用来生成1ms 定时,用于任务调度),所以需要需要为其他总线提供另外的时钟源。
2023-12-18 07:30:00
1258
1
原创 基于stm32的寻迹,跟随,避障小车
这一篇博客在原理与硬件上和51的相同,但是与51相比,这里增加了转向的差速度。51只有两个定时器,分别给了舵机还有超声波传感器。32这里不受定时器的限制,,因此可以使用额外得定时器制造PWM波形成差速度,在拐弯的时候更加丝滑。硬件的简绍以及语音模块的配置可以参考我51的博客,http://t.csdnimg.cn/4mqbm,我就不细说这些了。我会给出接口的引脚,全部需要手写的程序,以及我遇到的问题,还有部分的讲解。
2023-12-09 23:35:08
689
原创 基于stm32ESP8266控制并显示速度的小车
这篇博客是为了实现stm32与ESP8266通讯控制的小车,同时可以实现在网络助手和OLED显示屏上显示速度的功能。
2023-12-09 08:00:00
472
原创 基于stm32的LCD1602与无线蓝牙温湿度显示
这一篇博客是为了实现温湿度的显示,温湿度传感器将数据穿给单片机,单片机又把数据送给LCD1602和蓝牙,让温度和湿度可以再LCD1602显示屏和手机上显示,它的执行逻辑和C51那里基本一样,就是要修改程序,在程序上有略微的差距。至于LCD1602显示屏和dth11温度传感器怎么用,大家可以看看我C51有关的博客,上面对于如何使用说的很详细,http://t.csdnimg.cn/8DY1b
2023-12-04 22:44:20
587
7
原创 基于stm32f103系列的简单软件I2C和硬件I2C通讯
这篇文章主要分为三个部分来阐述,分别是I2C的基本知识,软件I2C通讯,硬件I2C通讯。操作实现的时候,up使用的是标准库讲解,我是用是HAL库,但都可以实现。
2023-11-15 21:11:08
897
原创 基于stm32的ADC读取烟雾报警器的数值
1.什么是ADC?这里的ADC不是你游戏里的ADC打野,手册上说:12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部 信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右 对齐方式存储在16位数据寄存器中。模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。蒙逼不?淡定,从使用者的角度来说ADC就是一个把。
2023-10-28 22:02:21
1629
原创 基于stm3210系列的简单DMA通信
本文将分文四个部分介绍,分别是关于DMA的简单认识,DMA从内存到内存的实验,DMA从内存到外设的实验,DMA从外设到内存的实验。
2023-10-27 17:27:15
544
原创 基于stm32控制的ESP8266在路由模式下通讯
按照我原来的想法,当我在网络串口助手里输入L-1回车发送后,就可以让网络助手把"L-1"发给ESP8266,接着ESP8266把"L-1"发给单片机的串口一的接收寄存器,这样用过if里strcmp比较,两个都是“L-1”就可以完成亮灯的操作,熄灯的操作也一个思路这样。这里的思路还是指令都和51那里相同,思路是一样的,唯一不同的是中断处理程序不同。51的中断里,收到的数据并不是像我们32这里一样全盘接受,而是等到有了相应的字节才开始以一字节一字节的接收,只接收有用的字节来比较,所以51那里的程序也可以控制。
2023-10-24 15:34:18
439
原创 基于stm32控制的4G模块在设备模式下通讯
局域网想要和4G通讯,但是中间隔了“一堵墙”(实际是两者无法识别),这时候作为“锥子”的花生壳打通了墙(即让局域网变成了公共网),然后二者就可以通讯了,接着4G收到了来自公共网信息(公共网的信息来自生成生成局域网的网络助手1),4G模块通过TX发送给单片机命令,实现控制。其实说白了,就是局域网受限制,但是变成公共网络之后就不受限制了,接着在与4G模块,就可以实现局域网与4G模块通信了。全都弄好后,你会发现,这玩意和蓝牙一个效果,但是它的功能蓝牙强大。
2023-10-23 20:55:06
3453
2
原创 基于stm32控制的ESP8266在设备模式下通讯
"PEI\",\"jmgcyjs.\"\r\n和"PEI","jmgcyjs."一样吗?下面的第一个if将会判断成功,将WIFI GOT IP返回值的标志位AT_Connect_Net_Flag 变为1,接着是ESP8266返回OK指令,就可以让OK返回值的标志位变为1,同时在main函数里在printf("AT+CWJAP=\"PEI\",\"jmgcyjs.\"\r\n")下面有while循环标志位的判断来确保每一步的进行都是正确的。有关esp8266的烧录我在之前说过,有兴趣的可以看一看,
2023-10-22 16:52:10
703
原创 基于stm32f103c8t6的串口中断蓝牙通讯
关于这句话,我建议你加上,我在手机蓝牙上试过,如果不加的话,当你输入的不是open或者close而是别的字符串,比如asdajd,它会报错,没问题。想要解决这个问题,要么你重启单片机,要么你加上memset(UART1_RX_Buffer, 0, strlen((const char *)UART1_RX_Buffer)),位置我已经用红色标记了。比如if(buf == 0x0a)之类的语句,后来我跳转了HAL_UART_Receive_IT(&huart1, &buf, 1)解释,
2023-10-19 18:53:47
867
原创 基于stm32f103c8t6的智能垃圾桶
这个垃圾桶的功能效果和51的那个一样,但是实现的方式不一样,都可以由距离,震动,按键触发垃圾桶开盖子。
2023-09-30 20:43:26
1217
原创 浅谈stm32f1xx系列的时钟树
HSI,HSE直接指向SYSCLK没什么说的,重点看向PLL锁相环那里,他可以接受来自HSI的二分频或者HSE的一分频或二分频(手册上说的),然后通过锁相环倍频,调整1~9倍给PLLCLK,再给SYSCLK。同时手册告诉我们APB1的最大速度为32KHZ,APB2的最大速度为72KHZ.而且无论是APB1还是APB2,只要它们的预分频器是1,那么定时器那里就乘以1;依据手册看时钟树的话,说实话我看的很痛苦,但是通过stm32cube软件看时钟树,就很舒服了,他的依据来源于我们的手册,但是感觉更加清晰。
2023-09-28 07:00:00
525
原创 使用stm32cube配置SYS-debug
我给大家举个例子,比如说电脑程序是麦子,单片机是一个吃麦子的人,人吃麦子这件事本身没问题,但是人可以直接吃麦子吗?这时候,作为可以把麦子转化为面粉的下载器来了,这样人就间接的吃了麦子。这四种模式对应不同的协议,但是协议具体是什么,我们不需要知道。使用ST-LINK V2作为烧录器就可以使用Serial Wire模式,这也是为什么我们使用ST-LINK V2作为烧录器要选择Serial Wire模式,而不选择别的模式。你有没有发现四种模式下,在完成同样的功能下,Serial Wire占用的GPIO是最少的。
2023-09-27 12:06:15
1032
原创 STM32F10xxx系列的GPIO简单说明
相比于第一张I/O端口位的基本结构图,我们可以看到,在输入浮空/上拉/下拉模式下,输出部分断开,模拟和复用功能消失,这说明在这三种模式下,其他的模式是不起作用的。复用功能包括:推挽式复用和开漏复用功能 ,其实他们和普通的推挽输出和开漏输出差不多,但不同的是,复用功能将输出的控制权利交给了片上外设,而普通的推挽输出和开漏输出将输出的控制权利交给了输出数据寄存器。很有意思的是,输出模式下,可以有输入,输入模式下,不能有输出,这是因为对于一个端口,它可以有多个输入,但只能有一个输出。
2023-09-20 08:00:00
331
原创 关于51单片机和32单片机的命名方法
命名规则老是忘,所以把它搞到这里,方便大家想要了解命名规则或者工作面试,或者考研复试用,图片是从手册里面搞来的,不喜勿喷。
2023-09-19 20:36:59
298
原创 ESP8266控制小车运动并检测速度
当你连接好所有的硬件并烧录软件之后,请打开你的网络,寻找一个以AI-开头的无线网连接,并连接这个有ESP8266产生的无线网。我要说的是,这里刚上电的时候,oled是不会亮的,你仔细阅读代码就会发现程序卡在了 waitConnect();void speed_Hangdler() interrupt 0//由不透光变透光,说明走过了一个间隔,触发了下降沿,来了一个脉冲信号,代表走过了1cm。// 4. cotrol byte: (0)(0)000000 写入命令 (0)(1)000000写入数据。
2023-09-17 08:00:00
393
原创 基于蓝牙测速并在oled上显示的小车
本文基于2023.09.10的文章()上继续改进,增加了oled模块,光栅,还有三引脚红外对射模块,来测量小车的运行速度。
2023-09-11 23:21:27
358
原创 使用51单片机与oled配合进行IIC通讯显示汉字或字符
我们看到一个汉字对应的宽x高=16x16,但是我们一页的高只有8,因此我们需要两页,一页储存汉字的上半部分,一页储存汉字的下半部分。高四位对应1011为B,X2X1X0刚好对应0~7,共八页,低四位我们选择输入0000,则进去第一页,即page0. Oled_Write_Cmd(0xB0);//图上告诉我们scl高电平期间持续至少4us,sda变为低电平则表示从机应答,高电平代表从机不应答,只是由硬件触发的,因此我们没有手写sda的值。
2023-09-02 23:14:23
2262
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人