
STM32
文章平均质量分 94
神奇小炒肉
这个作者很懒,什么都没留下…
展开
-
RTOS下的通信管理
写到这里就能说明RTOS中队列的本质的相关定义了,**RTOS中的队列的本质即在环形队列的基础上加入了互斥机制和阻塞-唤醒机制,以实现环形队列中全局变量的使用。 队列的阻塞访问主要发生在队列的读取时候,也就是说当读的时候队列为空,或是读不到任务自己需求数据,则变阻塞(即卡),同时任务状态也为阻塞态。消息队列属于最常用的RTOS中不同任务(线程)之间进行通信的一大方式,需要注意的是RTOS中引入一系列的通信机制的目的在于在同步机制的基础上进行通信,再者则是使用相关API时注意参数的格式对应。原创 2025-01-02 10:10:35 · 622 阅读 · 0 评论 -
RTOS下的任务管理
任务管理算是FreeRTOS中核心以及重点内容。简而言之,后续代码移植嫁接便是在任务管理的基础上进行的。对于任务管理的重中之重则是在于多任务管理。任务具有一系列状态以及优先级(Priority)等相关属性。任务的一系列相关数据是在栈中保存的,多个任务之间的协作处理[^231]称之为任务调度(即CPU按照某种算法策略进行不同任务间的切换)。 任务即需要完成的一件件功能,也称之为“线程(thread)”,需要注意的RTOS中一个完整的任务由任务栈(Stack)+任务控制块(TCB)组成。运行态。原创 2024-12-24 15:22:11 · 812 阅读 · 0 评论 -
FreeRTOS下的内存管理
堆本质是一块被管理的空闲区域块,在堆的基础上再为没个任务分配出任务控制块(TCB)和栈(Stack),其次是关于内存具体分配中FreeRTOS中用得最多是heap_4方法,其比较实用为。 heap_4最初也是使用大数组来分配内存,但其还使用了首次适应算法(first fit),实现把相邻的内存合并为一更大内存,有效的缓解了内存碎片问题。: 即采用heap_4进行任务的内存分配时,选择第一次找到适应task需求的内存块,分配剩下的块中的空闲字节会留给后续的。进行内存管理目的在于高效的理由嵌入式内存空间。原创 2024-12-16 12:36:57 · 635 阅读 · 0 评论 -
stm32多串口数据互传实现(HAL版)
这里写串口互传(主要是串口1和串口2)目的在于便于调试,即电脑端知道最终ESP8266-01s的响应内容并进行调试。其核心在于Usart2收到回复后触发中断,并在中断中判断收到数据的完整性,若接收到响应数据完整则让该数据通过Usart1的TX发送到电脑串口端,电脑端进行接收。Usart2的接收中断回调函数(实现接收到一个字节数据向缓冲区存储一个字节数据)这里还需要注意的是单个字符char是占一个字节(8位)。自定义串口数据接收结构体以实现多字节串口数据的保存。多串口互传是怎样实现的?原创 2024-12-07 20:19:26 · 1154 阅读 · 0 评论 -
stm32(HAL)版下的DHT11外设
首先主机总线[^22]空闲状态时,VCC呈现高电平,原创 2024-11-27 10:09:35 · 861 阅读 · 0 评论 -
stm32下的ADC转换(江科协 HAL版)
这种算是常见的逐次ADC采样的元器件示意图,其采样通道有(IN0 ~ IN7),采样后,将采样的电压与ADC内部的DAC模块产生的电压进行比较(在比较器中进行),再根据比较结果不断调整DAC的值,直到不断逼近最终的采样值,而这DAC调整的过程就由SAR寄存器来完成的(通常调整方法为二分查找法),最后再将结果通过(D0 ~ D7进行输出)。 若需多个通道进行单次采样,则选择单次转换,扫描模式,若需多次则连续转换扫描模式, 这里的ADC1与ADC2的引脚相同,采用的双ADC模式,也就是交叉模式,原创 2024-11-17 16:25:04 · 1576 阅读 · 0 评论 -
STM32定时器从原理到案例(HAL版)
两路捕获的极性(极性指的是上升沿或是下降沿)各不相同,其中一路设置好某种极性,另一路则由硬件设置相反的极性捕获,最后将捕获到的数值存放到不同的寄存器中,即得到不同结果。,当捕获通道TIx出现上升沿时,进行一次捕获,并将捕获的计数值CNT存储到捕获寄存器中,再改变捕获模式为下降沿捕获,则第二次出现下降沿时即得到数值value2, 相减则得到高电平脉宽。 定时器顾名思义,定时用的,主要分为基本定时,通用定时,高级定时三类,这三类除了基本定时是向上计数外,通用和标准区别不算太大。函数中进行复用进行的。原创 2024-11-08 17:00:33 · 1171 阅读 · 0 评论 -
STM32下的SPI(从原理到代码)
关于SPI通讯的话,主要还是采用标准库的学习较好,主要原因在于HAL库的话比较冗余,其启动占用比较多,而标准库则相对简洁。由于IIC通讯速率还是比较慢,对于某些实时要求比较高的场景可能不利。因此SPI诞生,即串行外围设备接口,是一种高速全双工的通信总线,主要适用于通信速率要求较高的场合如ADC LCD与MCU之间。常见SPI(一主多从)的物理层的构造主要如下所示: SPI的构成由三条总线(SCK,MOSI,MISO),和一系列片选线(具体片选线的位数看从机个数)构成(片选线也称为NSS、CS)。原创 2024-10-28 15:43:48 · 2062 阅读 · 0 评论 -
STM32下的IIC协议基础(从原理到代码案例)
再是进行数据的读取保存,原创 2024-10-22 21:33:58 · 1041 阅读 · 0 评论 -
一文搞懂STM32的串口通信(附库函数代码讲解)
通讯是指不同计算机设备或是集成电路之间需要进行数据传输的方式,而这些传输的一系列方式就是通讯协议。原创 2024-10-16 20:14:02 · 1787 阅读 · 0 评论 -
一文搞懂STM32中断原理与代码使用
使能外设某个中断(首先外设具备中断功能)[初始化外设中断]初始化NVIC_InitTypeDef结构体// 中断源// 抢占优先级// 子优先级// 中断使能或者失能中断响应函数(中断服务函数)在启动文件 startup_stm32f10x_hd.s 中我们预先为每个中断都写了一个中断服务函数,但这些中断函数都是为空,为的是初始化中断向量表。实际中断响应函数统一写在了 stm32f10x_it.c 这个库文件中,需要注意的是中断函数向量地址不要搞错,不然容易死循环。原创 2024-10-12 16:55:56 · 1117 阅读 · 0 评论