- 博客(439)
- 资源 (8)
- 收藏
- 关注
原创 细说STM32单片机通过FSMC访问片外NAND Flash的方法及实例
完成上述的设置以后,IDE自动生成代码,自动生成的代码里,根据本例NAND FLASH的需要,最重要的是介绍一下驱动函数stm32f4xx_hal_nand.h,这是针对NAND FLASH生成的非常完整的驱动,并且其内自动生成的针对访问NAND FLASH的函数,能够满足绝大多数的应用。这类用途及解决办法网络上有很多,但是,网络里的资源都太旧了,使用的开发环境落后了,那时候,片外的NAND FLASH的驱动还需要自己写。但必要的情况下,需要修改一些重要的定义,但是,遗憾的是每次生成都需要过来重写一次。
2025-11-20 16:40:32
758
原创 细说STM32单片机USBD_MSC_SPI Flash虚拟U盘接口项目创建及编程方法
在USBD中间件众多的IP类中,可以把MCU中片外的SPI FLASH创建成虚拟的U盘,并在电脑端自动识别、驱动U盘,然后通过接口操作U盘。继续使用旺宝红龙开发板STM32F407ZGT6 KIT V1.0,使用STM32CubeIDE 1.19.0。细说STM32单片机USBD_MSC_FlashInChip虚拟U盘接口项目创建及编程方法-优快云博客。本文旨在演示如何把MCU片外的SPI FLASH创建成一个虚拟U盘,然后通过U盘接口创建文件、读写文件。3、中间件USB_DEVICE。
2025-11-11 17:13:07
224
原创 细说STM32单片机USBD_MSC_FlashInChip虚拟U盘接口项目创建及编程方法
在这里,把STORAGE_BLK_SIZ解释为FLASH页更好,F407的手册里并没有FLASH页的说法,但有扇区的说法,并且各个扇区的大小还不相等,区分为16K、64K、128K。在创建U盘接口时,不能把全部的页用于创建U盘,到底需要把到少数量的页用于创建U盘,需要尝试,编译一次,就会知道是否超过了存储空间的允许。在USBD中间件众多的IP类中,可以把MCU中片内的FLASH的一部分空间创建成虚拟的U盘,并在电脑端自动识别、驱动U盘,然后通过接口操作U盘。选择Device_Only,参数默认;
2025-10-21 11:07:44
837
原创 细说STM32单片机USBD_MSC_SD_FATFS项目创建及编程方法
但是,不是没有办法,IDE在usbd_storage_if.h里声明了一个接口操作函数fops,如此,通过在其他.c文件里包含usbd_storage_if.h,就可以通过调用。在其他的位置,比如在main.c无法直接调用这些函数,因为,对应的usbd_storage_if.h里没有声明这些函数,因此main.c无法通过include包含这些函数。下载后,在电脑端自动识别和驱动U盘,通过鼠标操作该U盘,比如创建1个123.txt的文件,打开这个文件,在其内写入文字,存盘。(这不具有普遍性,理应选择4线的。
2025-10-04 15:00:06
964
原创 细说STM32单片机USBD_HID项目创建及编程方法
的值为 0 或 1, 为1表示HID设备是一个启动设备(BootDevice, 一般对PC机有意义,意思是BIOS启动时能识别您使用的HID设备,切只有标准鼠标或者键盘才能称为BootDevice),为0表示HID设备是操作系统启动厚才能识别使用的设备。HID设备描述符主要描述HID规范的版本号, HID通信所使用的额外描述符,报告描述符的长度等。IDE配置完毕后,自动生成USBD_HID类设备的驱动代码,无论HID是标准键盘、鼠标还是游戏杆(JoyStick),所有驱动都是自动生成的,并且默认生成的。
2025-09-24 16:38:52
869
原创 细说STM32单片机USBD_CDC项目创建及编程方法
USBD_CDC与其他设备,比如串口助手的收发操作,代码都要写在这个文件里。使用单片机多功能调试助手作作为USBD_CDC的收发测试软件,开启连续发送,开启发送新行。VCP_V1.5.0_Setup_W8_x64_64bits.exe,最新版本V1.5.0。里设计了2路内容相同但通信手段不同的对比测试,一路通过USBD_CDC收发,另一路通过USART6收发。usbd_cdc_if.c为USB的CDC类应用层文件,里面包含虚拟串口的接收,发送和控制等函数。其中,CDC_Transmit_FS()负责发送;
2025-09-18 14:16:09
764
原创 细说STM32单片机USBD_Custom_HID项目创建及编程方法
无论接收到还是发送出去的,都有两种格式,一种ASCII字符,一种ASCII 16进制值。本例,作者通过创建一个USBD_Custom_HID的键盘项目,并提供一套软件DEMO,向读者介绍此类项目的开发经验、编程入口。接收区,1帧,64字节数据,数据内容是程序赋值的,帧头、1、2、...、63,共64个字节。一共发了2次数据,发送的是字符,ASCII字符,64字节,1个字符占一个字节,空格也占一个字节。编译后下载到开发板上。USB分析仪上,也接收到了2次数值,只能显示16进制数值,不能显示字符。
2025-09-11 15:02:16
754
原创 细说STM32单片机用FatFS管理USBH_MSC项目中调库函数的规则和使用方法
私有App里调用USBH_前缀专用函数时,私有函数在main.h里声明,在usbh_diskio.c里定义,能否在其他的位置定义,需要读者去尝试,定义的位置不对,会引起百编译错误,按做这个方法声明和定义,没有编译错误。本文的目的是,向读者介绍在用FatFS管理USB-OTG FS HOST项目中,在自己的App里,当需要管理U盘文件(如:读、写、查询信息、检查U盘状态,初始化,等)时,既可以调用第三方提供的通用驱动函数(f_前缀),也可以调用。的专用驱动函数(USBH_前缀,2个中间件共同作用的结果)。
2025-08-19 16:26:53
947
原创 细说STM32单片机配置为USBH_FS并用FatFS管理U盘文件系统的方法与实例
函数MX_FATFS_Init()用于FatFS初始化,函数MX_USB_HOST_Init()用于USB Host的初始化,这是在文件usb_host.h中定义的一个函数。在main()函数的外设初始化部分,调用函数MX_USB_HOST_Init()进行USB Host初始化,这个函数是在文件usb_host.h中定义的,这个文件同时还定义了USBH背景任务函数MX_USB_HOST_Process()。第3个变量是USB的ID,宏常数HOST_FS的值为1,表示USB-OTG FS。
2025-08-15 01:00:00
1226
原创 细说STM32单片机在应用SD卡的项目中调用不同路径的库函数的规则和使用方法
本文旨在详细介绍STM32单片机访问(阻塞模式、非阻塞模式)SD卡,和STM32单片机开启文件系统FATFS后访问SD卡,在私有应用函数里调用STM32CubeIDE自动生成的各类驱动函数的最佳路径和方法。选择不同的驱动函数,编程的路径和方法是不一样的,但正确编程的结果是一样的。为了发布本文,本文作者已经发布相关文章4篇,为的是证明,选择不同的驱动函数,编程的路径和方法是不一样的。但一定有一种方法是最简单和最实用的。
2025-07-26 14:34:56
972
原创 细说STM32单片机SD卡的FatFS文件系统并使用DMA模式访问SD卡的方法及其应用
文件sd_diskio.c中定义的函数BSP_SD_WriteCpltCallback()和BSP_SD_ReadCpltCallback(),实际上是文件bsp_driver_sd.c中两个同名的弱函数的重新实现。经过测试, FATFS文件系统针对SD卡的专用函数为sd_diskio.c/h和bsp_driver_sd.c/.h,在自己的应用里调用这些专用函数,比如SD_write(),需要把私有函数写在sd_diskio.c的沙箱里。两个示例的主程序大致功能,也就是应用层的功能,是相同的。
2025-07-26 10:55:33
1083
原创 细说STM32单片机SD卡的FatFS文件系统并使用轮询模式访问SD卡的方法及其应用
检测SD卡状态在SD卡的应用程序里很重要,为了提高程序的鲁棒性IDE自动生成的程序代码里多次出现检查SD卡的状态,因此,如果使用者忽略了对SD卡状态的检查(检查是否插入、检查是否装载),程序的容错能力就会很弱,就会发生意想不到的失误,比如,不能装载、不能写入、不能读出,偏偏有的时候还能装载或写入或读出。此处,声明了5个Disk IO函数,即SD_initialize()、SD_status()、SD_read()、SD_write()、SD_ioctl()。系统中只有一个驱动器,驱动器号是“0:”。
2025-07-14 11:33:05
1100
原创 细说STM32单片机使用DMA模式直接访问SD卡的方法及其应用
阅读本文需要的基本知识可以参考本文作者发布的文章:细说STM32单片机使用轮询模式直接访问SD卡的方法及其应用-优快云博客SD的HAL驱动程序提供了DMA方式读写SD卡的函数,即HAL_SD_WriteBlocks_DMA()和HAL_SD_ReadBlocks_DMA()。当SD卡读写数据量比较大时,使用DMA方式可以减少处理器负荷,提高运行效率。本文用一个示例演示DMA方式读写SD卡的操作。一、示例:以DMA方式读写SD卡1示例功能与CubeMX项目设置。
2025-07-10 11:28:58
1069
原创 细说STM32单片机使用轮询模式直接访问SD卡的方法及其应用
某些寄存器可以由函数直接读取,例如,函数HAL_SD_GetCardCID()可读取CD的内容,函数HAL_SD_GetCardCSD()可读取CSD的内容,函数HAL_SD_GetCardStatus()可读取SSR的内容。按下开发板的复位键后,能显示正确的菜单,接着,可以操作各个菜单。上述代码的主要功能就是调用函数HAL_SD_GetCardInfo()获取SD卡的信息,并将返回的信息存储在结构体HAL_SD_CardInfoTypeDef类型的变量cardInfo里,这个结构体各成员变量的意义如下。
2025-07-10 08:37:38
1030
原创 细说STM32单片机SPI-Flash芯片的FatFS移植及其应用实例详解
本文以开发板上的SPI-Flash芯片W25Q16为媒介详细介绍CubeMX中FatFS各个参数的意义和设置,分析生成的代码中FatFS各个文件的作用和关联,完成针对W25Q16的硬件访问层的移植。继续使用旺宝红龙开发板STM32F407ZGT6 KITV1.0。
2025-06-16 17:16:23
1227
原创 细说STM32单片机FatFS文件系统基础知识和函数详解
目录一、FatFS概述1、FatFS的作用(1)用户应用程序(2)FatFS通用程序(3)FatFS底层设备控制(4)存储介质和RTC2、文件系统的一些基本概念(1)文件系统(2)FAT卷(3)扇区(4)簇(5)数据存储形式3、FatFS的功能特点和参数4、FatFS的文件组成(1)用户应用程序(2)FatFS应用接口5、FatFS通用硬件接口(1)具体硬件访问层(2)具体硬件6、FatFS的基本数据类型定义二、 FatFS的应用程序接口函数1、卷管理和系统配置相关函数(1)函数f_mkfs()(2)函数f
2025-06-16 09:00:00
1930
原创 细说STM32单片机FreeRTOS Tickless及低功耗的设计方法及应用
也就是说,在Tickless模式下,如果没有其他中断将MCU从睡眠模式唤醒,睡眠模式一次最多也只能持续99个节拍。当参数configUSE_TICKLESS_IDLE设置为1,且空闲任务预期的持续时间大于参数configEXPECTED_IDLE_TIME_BEFORE_SLEEP设置的值时,FreeRTOS就会在进行上下文切换时计算MCU处于睡眠模式的预期节拍数,然后调用内部定义的一个弱函数vPortSuppressTicksAndSleep(),停止SysTick定时器中断,使MCU进入睡眠模式。
2025-06-06 08:30:00
772
原创 细说STM32单片机FreeRTOS空闲任务及低功耗的设计方法及应用
在CubeIDE中打开项目,将KEY_LED驱动程序目录添加到项目搜索路径,在main()函数中添加用户功能代码,并且在文件main.c中重新实现EXTI中断事件处理的回调函数HAL_GPIO_EXTI_Callback(),用于对KeyRight键按下的中断做出处理。利用FreeRTOS空闲任务的钩子函数和MCU睡眠模式的特点,在使用FreeRTOS时实现低功耗的一种基本方法就是:在空闲任务的钩子函数里,执行WFI或WFE指令使MCU进入睡眠模式,在发生中断或事件时,从睡眠模式唤醒。
2025-06-05 14:36:29
1043
原创 细说STM32单片机HAL和FreeRTOS两个基础时钟的工作原理
在一个FreeRTOS应用中,系统具有两个基础时钟:HAL和FreeRTOS基础时钟。所以要搞清楚为什么存在HAL和FreeRTOS两个基础时钟,以及它们是如何工作的。1使用SysTick作为HAL的基础时钟HAL需要设置一个定时器作为基础时钟。基础时钟通过定时中断产生嘀嗒信号,嘀嗒信号的默认频率是1000Hz,也就是基础时钟的定时周期是1ms。基础时钟主要用于实现延时函数HAL_Delay()或在一些有超时(timeout)设置的函数里确定延时。
2025-06-05 09:00:00
1375
原创 细说C语言将格式化输出到字符串的函数sprintf、_sprintf_l、swprintf、_swprintf_l、__swprintf_l
其中的一部分函数在VS2022 17.13.6以上版本上都被弃用了,如果执意要用,需增加以下预编译,否则,会出现警告C4996,并且没有编译结果。C语言将格式化输出到字符串的函数的外观表达是以sprintf()为根的。利用指定参数在格式字符串中使用的顺序的能力将带格式的数据写入字符串。2、 将格式的数据写入字符串函数,并启用在格式字符串中使用参数的顺序的规范。3、 将格式的数据写入字符串函数的安全版本。1、 将格式的数据写入字符串函数基本型。
2025-06-04 16:23:02
1221
原创 细说C语言将格式化输出到FILE *stream流的函数fprintf、_fprintf_I、fwprintf、_fwprintf_I
C语言将格式化输出到FILE *stream流的函数的外观表达是以fprintf()为根的。2、将格式化数据输出到FILE *stream流并启用并启用在格式字符串中使用参数的顺序的规范。3、将格式化数据输出到FILE *stream流安全版本。1、将格式化数据输出到FILE *stream流基本型。
2025-06-04 13:14:42
430
原创 细说C语言将格式化输出打印至标准输出流stdout的函数 printf、_printf_l、wprintf、_wprintf_l
将普通字符和转义序列按照其外观的顺序复制到 stdout。返回值:返回输出的字符数或负值(如果出错)。自变量由普通字符、转义序列和(如果自变量遵循 format。如果允许执行继续,则该函数将返回 -1 并将。将格式化输出打印至标准输出流,将格式化输出打印至标准输出流。返回值:返回输出的字符数或负值(如果出错)。(0xFFFF),则该函数将返回 -1。,则会调用无效的参数处理程序,如。如果在 argument。
2025-05-31 19:23:57
542
原创 细说STM32单片机FreeRTOS软件定时器及其应用实例
在FreeRTOS中,自动创建的任务有空闲任务和定时器服务任务。FreeRTOS可以通过定时器服务任务提供软件定时器功能。在某些对定时精度要求不太高,无须使用硬件定时器的情况下,可以使用FreeRTOS的软件定时器。一、软件定时器概述1、软件定时器的特性软件定时器(software timer)是FreeRTOS中的一种对象,它的功能与一般高级语言中的软件定时器的功能类似。FreeRTOS中的。
2025-05-31 08:30:00
1401
原创 细说STM32单片机FreeRTOS消息缓冲区及其应用实例
构建项目后,下载到开发板上并运行测试,会发现显示的写入消息长度和读出消息长度是一致 的,串口助手上显示的消息字符串也是正确的,说明可以写入和读出不同长度的消息。消息头的写入和读取是由FreeRTOS的API函数自动处理的,例如,向消息缓冲区写入一个长度为20字节的消息,实际占用空间是24字节。消息缓冲区相关函数的头文件message_buffer.h,源程序都在文件stream_buffer.c里,因为消息缓冲区是基于流缓冲区实现的,要在程序中使用消息缓冲区,需包含头文件message_buffer.h。
2025-05-24 13:17:04
1419
原创 细说STM32单片机FreeRTOS流缓冲区及其应用实例
TIM3的中断无须开启。如果只有一个写入者向流缓冲区写入数据,可以安全地使用函数xStreamBufferSend(),如果有多个写入者向一个流缓冲区写入数据,调用xStreamBufferSend()的代码必须置于临界代码段内,也就是用taskENTER_CRITICAL()和taskEXIT_CRITICAL()界定的代码段,并且超时等待时间必须设置为0。流缓冲区与队列有点像,但两者是有区别的:队列的数据分为基本的项(item),项的格式是固定的,例如uint32_t类型的项,每次写入或读取一个项;
2025-05-24 08:30:00
1296
原创 细说C/C++语言中一些具有特殊功能的代码注释方法
我们都知道程序员编写的代码是很抽象的,非专业人士看不懂,专业人士也需要借助单行注释、多行注释、开发者记录的笔记等文件的辅助才能勉强阅读。眼中所看,就是注释时的心中所想。注释生成的文档描述一般有两种,一个是简短描述用于描述大致信息,比如,用//开始的当行标注,用/*开始的单行、多行标注;以下用到的案例来源于STM32CubeIDE自动生成的FreeRTOS中的代码,本文主要在于介绍该参考文件中出现的几种具有特殊功能的文档注释的方法和含义。它的注释也是C风格的,它的规则,空行或只有‘*’开始的行,意味着换行,
2025-05-21 13:21:56
1274
原创 细说STM32单片机FreeRTOS将任务通知用作计数信号量的方法及其应用实例
任务通知还可以当作二值信号量或计数信号量来使用:使用函数xTaskNotifyGive()发送通知,使接收者的通知值加1;使用函数ulTaskNotifyTake()读取通知,使接收者的通知值减1或清零。一、示例功能与计数信号量的工作原理相比,任务通知模拟的计数信号量与实际的计数信号量有细微的差别:实际的计数信号量的初始值不为零,一般用于表示可用资源的个数,例如,餐厅中空余的餐桌个数。而任务通知模拟的计数信号量的初值为0,一般用于表示待处理的事件的个数,例如,模拟进入餐厅的排队人数。
2025-05-21 08:30:00
990
原创 细说STM32单片机FreeRTOS任务通知及其应用实例
任务通知(task notification)是FreeRTOS中的另外一种进程间通信技术。使用任务通知不需要创建任何中间对象,可以直接从任务向任务,或从ISR向任务发送通知,传递一个通知值(notification value)。任务通知可以模拟二值信号量、计数信号量,或长度为1的消息队列,使用任务通知,通常效率更高、消耗内存更少。一、任务通知的原理和功能如队列、信号量、事件组等这样的进程间通信技术都需要创建一个中间对象,进程之间通过这些中间对象进行通信或同步。
2025-05-19 13:49:35
1179
原创 细说STM32单片机FreeRTOS用事件组同步任务的方法及其应用实例
在事件组的条件成立时,多个任务的阻塞状态可以同时解除。所以,这3个任务在同步点将各自的事件位置1后,再等待其他事件位置1,然后才开始运行,从而达到多个任务在某个同步点同步运行的目的。上述程序使用了事件组中的3个位,定义了4个事件位掩码,其中,BITMASK_SYNC是其他3个事件位掩码的按位或运算,所以BITMASK_SYNC是0x07。当事件组中掩码BITMASK_SYNC表示的3个位都被置1后,3个任务将同时解除阻塞状态,继续执行各自后面的程序,这样就实现了3个任务的同步。
2025-05-14 14:13:02
912
原创 细说STM32单片机FreeRTOS事件组及其编程应用实例
注意,这个函数中使用的延时函数是HAL_Delay(),在调用函数ScanPressedKey()时,设置的等待时间不能太长,更不能传递参数KEY_WAIT_ALWAYS,因为任务Task_ScanKeys的优先级在3个任务中是最高的。一个事件组对象有一个内部变量存储事件标志,变量的位数与参数configUSE_16_BIT_TICKS有关,当configUSE_16_BIT_TICKS为0时,这个变量是32位的,否则,是16位的。其中的31至24位是保留的,23至0位是事件位(event bits)。
2025-05-12 14:27:43
893
原创 细说STM32单片机FreeRTOS互斥量及其编程实例
根据传递的互斥量属性,osMutexNew()自动判别是创建互斥量,还是创建递归互斥量。例如,在上图中,若TaskMP在t2时刻之前抢占了CPU,在TaskMP运行期间TaskHP可以抢占CPU,但是因为要等待TaskLP释放占用的互斥量,还是要进入阻塞状态等待,还是会让TaskMP占用CPU运行。这样,在Task_Low占用互斥量运行期间,Task_Middle就无法抢占CPU运行,在Task_Low释放互斥量后,Task_High就能抢占CPU立刻运行。其他内容的设置与参考文章相同。
2025-04-29 17:15:21
1053
原创 细说STM32单片机FreeRTOS优先级翻转及其展示实例
高优先级的任务TaskHP需要等待低优先级的任务TaskLP释放二值信号量之后,才可以运行,这也是期望的运行效果。但是在t4时刻,虽然任务TaskMP的优先级比TaskHP低,但是它先于TaskHP抢占了CPU的使用权,这破坏了基于优先级抢占式执行的原则,对系统的实时性是有不利影响的。下图中有3个任务,分别是低优先级的TaskLP、中等优先级的TaskMP和高优先级的TaskHP,它们的运行过程可描述如下。结合此图中的消息字符串出现的顺序和3个任务函数的代码,可以归纳程序的工作原理,具体如下。
2025-04-29 08:40:04
992
原创 细说STM32单片机FreeRTOS计数信号量及其使用实例
周期唤醒参数设置如图5-11所示,周期唤醒使用的时钟频率是1Hz,唤醒计数值为2,所以唤醒周期是3s。获取计数信号量就是申请一个资源,申请成功后,计数信号量的计数值减1,表示可用资源减少1个。计数信号量的计数值变为0,表示没有资源可再被申请,再申请计数信号量的任务就需要等待。释放计数信号量就是释放一个资源,计数信号量的计数值会加1,表示可用资源增加了1个。创建计数信号量时,一般应使其初始值等于最大值,例如,用下面的语句创建一个计数信号量,则semb最大计数值为5,初始计数值为5,表示有5个资源可用。
2025-04-25 11:35:54
1036
原创 细说STM32单片机FreeRTOS信号量和互斥量的基础知识及二值信号量的编程实例
队列的功能是将进程间需要传递的数据存在其中,所以在有的RTOS系统里,队列也被称为“邮箱”。有的时候,进程间需要传递的只是一个标志,用于进程间同步或对一个共享资源的互斥性访问,这时就可以使用信号量或互斥量。信号量和互斥量的实现都是基于队列的,信号量更适用于进程间同步,互斥量更适用于共享资源的互斥性访问。一、信号量和互斥量概述信号量(semaphore)和互斥量(mutex)都可应用于进程间通信,它们都是基于队列的基本数据结构,但是信号量和互斥量又有一些区别。
2025-04-24 14:54:04
1096
原创 细说STM32单片机FreeRTOS进程间通信技术及消息队列的应用方法
进程间同步与通信是一个操作系统的基本功能,FreeRTOS提供了完善的进程间通信功能:包括消息队列、信号量、互斥量、事件组、任务通知等。其中,消息队列是信号量和互斥量的基础,研究进程间通信要先从进程间通信的基本概念以及消息队列的原理和使用开始,再逐步研究信号量、互斥量等其他进程间通信方式。一、进程间通信技术在使用RTOS的系统中,有多个任务,还可以有多个中断的ISR,任务和ISR可以统称为进程(process)。
2025-04-22 15:43:20
1167
原创 细说STM32单片机FreeRTOS中断管理及其应用方法
FreeRTOS的任务有优先级,MCU的硬件中断也有中断优先级,这是两个不同的概念。FreeRTOS的任务管理要用到硬件中断,使用FreeRTOS时也可以使用硬件中断,但是硬件中ISR的设计要注意一些设计原则。本文章将介绍FreeRTOS与硬件中断的关系,及如何正确使用硬件中断。一、FreeRTOS与中断NVIC中断是MCU的硬件特性,STM32 MCU的NVIC管理硬件中断。STM32F4使用4个位置优先级分组策略,用于设置中断的抢占优先级和次优先级,优先级数字越小,优先级越高。
2025-04-19 15:43:47
1299
原创 细说STM32单片机FreeRTOS任务管理API函数vTaskList()的使用方法
任务Task_Info读取的信息在串口助手上显示,LED1闪烁几次后,任务Task_Info被删除,LED1不再闪烁,修改延迟时间会小小改变删除任务的效果。例如,对于上图中的任务Task_LED1,其状态字符串是“\tX\t8\t50\t2\r\n”,表示它处于运行状态,优先级为8,栈空间高水位值为50,任务编号为2。其中,每行字符串的第1列是任务名称,这里除了用户的两个任务Task_LED1和Task_ADC,还有系统自动创建的空闲任务IDLE和定时器服务任务Tmr Svc。项目的软件设计大部分相同。
2025-04-17 14:52:39
1267
原创 细说STM32单片机FreeRTOS任务管理API函数及多任务编程的实现方法
FreeRTOS中除了用于任务管理的一些RTOS函数外,还有一些API函数(也叫任务管理工具函数),用于操作任务或取任务信息。一些内容需要参考本文作者写的其他文章,参考文章:细说STM32单片机FreeRTOS任务管理相关函数及多任务编程的实现方法-优快云博客。
2025-04-17 12:11:19
1094
原创 细说STM32单片机FreeRTOS任务管理相关函数及多任务编程的实现方法
一、FreeRTOS任务管理相关函数在FreeRTOS中,任务的管理主要包括任务的创建、删除、挂起、恢复等操作,还包括任务调度器的启动、挂起与恢复,以及使任务进入阻塞状态的延迟函数等。FreeRTOS中任务管理相关的函数都在文件task.h中定义,在文件tasks.c中实现。在CMSIS-RTOS中还有一些函数,对FreeRTOS的函数进行了封装,也就是调用相应的FreeRTOS函数实现相同的功能,这些标准接口函数的定义在文件cmsis_os.h和cmsis_os2.h中。
2025-04-11 16:30:28
1061
原创 细说STM32单片机FreeRTOS任务管理和任务调度的基本原理
圆周表示CPU时间,如同钟表的一圈,RTOS将CPU时间分成基本的时间片(time slice),例如,FreeRTOS默认的时间片长度是1ms,也就是SysTick定时器的定时周期。由单核CPU的多任务运行机制可知,任何时刻,只能有一个任务占用CPU并运行,这个任务的状态称为运行(running)状态,其他未占用CPU的任务的状态都可称为非运行(notrunning)状态。这两种状态都是非运行状态,运行的任务就交出了CPU的使用权,任务调度器可以使其他就绪状态的任务进入运行状态。
2025-04-11 10:51:14
1369
STM32Cube高效开发教程基础篇第二部分 第20-22章
2025-01-13
基于VB的分布式监控系统通信设计
2010-04-28
《C++从入门到精通》第5版VS2022的例题
2023-05-12
《C语言从入门到精通》VS2022的例题
2023-04-12
profinet ASIC ERTEC200_Boot_Manual_V110
2022-05-17
Profinet ASIC ERTEC200芯片“ERTEC200_Datasheet_V112”
2022-05-17
西门子PLC S7-226固件程序,V2.01S7-226_CN_2.01_dump_24c512
2022-05-12
实测好用的两个Profilic PL2303HXA USB-to-Serial Comm Port for WIN10的驱动
2022-04-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅