自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux网络编程——UDP编程

UDP 是一个简单的面向数据报的运输层协议,在网络中用于处理数据包,是一种无连接的协议。UDP 不提供可靠性的传输,它只是把应用程序传给 IP 层的数据报发送出去,但是并不能保证它们能到达目的地。由于 UDP 在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。对于UDP网络编程步骤,这里借用韦山东老师的图:图 3UDP 用户数据包模式UDP相对于TCP编程来说简单了很多,因为UDP没有TCP那些可靠连接的东西,所以编程相对来说也简单了一些。

2024-09-12 10:39:05 1106

原创 串口回环实验

这两个函数实现完成后,在主函数中调用即可,而且后续再次使用时,一般不需要更改这两个函数内部,只需要在外部调用即可。连接完成后进行软件编程,这里软件编程主要就是完成串口的基本设置,最后在while循环中一直循环发送后读取数据。实现结果是完成串口回环,即向控制台发送数据,串口接受到数据之后,将这个数据返回到控制台处,具体运行结果如下图。这个函数主要就是打开串口设备节点,然后获得串口的文件描述符fd。这里的主要是实现串口的初始化和设置函数,接下来一个一个分析。串口应用编程 4保存串口之前设置。

2024-09-12 10:31:54 352

原创 linux网络编程——TCP编程

TCP server端和client端的函数,我们只需要按照这个图将其中的函数每个都完善,就可以实现TCP连接了。

2024-09-04 20:27:49 1203

原创 tslib学习

tslib 是一个触摸屏的开源库,可以使用它来访问触摸屏设备,可以给输入设 备 添 加 各 种 “ filter ” ( 过 滤 器 , 就 是 各 种 处 理 ) , 地 址 是 :http://www.tslib.org/。

2024-09-03 16:46:39 660

原创 门锁系统——sim卡发送密码

这次是门禁系统的最后一个模块了,之前设想的是还有一个蓝牙模块,但是我的开发板设计时将eeprom的I2C接口设计成了I2C2,而I2C2的接口又和串口二共用GPIO口,所以导致我的串口只能使用4个,现在所有串口都使用完了,就弄不下蓝牙模块了,而且蓝牙模块的使用和WIFI、SIM卡的操作都差不多,都是使用AT指令操作。如果以上都没问题就可以开始测试了,先来实现向手机打电话的操作,这里只能使对方振铃,不能通话,如果想要通话,就要连接sim模块上的音频输入输出引脚。注意分号不要丢,后面的×中填入对方的电话号码。

2023-06-14 15:11:58 530

原创 门锁系统——WIFI后台读取数据

因为ESP8266本身即是可编程的芯片,可以把它视为一个带有无线通信的单片机,而用户需要在专门的IDE中编写对应的程序,然后通过烧写固件的方式将程序写入到芯片中,因此,此时想要实现WiFi通信,需要自定义WiFi协议栈,因此对用户掌握的相关知识要求更高。因为我们需要对8266进行调试,所以我们想要看到我们给8266发送的AT指令和8266返回给我们的答复,就需要完成串口一和串口二的数据互通,这里还是和之前一样,为8266创建一个文件夹和对应的8266.c和8266.h文件,将它们添加到程序中。

2023-06-13 21:57:10 427

原创 门锁系统——卡片识别

接上篇这一篇我们来学习使用RC522——卡片识别模块,这部分遇到的问题比之前多得多,有一些很奇怪的问题,直到现在都没有解决,我只是基本上完成了功能的实现,也有可能是我这个模块的问题,如果您有更好的解决方法,可以给我留言,帮助我解决这块的问题。接下来进入今天的模块认识。

2023-06-12 14:47:33 453

原创 门锁系统——指纹识别

接上篇这一篇我们学习使用指纹模块来完成开锁。

2023-06-09 21:45:49 1700 1

原创 门锁系统——屏幕显示

这一块需要用到之前的按键和24C02芯片(EEPROM),这个芯片的作用是用来储存屏幕的校准信息和密码的。,这是一种多层的复合薄膜,它以一层玻璃或硬塑料平板作为基层,表面涂有一层透明氧化金属(透明的导电电阻)导电层,上面再盖有一层外表面硬化处理、光滑防擦的塑料层、它的内表面也涂有一层涂层、在他们之间有许多细小的(小于。为了整个项目的整洁,我们将自己实现的LCD相关程序放在一个新的文件中,在文件目录下创建一个新的文件夹,在其中创建一个bsp_LCD.c和bsp_LCD.h文件,将其分别添加到文件目录中。

2023-06-09 15:42:43 467

原创 门锁系统——项目简介

这个项目我目前主要想完成的是一个简单的门锁控制功能,现在利用各个模块单独实现门锁的解锁,这个项目有关的文章应该会比较长,我将各个模块分开写,大家可以按需观看,废话不多说,这就开始本次的实验。本次实验采用STM32F103ZET6主芯片的开发板,使用HAL库开发,利用FreeRTOS。

2023-06-07 20:38:17 570

原创 STM32串口中断方式实现任意字节的收发操作

串口中断方式实现任意字节的收发操作本次实验采用STM32F103ZET6主芯片的开发板,使用HAL库开发。本次实验的目的是实现任意字节数据的收发,实验现象为通过串口发送数据,串口返回发送的数据。实现原理在串口的寄存器中有一位是判断串口是否空闲的位,可以利用这个位来判断串口此时的状态,在串口发生中断后,在中断回调函数中实现空闲中断函数,获取函数空闲中断位并判断是否空闲,如果此时已经空闲,表示数据已经发送完成,然后使函数终止,并执行终止回调函数。最后在主函数中实现接收之后再发送。

2023-05-17 13:25:50 1985

原创 STM32使用SD卡遇到的问题

最近在学习SD卡的使用方面遇到的一些问题,在这里记录一下这些问题。本次实验采用STM32F103ZET6主芯片的开发板,使用HAL库开发。在学习SD卡时,一般的学习思路就是先使用普通HAL库进行开发,然后再使用FatFS文件系统,最后结合FreeRTOS系统使用。

2023-05-03 14:28:10 864

原创 FreeRTOS_流缓冲区的学习与使用

如果调用xStreamBufferReceiveFromISR()导致任务退出阻塞状态,并且未阻塞任务的优先级高于当前正在执行的任务(被中断的任务),则在内部,xStreamBufferReceiveFromISR()将* pxHigherPriorityTaskWoken设置为pdTRUE。写这个地方的函数确实太浪费时间了,博主现在没有太多时间写这个东西,下次的更新应该会比较久,我可能会整理这块学到的东西,然后做一个智能门锁的项目,下次更新应该就是智能门锁的内容了。返回:写入流缓冲区的字节数。

2023-04-25 14:54:37 683

原创 FreeRTOS_任务通知的学习与使用

本次实验是验证任务通知,一共分为两个实验。任务通知是FreeRTOS的一种进程间的通讯技术。使用任务通知可以不用向之前那样创建中间变量,可以直接从任务到任务或者从ISR向任务发送通知。本次实验采用STM32F103ZET6主芯片的开发板,使用HAL库开发。

2023-04-23 20:03:33 1669

原创 FreeRTOS_事件组的使用

之前我们学习了队列和队列延伸出的信号量、互斥量的使用,但是这些有些局限性,只能同时进行一项任务,我们这次实验来学习如何同一时间使多个任务(。本次实验采用STM32F103ZET6主芯片的开发板,使用HAL库开发。

2023-04-21 14:08:45 494

原创 FreeRTOS_认识互斥量

优先级翻转就是本来应该先运行高优先级然后再运行低优先级,但是因为在使用信号量进行控制时,有可能会使优先级翻转,即低优先级先于高优先级运行。

2023-04-20 17:41:09 214

原创 FreeRTOS_认识信号量

上次我们认识了队列,这次实验我们使用两个实验来分别认识二值信号量和计数信号量。本次实验采用STM32F103ZET6主芯片的开发板,使用HAL库开发。可以用于进程间的通信,它和互斥量都是基于队列的基本数据结构,信号量又分为和。

2023-04-19 21:35:38 397

原创 FreeRTOS_队列的学习与使用

队列的本质是一个缓冲区,用于进程间或进程与ISR之间的少量的数据传递,所以也称为消息队列,一般可以采用先进先出(FIFO或后进先出(LIFO的方式。队列管理、获取队列信息、写入消息、读出消息四种,这些函数都可以在FreeRTOS的文档中查看,这里不再展开讲述,等下需要使用哪些我们会单独讲解。

2023-04-18 20:25:38 293

原创 FreeRTOS_初步了解多任务并行

上次实验我们初步了解了RTOS的作用,这次实验我们主要学习RTOS的多任务并行和了解抢占运行的优势。

2023-04-17 12:30:59 869 1

原创 初识RTOS——基于HAL库

RTOS是一种实时操作系统,例如汽车的操控:必须要在规定时间内完成响应。我们日常使用的Windows、IOS、Android等都是非实时操作系统,这些系统对任务响应时间没有严格要求,例如网页打开时可能会很久或者直接闪退等。RTOS的最大特征就是实时性。所有实时操作系统中都要包含一个实时任务调度器,这个任务调度器与其它操作系统的最大不同是强调:严格按照优先级来分配CPU时间,并且时间片轮转不是实时调度器的一个必选项。提出实时操作系统的概念,可以至少解决两个问题:一个是早期的。

2023-04-15 16:35:46 927

原创 基于STM32的智能循迹避障小车实验(超声波部分)

本部分实验采用的是超声波模块HC-SR04,它长这样:买这个的时候最好再买一个支架,可以直接架在舵机上,探查周围的距离。超声波模块有4个引脚,分别为VccTrig(控制端)、Echo(接收端)、GND;其中VCCGND接上电源和地,Trig(控制端)控制发出的超声波信号,Echo(接收端)接收反射回来的超声波信号。控制端的控制原理:通过Trig引脚发一个10US以上的高电平就可以在Echo接收口等待高电平输出;一有输出就可以开定时器计时。

2023-04-13 21:55:09 3440 3

原创 基于STM32的智能循迹避障小车实验(舵机旋转部分)

信号,使其进入内部电路产生一个偏置电压,触发电机通过减速齿轮带动电位器移动,使电压差为零时,电机停转,从而达到伺服的效果。这次我们选择TIM3的通道1输出PWM波,TIM3的通道1对应的是PA6,所以我们将舵机的信号线(黄色线)接到PA6,具体设置如图。舵机的控制,需要一个20ms的时基脉冲,控制高电平时间为0.5ms~2.5ms范围内即可控制舵机在0 ~ 180°转动。这里还是使用之前的程序,打开之前的CobeMX,直接在其上继续设置。明白了舵机的工作原理后,就可以通过程序来控制舵机转动了。

2023-04-13 19:53:51 1731 1

原创 基于STM32的智能循迹避障小车实验(循迹部分)

这一部分主要利用了循迹模块两个图 1循迹模块就是这个东西:一共三个引脚VCC:电源线,连接单片机的3.3V-5VGND:地线,连接单片机的接地(GNDOUT:开关信号输出(传感器检测到黑线的时候,这个引脚呈现高电平)循迹模块工作原理:红外发射器一直发射红外线,红外线经发射后被接收,此时输出低电平,输出指示灯点亮。黑色是不反射红外线的,也就是说循迹模块遇到黑线,模块输出高电平,输出指示灯熄灭。注意。

2023-04-13 16:49:05 3461

原创 基于STM32的智能循迹避障小车实验(小车运动部分)

这个实验是关于智能小车的实验,现在的想法就是先做出一个循迹和避障功能,后续可能会再添加一些其他的模块。

2023-04-11 10:11:05 5405 3

原创 stm32使用SPI读取Flash

本次实验为使用SPI的轮询方式读写Flash。采用HAL库进行书写。我使用的主控芯片是stm32f103zet6,上面搭载的Flash芯片是W25Q64芯片,这个芯片的容量是8MB。

2023-04-08 17:20:10 2632

原创 stm32无法在串口输出信息

/ huart1是串口1,如果使用其他串口需要更改这个变量return ch;在使用这个函数之前必须先添加头文件:直接将这个函数添加到main函数中然后就可以在主函数中使用了。

2023-04-07 09:57:17 2031 4

原创 使用通用定时器实现呼吸灯

这样主函数部分就配置完成了,但是当我们烧录进单片机中发现只能使LED常亮,这是因为我们还没有实现中断的回调函数,中断发生后中断函数未作出反应,所以我们应该重新实现中断函数(这个函数HAL库中有定义为弱函数,我们得重新实现这个函数),在tim.c文件中实现这个函数。呼吸灯本质上是利用加在LED上的电压变化引起的灯的亮度改变,但是我们单片机的电压不能实时调节,也就导致了无法通过调节电压来调节灯的亮度,但是我们可以通过通用定时器控制PWM输出占空比不同的PWM波,来实现施加在灯上电压的时间,进而改变灯的亮度。

2023-04-04 14:35:44 1100

原创 使用基础定时器实现对LED的控制

1、定时器,是存在于STM32单片机中的一个外设。STM32总共有8个定时器,分别是2个高级定时器(TIM1、TIM8),8个通用定时器(TIM2、TIM3、TIM4、TIM5、TIM9、TIM10、TIM11、TIM12)和2个基本定时器(TIM6、TIM7)这三种定时器的区别如下:即:高级定时器具有捕获/比较通道和互补输出,通用定时器只有捕获/比较通道,基本定时器没有以上两者。本次实验主要采用基础定时器,本次实验是基于STM32f103zet6。

2023-04-03 21:33:55 1000 1

原创 使用FSMC连接TFT LCD

大多数厂商提供的驱动程序是标准库的,我们需要对其进行改写,主要是一些定义的书写格式,更改就好,然后注释掉头文件中的SysYick.h和usart.h(这两个一个是延时函数,一个是串口输出函数),最后将延时函数改成HAL_Delay(),串口输出函数(printf)直接注释,再将LCD初始化中的GPIO和FSMC部分注释掉。在主函数中调用LCD_Init()函数,下载即可发现LCD背光打开了,这样就完成了整个函数的书写,然后就可以在其上展示自己想要展示的图形,字符等了,厂商为我们提供了几个函数可以直接使用。

2023-04-03 15:49:28 507 1

原创 stm32——HAL库实现外部中断

初步掌握中断优先级的抢占优先级和次优先级。

2023-04-01 17:14:53 868

原创 STM32使用串口printf乱码问题解决方法

使用stm32系列单片机串口打印问题,在使用HAL库重新定义printf为串口输出后,输出的内容全都是乱码,试了网上的方法后还是乱码。keil中是GB 2312,串口调试助手是UFT_8,所以打印出来才会乱码。将串口调试助手的字符编码改成GB 2312,问题就完美解决了。最后发现是串口调试助手和keil的文字编码方式不同,第一次写博客,有些不熟练。

2023-04-01 10:43:53 2108

2.门锁系统-屏幕显示

2.门锁系统-屏幕显示

2023-06-09

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

TA关注的人

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