![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STM32
文章平均质量分 90
千千道
千道千寻
展开
-
UCOSIII信号量详解
UCOSIII信号量是UCOSIII操作系统中用于任务同步和互斥访问共享资源的一种重要机制。下面我将详细解释UCOSIII信号量的类型、使用方法,以及它在UCOSIII操作系统中的作用。原创 2024-08-15 14:04:09 · 846 阅读 · 0 评论 -
UCOSIII内存管理机制详解
UCOSIII(即Micrium μC/OS-III)的内存管理是其操作系统功能的一个重要组成部分,旨在高效地管理和分配系统内存资源。UCOSIII将内存管理分为不同的区域(或称为“区”)和块。每个区域包含多个固定大小的内存块,这些内存块用于满足应用程序的不同内存需求。原创 2024-08-14 13:47:39 · 690 阅读 · 0 评论 -
UCOSIII事件标志组详解
定义:在UCOSIII中,事件标志组是类型的内核对象,用于管理一串事件标志位。创建:在使用事件标志组之前,需要调用函数来创建一个事件标志组。这个函数需要指定事件标志组的名称、初始值以及一个用于保存错误码的参数。事件标志组对象事件标志组的名字事件标志组里所有标志位的初值,默认写0返回错误码,没有错误的就返回OS_ERR_NONE。原创 2024-08-13 16:27:44 · 1324 阅读 · 0 评论 -
UCOSIII消息队列详解
UCOSIII的消息队列是由一系列消息按照一定的队列规则(如先进先出FIFO或后进先出LIFO)组成的数据结构。每个消息包含一个指向数据的指针、数据的大小以及时间戳等信息。通过消息队列,任务间可以传递不固定长度的消息,实现了任务间的异步通信。原创 2024-08-12 13:41:31 · 1401 阅读 · 0 评论 -
UCOSIII不开启时间片轮转调度同一优先级任务如何执行
UCOSIII(MicroC/OS-III)中的时间片轮转调度(Round-Robin Scheduling)是一种用于分时系统中进程调度的算法,它主要用于解决在相同优先级下多个任务如何公平地共享CPU资源的问题。原创 2024-08-11 13:26:06 · 1422 阅读 · 0 评论 -
UCOSIII的任务管理详解
对于操作系统而言,最重要的就是任务的创建、挂起、删除和调度等,简单的创建任务可能大家都会,但是做大型项目的话,任务多了就可能需要对UCOSIII的任务管理做更深层次的一些理解。原创 2024-08-09 14:05:23 · 883 阅读 · 0 评论 -
基于STM32F429移植UCOSIII
μC/OS-III(Micro C OS Three)是一个可升级的、可固化的、基于优先级的实时内核,它是Micrium公司出品的RTOS(实时操作系统)类实时操作系统的一个版本。原创 2024-08-08 14:38:40 · 1250 阅读 · 0 评论 -
STM32的USB接口介绍
STM32 USB接口是STM32微控制器系列中集成的一种通信接口,它允许STM32微控制器与外部设备或计算机进行高速的数据传输和通信。STM32的USB接口通常支持USB 2.0标准,部分高端型号可能还支持USB 3.0或更高版本。根据STM32的USB IP模块不同,USB接口可以分为低速(Low-Speed)、全速(Full-Speed, FS)、高速(High-Speed, HS)或超高速(SuperSpeed, SS)四种类型。原创 2024-08-07 14:05:02 · 1607 阅读 · 0 评论 -
STM32的SDIO接口详解
SDIO是在SD卡接口的基础上发展而来,它兼容SD卡,并可以连接SDIO接口设备。STM32的SDIO控制器支持多种存储卡和接口设备,包括多媒体卡(MMC卡)、SD存储卡、SDIO卡和CE-ATA设备。STM32的SDIO控制器复位后,SDIO_D0用于数据传输。如果连接了多媒体卡,则SDIO_D0、SDIO_D[3:0]或SDIO_D[7:0]可以用于数据传输。原创 2024-08-06 14:09:51 · 1418 阅读 · 0 评论 -
STM32卡死、跑飞如何调试确定问题
我们初学STM32的时候代码难免会出现疏忽,导致程序跑飞,不再正常运行,那么都是什么情况会导致STM32程序跑飞呢?原创 2024-08-02 17:18:36 · 1673 阅读 · 0 评论 -
STM32的内存映射机制详解
刚开始学习STM32的同学可能只知道按案例配置RAM、Flash的起始地址和容量,但是这个地址是怎么来的,可能并不清楚,接下来让我来给大家介绍一下STM32的内存映射机制。STM32的内存映射机制是一种将不同的内存区域(包括Flash、SRAM、外设寄存器等)按逻辑功能映射到单片机的线性地址空间中的方法。这种机制使得用户可以通过访问特定的地址来操作存储单元或外设寄存器,从而实现对STM32单片机内部资源的直接控制。原创 2024-07-31 16:51:04 · 1497 阅读 · 0 评论 -
UCOSIII的中断和时间管理
UCOSIII(也称为µC/OS-III)的中断管理是其实时操作系统(RTOS)功能的重要组成部分。中断是CPU的一种常见特性,用于向CPU通知异步事件的发生,使得CPU能够暂停当前正在执行的程序,转而执行中断服务程序(ISR)。在UCOSIII中,中断管理涉及多个方面,包括等。原创 2024-07-30 14:57:16 · 964 阅读 · 0 评论 -
STM32的IO复用详解
STM32的IO复用是指STM32微控制器中的通用输入输出(GPIO)引脚可以配置为执行除了基本的输入输出功能之外的其他特定功能。这些特定功能通常与STM32的内置外设(如ADC、TIM、USART等)相关联。当GPIO引脚被配置为执行这些特定功能时,就称为引脚复用。具体来说,STM32的每个GPIO引脚都通过一个复用器连接到多个内置外设或模块。这个复用器允许一次只选择一个复用功能(AF)连接到对应的IO口,从而确保共用同一个IO引脚的外设之间不会发生冲突。原创 2024-07-27 16:19:25 · 1123 阅读 · 0 评论 -
STM32的外部中断详解
想象一下你正在家里做饭,突然门铃响了,你听到门铃声后,会暂时放下手中的事情(比如炒菜),去开门看看是谁。在这个例子中,门铃声就是一个“中断”,它打断了你原本在做的事情(炒菜)。在STM32(一个常用的微控制器)中,中断也是类似的概念。STM32有很多功能,比如控制LED灯、读取传感器数据、与电脑通信等。当STM32正在执行某个任务时,如果外部发生了某个事件(比如一个按钮被按下、一个传感器值发生了变化),这个事件就会产生一个“中断信号”,告诉STM32:“嘿,有事情发生了,你需要停下来看看!原创 2024-07-25 16:21:20 · 1439 阅读 · 1 评论 -
norflash和nandflash的区别
NAND Flash是一种非易失性存储器,内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。NOR Flash,也称为NOR型闪存,是一种非易失性存储器(NVM),它可以在不需要持续电力供应的情况下保留存储的数据。NOR Flash以其高可靠性和直接执行代码(eXecute In Place, XIP)的能力而著称,这使得它成为嵌入式系统和某些特定应用的理想选择,我们常用的片内flash通常都是norflash,STM32的代码在片内flash中运行,而不是在片内RAM里面。原创 2024-07-24 15:46:43 · 1429 阅读 · 0 评论 -
STM32的串口(RS485)数据收发
我们的单片机串口一般常用RS232、RS485、TTL这几种通讯方式,日常调试可能RS232、TTL比较多,真正和其它厂家数据交互的时候,还是RS485用的比较多,因为它是差分信号等电气属性,所以比较稳定,传输距离长,常与同用交互数据,今天这篇文章就讲一下如何利用RS485进行数据收发。原创 2024-07-20 16:09:40 · 1685 阅读 · 0 评论 -
STM32被拔网线 LWIP的TCP无法重连解决方案
一开始的解决思路就是在tcp的recv下面加一个检测网线是否被插入的判断,如果网线被拔出的话,也break,跳出当前while去上一级while里面进行tcp连接,可是忽略了recv函数阻塞的问题,网线被拔出recv没有数据根本不往下执行,如果是netconn不阻塞的那种倒是可以,所以这个方案否了。后来琢磨recv不是阻塞么,不如重新创建一个任务检测网口的网线插入状态,算是解决了网线拔出再插入以后tcp不能重新建立连接的问题,可能方法过于简单粗暴,如果大佬有更好的方法解决这个问题欢迎交流指导。原创 2024-07-19 16:42:21 · 1663 阅读 · 0 评论 -
STM32的ADC详解
ADC是,是一种将模拟量(如电压值、光敏电阻阻值、热敏电阻阻值等)转换为数字量的设备。STM32F4的ADC是12位逐次逼近型的模拟数字转换器,具有多达19个复用通道,可测量来自16个外部源、2个内部源通道的信号。ADC的结果存储在一个左对齐或者右对齐的16位数据寄存器中。STM32F4系列有3个ADC,这些ADC可以独立使用,也可以使用双重或者三重模式来提高采样率。原创 2024-07-17 15:26:50 · 1524 阅读 · 2 评论 -
如何通过网络快速搜寻到自己的STM32设备
以前一直用RS232串口修改设备配置信息,但是现场施工人员的232线太细,经常容易断掉,这次准备用网口去修改,遇到了一个问题,那就是网口还需要TCP传输数据,网口的ip是根据现场分配的,所以你可能修改了网口ip以后,如果下一次去维护却,这就很尴尬了。所以,如何通过网络搜寻到自己的STM32设备,就非常重要了。原创 2024-07-16 09:50:27 · 784 阅读 · 0 评论 -
STM32串口通讯(RS232、RS485、TTL)详解
STM32是STM32微控制器中用于串行通信的接口,通常指的是USART(通用同步异步收发器)或UART(通用异步收发传输器)。这些接口允许STM32微控制器与其他设备(如计算机、其他微控制器、传感器等)进行串行数据交换。串行通信一般是以数据,数据一帧一帧的被传输,每帧包含有起始信号、数据信息、校验信息、停止信号。原创 2024-07-10 15:55:08 · 2201 阅读 · 0 评论 -
STM32CubeMX如何配置生成项目以及安装包
STM32CubeMX是STM32Cube工具家族中的一员,专门为STM32微控制器的开发提供便利。它是一款图形化工具,允许用户通过直观的方式完成从MCU/MPU选型、引脚配置、系统时钟以及外设时钟设置,到外设参数配置、中间件参数配置等一系列工作。本文所用STM32CubeMX版本号为v6.1.0,如果没有安装包的朋友可以从下面下载,由相近版本号的朋友可以直接参考下文生成项目。原创 2024-07-09 11:42:55 · 1092 阅读 · 0 评论 -
STM32时钟详解(基于STM32F429)
STM32的就像是这个微控制器(MCU)的“心跳”或者“节拍器”。。想象一下,如果你有一个机器人在做动作,时钟就是控制它每一步动作的速度和时间点的。如果时钟快了,机器人的动作就会加速;如果时钟慢了,机器人的动作就会变慢。同样地,在STM32中,如果时钟频率设置得高,MCU就会运行得更快,能够更快地处理数据;如果时钟频率设置得低,MCU就会运行得慢一些。原创 2024-07-08 16:10:27 · 1605 阅读 · 0 评论 -
STM32的SPI接口详解
STM32 的是一个串行外设接口,它允许STM32微控制器与其他设备(如传感器、存储器等)进行高速、全双工、同步的串行通信。通常包含SCK(串行时钟)、MOSI(主设备输出/从设备输入)、MISO(主设备输入/从设备输出)和NSS(片选信号)这4条线,支持多个从设备连接到一个主设备上。原创 2024-07-08 10:41:59 · 1560 阅读 · 0 评论 -
STM32的独立看门狗详解
STM32的独立看门狗(Independent Watchdog,简称IWDG)是一个完全独立的低功耗硬件定时器,它由一个专用的低速时钟(LSI,Low Speed Internal clock)驱动。这个时钟是独立于主时钟系统的,因此即使在主时钟失效的情况下,独立看门狗依然能够继续工作。原创 2024-07-07 16:42:49 · 1019 阅读 · 0 评论 -
STM32的 DMA(直接存储器访问) 详解
STM32的是一种在单片机中用于高效实现数据传输的技术。它允许外设设备直接访问RAM,不需要CPU的干预,从而释放CPU资源,提高CPU工作效率,本文基于STM32F429、Hal库详细分析DMA的特性与使用。原创 2024-07-05 13:51:52 · 2047 阅读 · 0 评论 -
STM32 IIC详解(软件模拟)
IIC也被称为I2C和I²C,硬件方面由于存在专利,所以日常中我们常以两个IO口用软件模拟IIC来使用。IIC串行总线有两根信号线:数据线SDA和时钟线SCL。IIC总线上的设备通过地址进行区分,不同种类的设备地址不同。只要不超过IIC总线上的电容限制(一般不超过400pf),就可以连接任意数量的从机,在通信时刻,只能有一个作为主机,其他的都为从机。高速IIC总线一般可达400kbps以上。原创 2024-07-07 13:22:09 · 1471 阅读 · 0 评论 -
STM32 低功耗模式 睡眠、停止和待机 详解
STM32提供了三种低功耗模式,分别是睡眠模式(Sleep Mode)、停止模式(Stop Mode)和待机模式(Standby Mode),我们在做一些电池供电项目的时候,低功耗模式显得尤为重要。原创 2024-07-04 17:24:18 · 855 阅读 · 0 评论 -
STM32的Code、RO-data、RW-data、ZI-data和RAM以及flash的关系
我们的项目每次编译完成后,都会出现这个Program Size,然后后面跟着Code、RO-data、RW-data、ZI-data,其实这里就是编译软件在告诉我们,这个项目需要用到多少ram以及flash才能正常运行。RAM=RW-data+ZI-dataflash=Code+RO-data+RW-data原创 2024-07-04 13:59:56 · 1075 阅读 · 0 评论 -
STM32的delay函数详解以及带不带操作系统的区别(基于HAL库)
在裸机程序中,delay_ms函数与delay_us函数正常使用即可,在操作系统中,使用delay_ms函数的时候,如果设置的延时时间大于操作系统设置的最小的调度时间,就会进行正常的任务调度拉起当前任务,执行下一个已就绪的任务,直到剩余延时时间小于操作系统设置的最小的调度时间,就进行delay_us函数,注意的是,只要是delay_us函数被调用的时候,系统不会进行任务调度。原创 2024-07-03 11:40:13 · 1326 阅读 · 0 评论 -
对于STM32(F429)堆栈的理解
堆(Heap)是一种动态分配的内存方式,用于存储程序运行时动态创建的对象或数据。堆由程序员手动分配和释放的,分配速度相对较慢,但大小理论上没有限制。堆的管理通常由操作系统或编译器提供的库函数来完成,如使用malloc函数分配内存,使用free函数释放内存。堆上的数据可以通过指针进行访问,且由于堆的管理需要额外的开销,所以堆的操作相对较慢。栈(Stack)是一种后进先出(LIFO)的数据结构,主要存储函数的局部变量、函数参数以及函数返回地址等信息。原创 2024-07-02 15:22:06 · 1619 阅读 · 0 评论 -
单片机的寄存器都有什么
单片机的寄存器就是我们嵌入式软件的基础,是硬件与软件沟通的桥梁。单片机的寄存器是单片机片内存储器(片内RAM)的一部分,每一个都有地址,并且具有特殊的作用。。单片机的寄存器在本质上是一组被集成在单片机内部的内存单元,它们被设计成可以快速访问,通常位于CPU内部或者非常靠近CPU的位置。这些寄存器为软件提供了一种与硬件设备(如I/O端口、定时器、中断控制器等)进行交互的接口,并存储了硬件设备的状态信息,如某个端口是输入还是输出,中断是否被触发等。原创 2024-07-01 15:36:50 · 565 阅读 · 0 评论