自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (1)
  • 收藏
  • 关注

原创 UDP Server端实现

UDP C/S模型UDP APIint socket (int domain,int type,int protocol);此接口和TCP几乎一样,唯一不同的位置就是type里面传的值TCP传SOCK_STREAM; UDP里面SOCK_DGRAM;SOCK_STREAM:这个协议是按照顺序的,可靠的,数据完整的基于字节流的连接。这是一个使用最多的socket类型。SOCK_DGRAM:这个协议是无连接的,固定长度的传输调用。该协议是不可靠的。int sendto(int sockfd,co

2021-06-27 20:50:56 1374 1

原创 HTTP协议详解

超文本:包含有超链接和各种多媒体元素标记的文本。这些超文本文件彼此链接,形成网状,因此又被称为网页。这些链接使用URL表示。最常见的超文本格式是超文本标记语言HTML。URL:URL即统一资源定位符,用来唯一标识万维网中的某一个文档。URL由协议,主机和端口(默认80)以及文件名三部分构成。比如:HTTP:HTTP工作原理:HTTP报文结构:...

2021-06-26 19:58:38 136

原创 TCP Server端实现

TCP Server端实现C/S模型:实例操作:通过PC端发送字符串给STM32,在让STM32把小写转换成大写,发回给PC端,由此实现PC端到STM32端的交互过程。TCP Client实现C/S模型:操作实例:通过PC端发送小写的字符串,再通过转换成大写字符串,由STM32发送给PC端。...

2021-06-18 20:11:43 287

原创 Socket接口

Socket接口:int socket(int domain,int type,int protocol);domain:AF_INET 使用TCP或UDP来传输,用IPv4的地址AF_INET6 是IPv6的地址AF_UNIX本地协议,使用在Unix和Linux系统上。type:SOCK_STREAM:这个协议是按照顺序的,氪佬的,数据完整的机遇字节流的连接。这是一个使用最多的socket类型,这个socket是使用TCP来进行传输。SOCK_DGRAM 这个协议是无连接的,固定长度的传输

2021-06-16 09:50:06 629

原创 Socket基本概念

Socket基本概念:Socket就好比插座,是个通信的接口。它把网络层和传输层都映射到Socket 抽象层上,然后用Socket层与应用层进行交互,这样使得编程更加容易,然后Socket不能跑Windows和LINUX,所以必须由LWIP和RTOS搭配来使用。...

2021-06-11 10:10:58 96 1

原创 事件标志组概念及其应用

事件标志组概念及其应用:一,时间标志组定义:二,FreeRTOS事件标志组介绍:三,FreeRTOS事件标志组功能原理:

2021-06-08 11:27:47 69

原创 互斥信号量概念及其应用

互斥信号量概念及其应用:一,互斥信号定义:在要被抢走时,把低优先级任务抬高。这样就解决了优先级翻转问题。二值信号量用于信号同步:互斥锁:二,FreeRTOS互斥信号量介绍:互斥信号量包括:普通互斥信号量和递归互斥信号量。三,FreeRTOS互斥信号量工作原理:递归互斥信号量解决死锁问题:MutexLock mutex;void foo(){mutex.lock();//do somethingmutex.unlock();}void bar(){mutex.lo

2021-06-08 11:18:55 780

原创 优先级翻转问题

优先级翻转问题:一,优先级翻转问题;正常情况下,信号量被低优先级任务所占用的时候,其他任务想要使用必须等待低优先级任务释放信号量后才能使用。但是优先级翻转就会出现,在低优先级任务正常使用二值信号量时,高优先级的任务占用了CPU的使用权,此时会出现中优先级的任务去抢占CPU的使用权,去执行中优先级的任务,由于此时低优先的信号量没有释放,此时会较长时间的执行中优先级的任务。二,优先级翻转功能需求:1,新建三个任务,优先级分别是中,高,低2,新建二值信号量,用于模拟低优先级翻转。3,低优先级任务获取

2021-06-08 11:11:32 113

原创 二值信号量的函数应用

二值信号量的函数应用:一,功能分析:1,修改按键功能,2,当按键按下触发打印一次CPU利用率3,使用二值信号量实现按键与任务间同步二,API详解:semaphoreHandle_t xSemaphoreCreateBinary(void);功能概述:创建二值信号量,并返回信号量句柄,创建完成后,信号量状态为空。返回值:NULL—堆空间不足Any other value----信号量句柄注意事项:configSUPPORT_DYNNAMIC_ALLOCATION必须置为1.BaseTyp

2021-06-07 15:47:58 190

原创 物联网信号量概念以及应用

物联网信号量概念以及应用:一,信号量定义:信号量:多任务环境下使用的一种设施,负责协调多个任务,以保证任务能够正确,合理的使用公共资源。二,FreeRTOS信号量介绍信号量:二值信号量,计数信号量,互斥信号量。互斥信号量包括:普通互斥和递归互斥。三,FreeRTOS信号量工作原理二值信号量工作原理:计数信号量工作原理...

2021-06-07 15:25:22 170

原创 物联网消息队列函数应用

物联网消息队列函数应用:一,功能需求:1,使用消息队列检测串口输入2,通过串口发送字符串openled6,openled7,openled8,openled9,分别打开led6,led7,led8,led93,通过串口发送字符串closeled6,closeled7,closeled8,closeled9,分别关闭板载led6,led7,led8,led9.二,函数接口:QueueHandled_t xQueueCreate(UBaseType_t uxQueueLength,UBaseTy

2021-06-06 11:31:55 144

原创 物联网消息队列概念及应用

物联网消息队列概念及应用:一,消息队列定义:消息队列的作用:消息队列,可以再任务与任务之间、中断和任务间传递消息实现任务接收来自其它任务或者中断的不固定长度的消息。二,FreeRTOS消息队列介绍:三,FreeRTOS消息队列功能原理:...

2021-06-06 11:03:09 159

原创 物联网任务堆栈大小的确定

物联网任务堆栈大小的确定:一,任务堆栈大小确定:函数嵌套:函数局部变量,函数形参,函数返回地址,函数内部状态值任务切换:所有的寄存器都需要入栈,M4内核浮点寄存器也需要入栈中断:M4内核的8个通用寄存器和18个浮点寄存器是自动入栈的,这个栈是任务栈,使用的局部变量以及可能发生的中断嵌套都是用的系统栈有三种确定方式:1,MDKhtm文件分析:通过这个文件用户可以知道每个被调用函数的最大栈需求以及各个函数之间的调用关系2,栈溢出检测:(1)在任务切换时检测任务栈指针是否过界(2)任务创建的时候

2021-06-05 15:45:05 709

原创 物联网临界段实现原理

物联网临界段实现原理:一,FreeRTOS中断管理实现:Cortex-M快速关中断指令PRIMASK:这是个单一bit的寄存器。在它被置1后,就关闭所有可屏蔽的异常,只剩下NMI和硬FAULT可以响应。它被置0,表示没有关中断FAULTMASK:这是个有1bit的寄存器。当它置1时,只要NMI才能响应,所有其他的异常,甚至是硬FAULT,也通通闭嘴,是0就表示没有关异常DASEPRI:这个寄存器最多有9位(由表达优先级的位数决定)。它定义了被屏蔽优先级的阈值。当它被设成某个值后,所有优先级号大于

2021-06-05 15:34:44 380

原创 物联网临界段

物联网临界段:一,临界段的作用:什么是临界段:在程序访问资源时,不希望被其他任务或者中断打断,这段要执行的代码,称为临界代码段。不想被打断访问的资源:1,读取或者修改变量(全局变量)2,调用公共函数的代码(不可重入函数)3,使用硬件资源(外设)4,对时序有精准要求的操作5,用户不想被打断的代码二,临界段API:void taskDISABLE_INTERRPUTS(void);这个函数的功能是:关闭中断,这里关中断只是频率低于configMAX_SYSCALL_INTERRUPT_PR

2021-06-05 15:01:56 325 1

原创 物联网延时函数实现原理

物联网延时函数实现原理:一,vTaskDelay:挂起调度器---->添加任务到延时列表---->恢复调度器进行上下文切换二,vTaskDelayUntil:挂起调度器---->判断记录的系统节拍值是否溢出,如果溢出,并且大于当前滴答值,把当前任务添加到延时列表---->判断记录的系统节拍值是否溢出,没有溢出,当前定时间隔小于记录值,或者大于系统节拍值,把当前任务添加到延时列表------>更新记录值恢复调度器,进行上下文切换。三,vTaskSuspendALL/xT

2021-06-05 08:20:05 573

原创 物联网延时函数的应用

物联网延时函数的应用:一,系统延时API详解:二,相对延时与绝对延时的区别:三,相对延时与绝对延时的应用:

2021-06-05 08:09:19 136 1

原创 物联网系统时钟节拍详解

物联网系统时钟节拍详解:一,SysTick初始化:配置SysTick装载值—>使能SysTick时钟源、使能SysTick中断、使能SysTick。二,SysTick中断服务函数:关闭中断—>Tick值增加、SysTick任务调度、启动PendSV—>开启中断三,SysTick任务调度:系统节拍数加1,判断是否溢出,溢出更新任务锁定时间--------->判断是否有任务需要解除阻塞,获取延时列表第一个任务控制块(时间排序),获取状态列表值,判断时间是否到达,未到达退出--

2021-06-05 07:59:50 887

原创 物联网多任务调度原理

物联网多任务调度原理:一,多任务启动:创建空闲任务—>配置SysTick、PendSV为最低优先级—>配置SysTick寄存器—>调用SVC中断。二,SVC业务流程:获取当前任务栈顶—>手动出栈r4-r11 r14(其余的硬件自动出栈保存了)—>更新栈顶到PSP—>使能全局中断、调用异常返回指令。三,PendSV业务流程:读取当前PSP值,获取当前任务栈顶—>保存s16-s31到栈中,保存r4-r11、r14到当前栈中—>更新栈顶到当前任务控制块

2021-06-03 21:32:06 189

原创 物联网多任务调度器基础知识

物联网多任务调度器基础知识:一,Cortex-M4中Systick的重要性:二,Cortex-M4中中断管理:1,Cortex-M4内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且具有256级的可编程中断优先级设置。但STM32F4并没有Cortex-M4内核的全部东西,而是只用了它的一部分。2,Cortex-M4处理器中,每一个外部中断都可以被使能或者禁止,并且可以被设置成挂起状态或者清除状态。中断和异常向量表Cortex-M4寄存器组---------特殊寄存器

2021-06-03 21:21:53 304

原创 2021-06-03

物联网 任务挂起和恢复实现原理:一,任务挂起原理深入:从就绪列表中删除—>从事件列表中删除—>添加任务到挂起列表中—>开始任务调度。二,任务恢复原理深入:从挂起列表中删除—>添加到就绪列表中—>开始任务调度三,任务相关API总结:...

2021-06-03 17:12:07 40

原创 2021-06-03

物联网任务创建和删除实现原理:一,任务控制块:1,RTOS的每任务都是有一些属性需要存储2,把这些属性集合到一起用一个结构体表示3,这个结构体叫做任务控制块(TCB_t)二,任务创建原理深入:分配任务控制块内存空间、分配任务堆栈空间---->初始化任务控制块、初始化任务堆栈---->添加任务到就绪列表中三,任务删除原理深入:从就绪列表中删除---->从事件列表中删除—>释放任务控制块、释放任务堆栈内存—>开始任务调度...

2021-06-03 17:07:47 30

原创 2021-06-03

物联网任务挂起和恢复一、功能需求:1,创建按键检查任务2,当按键按下时,挂起LED闪烁任务3,当按键松开时,恢复LED闪烁任务二、挂起和恢复API:三、功能实现:按键初始化—>按键检查任务创建—>按键中断函数实现—>任务内检测按键状态---->任务内检测按键状态(根据状态进行挂起/恢复LED任务)...

2021-06-03 17:01:01 44

原创 2021-06-03

物联网任务创建应用:一,功能需求:1,创建任务2,在任务中1s打印一次任务运行标志二,任务创建API:动态创建:静态创建:三,功能实现:流程:串口初始化----->任务静态创建------->printf重定向-------->任务内循环打印。...

2021-06-03 16:53:50 36

原创 2021-06-03

物联网操作系统任务调度机制:二,任务的特性:(1)使用简单(2)在资源够用的情况下,任务创建数量没有限制(3)高优先级可以抢占低优先级(4)任务支持优先级排序(RTOS是数值越大,优先级越高)(5)独立堆栈:任务切换时,需要保存运行环境(6)任务状态:(7)任务优先级:三,多任务实现1,死循环:每个任务都是一个死循环,可以理解位每个任务都有一个main函数入口2,任务实体:具体的任务功能、任务调度、延时等待…3,任务退出:任务实现函数没有返回值举个栗子:void Star

2021-06-03 16:46:08 68

原创 2021-06-02

文章目录前言一、DS18B20是什么?二、使用步骤总结前言一、DS18B20是什么?DS18B20技术性能特征1,独特的单总线接口方式,DS18B20在与微处理器连接时仅需要一条线即可实现微处理器与DS18B20的双向通讯。大大提高了系统的抗干扰性。2,测温范围 -55℃到+125℃,精度位0.5℃。3,支持多点组网功能,多个DS18B20可以并联在唯一的三根线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。4,工作电源:3-5.5..

2021-06-02 15:04:26 170

转载 __I、 __O 、__IO(从别那搬运过来的)

__I、 __O 、__IO是什么意思? 这是ST库里面的宏定义,定义如下:#define __I volatile const /*!< defines ‘read only’ permissions /#define __O volatile /!< defines ‘write only’ permissions /#define __IO volatile

2021-06-01 21:28:14 130

原创 2021-06-01

在这里插入代码片//这段代码看明白了,对于通过SPI对FLASH进行的一系列操作也就明白了void sFLASH_WriteBuffer(uint8_t* pBuffer, uint32_t WriteAddr, uint32_t NumByteToWrite){ uint16_t NumOfPage,NumOfBytes,count,offset; offset = WriteAddr % sFLASH_SPI_PAGESIZE; count = sFLASH_SPI_PAGESIZE

2021-06-01 20:18:35 112

原创 2021-06-01

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、红外线是什么?二、使用步骤前言。一、红外线是什么?光的基础知识:1,光的本质:光的本质是电磁波,其传播本质是一种粒子振动。广义上,光是指所有的电磁波谱。狭义上的光是人类眼睛可以看到的一种电磁波,也称可见光。2,光的波长:是指波在一个振动周期内传播的距离。光的波长由光的频率以及传播的介质决定,光通过不同介质的时候,频率不变而波长发生改变。3,光的颜色:是由它的波长来决定的,各种颜色有各自的波长,人的眼睛能看

2021-06-01 11:18:25 145

原创 2021-05-30

文章目录一、SPI是什么?二、使用步骤1.引入库2.读入数据总结一、SPI是什么?SPI是motorola首先提出的全双工三线同步串行外围接口,采样主从模式架构,支持多个Slave模式应用,一般仅支持单Master。时钟由Master控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后;SPI接口有两根单向数据线,为全双工通信,目前应用中的数据能达到几十Mbps的水平,有些能有几百Mbps。SPI总线广泛地使用在FLASH,ADC,LCD等设备与MCU间,要求通信速率较高的场合。SPI共..

2021-05-30 21:26:35 68

原创 2021-05-30

在这里插入代码片//写数据void Eeprom_Write(uint16_t MemAddr,uint8_t *Wbuf,uint16_t len){ while(len--) { while(HAL_I2C_Mem_Write(&hi2c1, Write_Addr, MemAddr,I2C_MEMADD_SIZE_16BIT, Wbuf, 1, 100) != HAL_OK); MemAddr++; Wbuf++; }}/*****************读数据***

2021-05-30 20:18:05 43

原创 2021-05-30

I2C总线协议:1,协议规定:总线上数据的传输必须以一个起始信号作为开始条件,以一个结束信号作为传输的结束条件。起始和结束都是由主设备产生。2,空闲状态:SCL和SDA都保持高电平。3,起始信号:当SCL为高电平而SDA由高到低的跳变,表示产生了一个起始条件。4,结束信号:当SCL为高电平而SDA由低变高的跳变,表示产生了一个结束条件。5,数据传输:数据传输以字节为单位,主设备在SCL线上产生每个时钟脉冲的过程中,将在SDA线上传输一个数据位,数据在时钟的高电平采样,在低电平变换,一个字节按数据

2021-05-30 17:01:29 129

原创 STM32 I2C

I2C由于只有两根线,比较简单,看上面这个图就能明白它的工作原理。

2021-05-30 16:44:48 117

原创 2021-05-30

文章目录前言一、pandas是什么?二、分布介绍前言此篇为STM32F407 DMA的学习。一、pandas是什么?DMA:叫做直接存储器访问,DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为RAM与I/O设备开辟一条直接传输数据的通道,从而大大提高CPU工作效率。二、分布介绍1,外设通道STM32F407系列志愿丰富,具有两个DMA控制器,同时外设繁多,为实现正常传输,DMA需要通道选择控制。每个DMA控制器具有8个数据流,每个数..

2021-05-30 15:49:54 323

原创 2021-05-30

ADC多通道采集实操:在这里插入代码片int main(void){uint32_t adc_value = 0; HAL_Init(); MX_GPIO_Init(); MX_USART3_UART_Init(); MX_ADC1_Init();printf("adc test2\n"); while (1) { HAL_ADC_Start(&hadc1); //多通道采集。先设置成扫描模式,先采集接入电阻的大小,再采集温度 for

2021-05-30 11:30:38 35

原创 2021-05-26

标题:STM32的ADC和DAC采集功能使用功能原理介绍:ADC概念:指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。ADC的作用:采集传感器的数据,测量输入电压,检查电池电量剩余,监测温湿度等。典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。ADC的性能指标量程:能测量的电压范围分辨率:ADC的分辨率通常以输出二进制数的位数表示,位数越多,分辨率越高,一般来说分辨率越高,转化时间越长。转化时间:模拟输入电压在允许的最大变化范围内

2021-05-26 11:40:41 326

原创 2021-05-26

STM32 PWM学习文章目录前言一、PWM是什么?二、使用步骤1.引入库前言PWM是我定时器常用的一个功能,例如:一个灯承受的电压不能过高,但由于自己正常管脚输出的电平过高,导致烧坏,这个时候PWM就派上用场了,PWM应用太多了,不一一列举了一、PWM是什么?PWM就是使用定时器的输出比较功能,例如:例句一个向上增长方式,极性为低有效的PWM。你设置CCR的值,这个值是输入[0,ARR]之间的,在值从0慢慢增长的过程中,这个值小于CCR时,输出低电平,当这个值增长到大于CCR时就输出高

2021-05-26 11:01:39 46

原创 2021-05-25

STM32定时器捕获篇:在这里插入代码片 在main函数里使能 HAL_TIM_Base_Start_IT(&htim2); HAL_TIM_IC_Start_IT (&htim2, TIM_CHANNEL_1);`在tim.c里面实现功能uint8_t fall_flag = 0;uint32_t cap_value = 0;void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim){ if(htim-&

2021-05-25 21:33:26 402

原创 2021-05-25

STM32按键中断已经串口中断的使用案例记录:在mian函数里面调用这两个函数在这里插入代码片```HAL_UART_Transmit_IT(&huart3, (uint8_t*)"uart send\n", 10); HAL_UART_Receive_IT(&huart3, (uint8_t *)uart3_buf, 1);然后在回调函数里面处理```c在这里插入代码片//发送足够的字符才回调这个函数 void HAL_UART_TxCpltCallback(UAR

2021-05-25 16:53:24 47

原创 2021-05-24

学习目标:理解中断是个什么概率已经使用原理。掌握STM32的中断操作STM32中断操作系统:处理器中的中断在处理器中,中断是一个过程,即CPU在正常执行程序的过程中,遇到外部/内部的紧急事件需要处理,暂时中止当前程序的执行,转而去为处理紧急的事件,待处理完毕后再返回被打断的序处继续往下执行。中断在计算机多任务处理,尤其是即时系统中尤为重要。比如uCOS,FreeRTOS等。意义:中断能提高CPU的效率,同时能对突发事件做出实时处理。实现程序的并行化,实现嵌入式系统进程之间的切换。网上有一种图很

2021-05-24 12:13:23 210

UART源码.zip 欢迎大家作为参考

串口源码,作为参考使用

2021-05-24

空空如也

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

TA关注的人

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