自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(425)
  • 资源 (8)
  • 收藏
  • 关注

原创 细说STM32单片机SPI-Flash芯片的FatFS移植及其应用实例详解

本文以开发板上的SPI-Flash芯片W25Q16为媒介详细介绍CubeMX中FatFS各个参数的意义和设置,分析生成的代码中FatFS各个文件的作用和关联,完成针对W25Q16的硬件访问层的移植。继续使用旺宝红龙开发板STM32F407ZGT6 KITV1.0。

2025-06-16 17:16:23 791

原创 细说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 729

原创 细说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 627

原创 细说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 691

原创 细说STM32单片机HAL和FreeRTOS两个基础时钟的工作原理

在一个FreeRTOS应用中,系统具有两个基础时钟:HAL和FreeRTOS基础时钟。所以要搞清楚为什么存在HAL和FreeRTOS两个基础时钟,以及它们是如何工作的。1使用SysTick作为HAL的基础时钟HAL需要设置一个定时器作为基础时钟。基础时钟通过定时中断产生嘀嗒信号,嘀嗒信号的默认频率是1000Hz,也就是基础时钟的定时周期是1ms。基础时钟主要用于实现延时函数HAL_Delay()或在一些有超时(timeout)设置的函数里确定延时。

2025-06-05 09:00:00 1122

原创 细说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 1056

原创 细说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 322

原创 细说C语言将格式化输出打印至标准输出流stdout的函数 printf、_printf_l、wprintf、_wprintf_l

将普通字符和转义序列按照其外观的顺序复制到 stdout。返回值:返回输出的字符数或负值(如果出错)。自变量由普通字符、转义序列和(如果自变量遵循 format。如果允许执行继续,则该函数将返回 -1 并将。将格式化输出打印至标准输出流,将格式化输出打印至标准输出流。返回值:返回输出的字符数或负值(如果出错)。(0xFFFF),则该函数将返回 -1。,则会调用无效的参数处理程序,如。如果在 argument。

2025-05-31 19:23:57 394

原创 细说STM32单片机FreeRTOS软件定时器及其应用实例

在FreeRTOS中,自动创建的任务有空闲任务和定时器服务任务。FreeRTOS可以通过定时器服务任务提供软件定时器功能。在某些对定时精度要求不太高,无须使用硬件定时器的情况下,可以使用FreeRTOS的软件定时器。一、软件定时器概述1、软件定时器的特性软件定时器(software timer)是FreeRTOS中的一种对象,它的功能与一般高级语言中的软件定时器的功能类似。FreeRTOS中的。

2025-05-31 08:30:00 1163

原创 细说STM32单片机FreeRTOS消息缓冲区及其应用实例

构建项目后,下载到开发板上并运行测试,会发现显示的写入消息长度和读出消息长度是一致 的,串口助手上显示的消息字符串也是正确的,说明可以写入和读出不同长度的消息。消息头的写入和读取是由FreeRTOS的API函数自动处理的,例如,向消息缓冲区写入一个长度为20字节的消息,实际占用空间是24字节。消息缓冲区相关函数的头文件message_buffer.h,源程序都在文件stream_buffer.c里,因为消息缓冲区是基于流缓冲区实现的,要在程序中使用消息缓冲区,需包含头文件message_buffer.h。

2025-05-24 13:17:04 1202

原创 细说STM32单片机FreeRTOS流缓冲区及其应用实例

TIM3的中断无须开启。如果只有一个写入者向流缓冲区写入数据,可以安全地使用函数xStreamBufferSend(),如果有多个写入者向一个流缓冲区写入数据,调用xStreamBufferSend()的代码必须置于临界代码段内,也就是用taskENTER_CRITICAL()和taskEXIT_CRITICAL()界定的代码段,并且超时等待时间必须设置为0。流缓冲区与队列有点像,但两者是有区别的:队列的数据分为基本的项(item),项的格式是固定的,例如uint32_t类型的项,每次写入或读取一个项;

2025-05-24 08:30:00 1135

原创 细说C/C++语言中一些具有特殊功能的代码注释方法

我们都知道程序员编写的代码是很抽象的,非专业人士看不懂,专业人士也需要借助单行注释、多行注释、开发者记录的笔记等文件的辅助才能勉强阅读。眼中所看,就是注释时的心中所想。注释生成的文档描述一般有两种,一个是简短描述用于描述大致信息,比如,用//开始的当行标注,用/*开始的单行、多行标注;以下用到的案例来源于STM32CubeIDE自动生成的FreeRTOS中的代码,本文主要在于介绍该参考文件中出现的几种具有特殊功能的文档注释的方法和含义。它的注释也是C风格的,它的规则,空行或只有‘*’开始的行,意味着换行,

2025-05-21 13:21:56 1051

原创 细说STM32单片机FreeRTOS将任务通知用作计数信号量的方法及其应用实例

任务通知还可以当作二值信号量或计数信号量来使用:使用函数xTaskNotifyGive()发送通知,使接收者的通知值加1;使用函数ulTaskNotifyTake()读取通知,使接收者的通知值减1或清零。一、示例功能与计数信号量的工作原理相比,任务通知模拟的计数信号量与实际的计数信号量有细微的差别:实际的计数信号量的初始值不为零,一般用于表示可用资源的个数,例如,餐厅中空余的餐桌个数。而任务通知模拟的计数信号量的初值为0,一般用于表示待处理的事件的个数,例如,模拟进入餐厅的排队人数。

2025-05-21 08:30:00 867

原创 细说STM32单片机FreeRTOS任务通知及其应用实例

任务通知(task notification)是FreeRTOS中的另外一种进程间通信技术。使用任务通知不需要创建任何中间对象,可以直接从任务向任务,或从ISR向任务发送通知,传递一个通知值(notification value)。任务通知可以模拟二值信号量、计数信号量,或长度为1的消息队列,使用任务通知,通常效率更高、消耗内存更少。一、任务通知的原理和功能如队列、信号量、事件组等这样的进程间通信技术都需要创建一个中间对象,进程之间通过这些中间对象进行通信或同步。

2025-05-19 13:49:35 1020

原创 细说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 772

原创 细说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 738

原创 细说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 885

原创 细说STM32单片机FreeRTOS优先级翻转及其展示实例

高优先级的任务TaskHP需要等待低优先级的任务TaskLP释放二值信号量之后,才可以运行,这也是期望的运行效果。但是在t4时刻,虽然任务TaskMP的优先级比TaskHP低,但是它先于TaskHP抢占了CPU的使用权,这破坏了基于优先级抢占式执行的原则,对系统的实时性是有不利影响的。下图中有3个任务,分别是低优先级的TaskLP、中等优先级的TaskMP和高优先级的TaskHP,它们的运行过程可描述如下。结合此图中的消息字符串出现的顺序和3个任务函数的代码,可以归纳程序的工作原理,具体如下。

2025-04-29 08:40:04 862

原创 细说STM32单片机FreeRTOS计数信号量及其使用实例

周期唤醒参数设置如图5-11所示,周期唤醒使用的时钟频率是1Hz,唤醒计数值为2,所以唤醒周期是3s。获取计数信号量就是申请一个资源,申请成功后,计数信号量的计数值减1,表示可用资源减少1个。计数信号量的计数值变为0,表示没有资源可再被申请,再申请计数信号量的任务就需要等待。释放计数信号量就是释放一个资源,计数信号量的计数值会加1,表示可用资源增加了1个。创建计数信号量时,一般应使其初始值等于最大值,例如,用下面的语句创建一个计数信号量,则semb最大计数值为5,初始计数值为5,表示有5个资源可用。

2025-04-25 11:35:54 874

原创 细说STM32单片机FreeRTOS信号量和互斥量的基础知识及二值信号量的编程实例

队列的功能是将进程间需要传递的数据存在其中,所以在有的RTOS系统里,队列也被称为“邮箱”。有的时候,进程间需要传递的只是一个标志,用于进程间同步或对一个共享资源的互斥性访问,这时就可以使用信号量或互斥量。信号量和互斥量的实现都是基于队列的,信号量更适用于进程间同步,互斥量更适用于共享资源的互斥性访问。一、信号量和互斥量概述信号量(semaphore)和互斥量(mutex)都可应用于进程间通信,它们都是基于队列的基本数据结构,但是信号量和互斥量又有一些区别。

2025-04-24 14:54:04 941

原创 细说STM32单片机FreeRTOS进程间通信技术及消息队列的应用方法

进程间同步与通信是一个操作系统的基本功能,FreeRTOS提供了完善的进程间通信功能:包括消息队列、信号量、互斥量、事件组、任务通知等。其中,消息队列是信号量和互斥量的基础,研究进程间通信要先从进程间通信的基本概念以及消息队列的原理和使用开始,再逐步研究信号量、互斥量等其他进程间通信方式。一、进程间通信技术在使用RTOS的系统中,有多个任务,还可以有多个中断的ISR,任务和ISR可以统称为进程(process)。

2025-04-22 15:43:20 886

原创 细说STM32单片机FreeRTOS中断管理及其应用方法

FreeRTOS的任务有优先级,MCU的硬件中断也有中断优先级,这是两个不同的概念。FreeRTOS的任务管理要用到硬件中断,使用FreeRTOS时也可以使用硬件中断,但是硬件中ISR的设计要注意一些设计原则。本文章将介绍FreeRTOS与硬件中断的关系,及如何正确使用硬件中断。一、FreeRTOS与中断NVIC中断是MCU的硬件特性,STM32 MCU的NVIC管理硬件中断。STM32F4使用4个位置优先级分组策略,用于设置中断的抢占优先级和次优先级,优先级数字越小,优先级越高。

2025-04-19 15:43:47 891

原创 细说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 1091

原创 细说STM32单片机FreeRTOS任务管理API函数及多任务编程的实现方法

FreeRTOS中除了用于任务管理的一些RTOS函数外,还有一些API函数(也叫任务管理工具函数),用于操作任务或取任务信息。一些内容需要参考本文作者写的其他文章,参考文章:细说STM32单片机FreeRTOS任务管理相关函数及多任务编程的实现方法-优快云博客。

2025-04-17 12:11:19 889

原创 细说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 867

原创 细说STM32单片机FreeRTOS任务管理和任务调度的基本原理

圆周表示CPU时间,如同钟表的一圈,RTOS将CPU时间分成基本的时间片(time slice),例如,FreeRTOS默认的时间片长度是1ms,也就是SysTick定时器的定时周期。由单核CPU的多任务运行机制可知,任何时刻,只能有一个任务占用CPU并运行,这个任务的状态称为运行(running)状态,其他未占用CPU的任务的状态都可称为非运行(notrunning)状态。这两种状态都是非运行状态,运行的任务就交出了CPU的使用权,任务调度器可以使其他就绪状态的任务进入运行状态。

2025-04-11 10:51:14 892

原创 细说STM32单片机中FreeRTOS的文件组成、编码规则和功能裁剪

钩子函数类似于回调函数,就是在某个功能或函数执行时要调用的一个函数。钩子函数的代码由用户编写,用于实现一些自定义的处理。钩子函数的设置界面如图所示。默认情况下,这些参数值都是Disabled,也就是不实现相应的钩子函数。如果设置为Enabled,CubeMX会在文件freertos.c中自动生成相应钩子函数的函数框架。当设置为Enabled时对应的钩子函数名称及意义见下表,表中只列出了函数名称,省略了函数参数。钩子函数配置参数调用场合对应的钩子函数名称USEIDLEHOOK。

2025-04-09 12:18:09 828

原创 细说STM32单片机FreeRTOS基础知识及用法

FreeRTOS是一个完全免费和开源的嵌入式实时操作系统,已被作为一个中间件集成到STM32 MCU固件库中。在STM32Cube开发方式中,用户可以很方便地使用FreeRTOS。一、FreeRTOS基础1、初识FreeRTOSFreeRTOS是一个完全免费和开源的嵌入式实时操作系统(Real-time Operating System,RTOS)。户很方便地在STM32Cube开发方式中使用FreeRTOS。

2025-04-07 14:08:02 1629

原创 警告warning: *.elf has a LOAD segment with RWX permissions的解除方法

警告信息“YS2416C.elf has a LOAD segment with RWX permissions”指的是在一个 ELF(Executable and Linkable Format)文件中,存在一个段(segment)被设置为可读(R)、可写(W)和可执行(X)权限。例如,在 GCC 中,可以使用 -z execstack 和 -z noexecstack 选项来控制栈和堆的执行权限。特别地,当使用STM32CubeIDE编译项目时,按如下方法限制段的权限,可以有效地解除标题出现的警告。

2025-04-02 13:31:28 490

原创 单片机编程中浮点数转定点数Q15查找表的设计方法

大多数的MCU、DSP中的浮点数处理单元都是定点浮点数处理单元,处理定点数据会相当快,但是处理浮点数据就会非常慢。可以利用Q格式进行浮点数据到定点的转化,节约CPU时间。实际应用中,浮点运算大都时候都是既有整数部分,也有小数部分的。所以要选择一个适当的定标格式才能更好的处理运算。

2025-03-24 12:20:53 670

原创 警告warning: variable ‘**‘ set but not used [-Wunused-but-set-variable]的解决办法

在C或C++编程中,编译器警告“warning: variable '**' set but not used [-Wunused-but-set-variable]”表明你声明了一个变量**,并且在你的代码中给它赋了值,但是在之后的代码中并没有使用这个变量的值。这种做法通常是不必要的,因为它会增加代码的复杂性和可能的错误风险,同时也会导致编译器的警告。

2025-03-21 16:19:44 501

原创 警告warning: braces around scalar initializer的解决办法

/本例中必要的结构体、联合体定义//面板结构体类型定义//扫描按键结构体类型定义//输入信号//经滤波后的输入信号//当前键扫描的值//当前键边沿状态//MODE键滤波计数器//UP键滤波计数器//DOWN键滤波计数器/SHIFT键滤波计数器//SET键滤波计数器//UP键和DOWN键加速计数器//UP键和DOWN键加速等级//UP键和DOWN键加速等级计数器// 键值定义UPKEY = 1,//键状态定义//面板菜单结构体类型定义。

2025-03-21 15:49:16 744

原创 警告warning: missing braces around initializer [-Wmissing-braces]的解决办法

仅列举与本文相关的必要的定义/* 引用头文件 *//* 宏定义 常数类*///下限表示显示类别 上限表示显示需要的页数//下限//上限//功能码属性//功能码属性表长度//每组功能码长度//功能码属性表中每组首个功能码序号//H0B组在辅助功能码中定义//H0D组在辅助功能码中定义//辅助功能码/* 结构体变量类型定义 枚举变量类型定义 */01:停机设定 02:显示 03:保留参数//2 保留//3 0:直接由上限限制 1:参数由上限相关功能码限制。

2025-03-20 16:31:35 1298

原创 警告“warning: ‘**‘ defined but not used [-Wunused-variable]”的解决办法

在C或C++编程中,编译器发出的警告“warning: '**' defined but not used [-Wunused-variable]”意味着定义了一个变量**,但是在代码中并没有使用这个变量。这种警告通常是编译器为了帮助开发者发现可能存在的代码冗余或不完整的地方而发出的。

2025-03-19 08:30:00 527

原创 警告 “variable ‘**‘ set but not used [-Wunused-but-set-variable]” 的解决办法

例如,警告 "variable 'Data_Read' set but not used [-Wunused-but-set-variable]" ,指的是变量 Data_Read 被赋值了,但是在程序的其他部分没有被使用。如果不确定一个变量是否应该被删除,可以暂时注释掉该变量的相关代码,然后重新编译检查是否有其他错误或警告,这可以帮助你理解该变量是否真的需要。如果注释掉后没有其他问题,那么这个变量可能是多余的。如果暂时不想删除或使用这个变量,但想关闭这个警告,可以使用编译器的特定指令来忽略这个警告。

2025-03-18 14:45:16 438

原创 细说C/C++的宏定义跨行连接符的使用方法

宏定义跨行连接符‌在C/C++编程中主要用于编写复杂的宏定义,以提高代码的可读性。当宏定义较长,写在一行不易于读懂时,可以使用跨行连接符 “\” 来指示连续的两行代码视为同一行宏定义。这样,编译器会将这两行代码视为一个整体进行处理‌。

2025-03-18 14:32:26 859

原创 细说STM32单片机软件触发设置DAC并在同一管脚上同时传递给ADC1和ADC2转换的方法

在配置STM32单片机的管脚时,有的管脚可以同时配置为多种功能,这种情况给使用单片机的人带来十分的便利。比如,STM32F407ZGT6单片机只有一个DAC模块,这个模块有2个输出通道DAC_OUT1、DAC_OUT2。其中,DAC_OUT1输出引脚是PA4,DAC_OUT2输出引脚是PA5。在配置PA4为DAC_OUT1后,配置窗口出现绿色的“+”号,可以同时配置这个引脚为ADC1_IN4、ADC1_IN4。

2025-02-27 16:30:37 809

原创 细说STM32F407单片机RS485收发通信实例及调试方法

MCU上的串口UART(USART)是逻辑电平(TTL或CMOS电平),在开发板上实现与串口助手之间的RS485通信,就是把单片机上的逻辑电平通过RS485物理层芯片转换为RS485电平。本文继续使用旺宝红龙开发板STM32F407ZGT6 KIT V1.0。本文的目的是通过MAX485物理层芯片把开发板上的USART3(PB10、PB11)逻辑电平转换为RS485电平,然后通过一条USB转RS485的转换线连接到串口助手上。

2025-02-26 17:16:30 1751

原创 细说STM32F407单片机2个ADC使用DMA同步采集各自的1个输入通道的方法

本文将通过一个实例测试 STM32F407ZGT6使用2个ADC模块并通过DMA模式同步采集各自的1个通道的方法。当一个ADC只有一个输入通道,在转换结束后可以及时读出结果数据寄存器的内容。当一个ADC规则转换组有多个通道时,应该使用扫描转换模式(Scan Conversion Mode),ADC在转换完一个通道后立刻转换下一个通道,直到规则组内的通道序列转换完。并启用DMA模式。

2025-02-22 17:12:39 1845

原创 细说STM32F407单片机1个ADC使用DMA同时采集3个输入通道的方法

当ADC只有一个输入通道,在转换结束后可以及时读出结果数据寄存器的内容。当规则转换组有多个通道时,应该使用扫描转换模式(Scan Conversion Mode),ADC在转换完一个通道后立刻转换下一个通道,直到规则组内的通道序列转换完。规则转换只有一个转换结果数据寄存器,虽然可以设置在每个通道转换完之后就产生EOC事件中断,但是在多通道情况下,在EOC事件中断里读取转换结果数据可能是来不及的,更谈不上对数据进行显示或处理。因此,如果规则转换组有多个输入通道,应该使用DMA。

2025-02-22 10:48:56 1763

STM32Cube高效开发教程基础篇第二部分 第20-22章

STM32Cube高效开发教程基础篇第二部分 第20章 独立看门狗 第21章 窗口看门狗 第22章 电源管理和低功耗模式

2025-01-13

STM32Cube高效开发教程基础篇第二部分 第19章

STM32Cube高效开发教程基础篇第二部分第19章 FSMC连接外部设备

2025-01-13

STM32Cube高效开发教程基础篇第二部分第18章

STM32Cube高效开发教程基础篇第二部分第18章 CAN总线通信

2025-01-13

STM32Cube高效开发教程基础篇第二部分第17章

STM32Cube高效开发教程基础篇第二部分第17章 IIC通信

2025-01-13

STM32Cube高效开发教程基础篇第二部分第16章

STM32Cube高效开发教程基础篇,第二部分,第16章,SPI通信

2024-12-05

STM32Cube高效开发教程基础篇第二部分第6章到第15章

STM32Cube高效开发教程基础篇第二部分,系统功能和常用外设的使用,第6章到第15章。

2024-12-03

STM32Cube高效开发教程基础篇第一部分

STM32Cube高效开发教程基础篇,第一部分,软硬件基础

2024-12-02

基于VB的分布式监控系统通信设计

基于VB的分布式监控系统通信设计摘 要:本文介绍了利用VB的多种通信手段实现分布式监控系统的多种通信功能,对每一种通信手段给出其原理和应用实例。

2010-04-28

在VB下PC机与MCS-51单片机的串行通信

在VB下PC机与MCS-51单片机的串行通信

2010-04-28

C# 开发实例大全(基础卷)例题前4章VS2022版本

C# 开发实例大全(基础卷)例题前4章VS2022版本

2024-02-10

《C++从入门到精通》第5版VS2022的例题

《C++从入门到精通》第5版VS2022的例题,明日科技,清华大学出版社。 明日科技太懒了,配套例题仍然是VC++6.0的,例题的错误,几十年了,出版到第5版了,也没安排人修改。 本资料,书中例题全部在VS2022上运行过,修改了原题的错误、过气的函数。并增加了一些自己学习的见解。

2023-05-12

《C语言从入门到精通》VS2022的例题

《C语言从入门到精通》发行到第五版了,可是明日科技很懒惰,书中的例题仍然还在用VC++6.0.如果工程师照着书学习操作VC++6.0即使学会了书,还能找到工作吗和学以致用吗?所以,我就辛苦一下,把书中的例子在VS2022环境下都运行了一遍。修改了很多被VS2022抛弃的函数还有原书例题中的错误。

2023-04-12

profinet ASIC ERTEC200_Boot_Manual_V110

名称:ERTEC200_Boot_Manual_V110 用途:profinet ASIC ERTEC200 评价:这个资源十分稀少,分享给大家;

2022-05-17

Profinet ASIC ERTEC200芯片“ERTEC200_Datasheet_V112”

名称:ERTEC200_Datasheet_V112 用途:Profinet ASIC ERTEC200芯片; 评价:这个资源很稀少,几乎下不到了,今天上传到网上,分享给大伙。

2022-05-17

西门子PLC S7-226固件程序,V2.01S7-226_CN_2.01_dump_24c512

西门子PLC S7-226固件程序,V2.01; "S7-226_CN_2.01_dump_24c512"

2022-05-12

实测好用的两个Profilic PL2303HXA USB-to-Serial Comm Port for WIN10的驱动

经win10旗舰版21H2实测好用的两个profilic PL2303HXA USB-to-Serial Comm Port 驱动.

2022-04-16

SystemC std 1666-2011

IEEE SystemC.std.1666-2011.pdf

2014-02-15

SystemVerilog.std.1800-2012

SystemVerilog.std.1800-2012

2014-02-15

空空如也

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

TA关注的人

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