- 博客(138)
- 资源 (1)
- 收藏
- 关注
原创 信号量和互斥量 在linux下的API是什么?
互斥量:主要用于线程同步,通过系列函数操作。信号量:用于线程或进程同步,POSIX 信号量通过sem_*系列函数操作,System V 信号量通过semgetsemop和semctl操作。
2025-03-03 14:49:39
416
原创 C语言中的open打开文件,fopen有什么区别?
openopen是一个系统调用(在UNIX、Linux等类UNIX系统中),用于打开和可能创建一个文件。它通常在<fcntl.h>或<unistd.h>头文件中声明。open提供的是底层的文件访问功能。fopenfopen是C标准库中的一个函数,用于打开文件,并将文件指针与文件关联起来。它定义在<stdio.h>头文件中。fopen提供的是更高层次的、面向流的文件访问功能。
2025-02-04 17:56:36
393
原创 extern myGlobalVar; 为什么可以直接这样用?
在C90标准中,这种省略类型的写法是不合法的,因为编译器需要知道变量的类型以便正确地处理它。但在C99标准中,如果之前已经通过某种方式(比如通过包含定义了该变量的头文件)让编译器知道了变量的类型,那么这种省略类型的。但在实际编程中,为了清晰和避免潜在的错误,通常建议总是显式地指定变量的类型,即使编译器可能允许省略类型。变量在程序的其他地方(可能是另一个源文件)已经被定义了,并且我想在这里使用它。时,你实际上是在告诉编译器:“嘿,编译器,我知道这个。声明是被允许的,但它依赖于之前的类型声明。
2024-12-12 18:28:17
420
原创 freertos是在哪里调用port.c函数的,如何调用的,也没有port.h头文件怎么调用的呢
FreeRTOS是一个开源的实时操作系统,其可移植性设计允许它在不同的硬件和编译器上运行。在FreeRTOS中,文件通常包含了与特定硬件架构相关的底层函数实现。这些函数对于FreeRTOS内核的正常运行至关重要,例如任务堆栈的初始化、任务切换、中断处理等。关于FreeRTOS如何调用中的函数,以及在没有头文件的情况下如何调用的问题,以下是一些关键点和解释:直接调用:通过函数指针调用:实际上,文件通常会与一个或多个头文件(如或其他与特定硬件相关的头文件)一起使用。这些头文件包含了必要的宏定义、类型定义和函数原
2024-12-12 00:12:14
644
原创 freertos中,句柄指向任务控制块,为什么句柄不能直接访问(*Task1_Handle).xStateListItem,那句柄是干嘛的?
任务控制块是FreeRTOS为每个任务维护的一个数据结构,它包含了任务的所有状态信息和控制信息,比如任务的优先级、堆栈指针、任务状态、任务名称等。如果允许直接访问任务控制块的成员,那么每当FreeRTOS的内部数据结构发生变化时(例如,添加新成员或修改现有成员的位置),所有依赖于这些直接访问的代码都需要进行相应的修改。因此,虽然句柄确实指向任务控制块,但FreeRTOS鼓励用户通过提供的API函数来操作任务,而不是直接访问任务控制块的成员。这些API函数为用户提供了对任务状态的安全访问和修改方式。
2024-12-08 23:38:00
529
原创 链接寄存器(LR)是什么?
链接寄存器LR是计算机体系结构中一个至关重要的寄存器,它负责存储函数调用和异常/中断处理后的返回地址。在ARM架构中,LR的运作机制与Thumb指令集、异常处理机制以及函数调用约定等紧密相关。通过正确使用LR,处理器能够在函数调用和异常处理之间实现无缝切换,从而确保程序的正确执行。
2024-12-08 20:48:43
750
原创 keil新建工程时候,选择ARM_cm3和选择stm32c8t6有什么区别?
选择ARM_CM3和选择STM32C8T6在新建工程时的主要区别在于处理器架构与内核、外设与功能、开发环境与工具链以及系统集成与应用领域。开发者应根据具体的应用需求和项目要求来选择合适的选项。
2024-12-07 14:02:38
559
原创 freertos使用systick当作系统时钟后,那么hal库的时基源是选择TIM2可以吗?
当FreeRTOS使用SysTick当作系统时钟后,HAL库的时基源确实可以选择TIM2(或其他可用的基本定时器,如TIM6、TIM7等),以避免与FreeRTOS的时钟滴答产生冲突。
2024-12-06 23:50:25
606
原创 STM32改写printf输出到串口需要注意的问题
两个实现的主要区别在于它们如何与STM32的UART硬件接口交互:一个是直接操作硬件寄存器,另一个是通过STM32 HAL库提供的函数。选择哪种方法取决于具体的应用场景和需求,比如对性能的要求、代码的可读性和可维护性等。
2024-12-06 15:37:49
631
原创 freertos中任务通知值的更新方式,如果通知未读,不覆盖通知值,这个是怎么设计的?
在FreeRTOS中,任务通知是一种高效的机制,用于在任务之间传递事件或数据。任务通知值是一个32位的整数,它可以通过不同的方式进行更新,以适应不同的应用场景。
2024-12-06 09:45:30
267
原创 在main.c文件不对全局变量进行访问,只调用访问全局变量的函数,需要extern声明吗?
全局变量默认具有外部链接,这意味着它们可以在不同的编译单元之间被访问,但前提是这些编译单元通过某种方式“知道”这些变量的存在。内部使用,并且你不希望它在其他文件中被访问,你可以在。关键字在这里不是必需的,但全局变量的正确声明和定义在。不需要知道这些细节,除非它直接访问这些全局变量。中定义的全局变量,那么从技术上讲,你不需要在。中的函数时,这些函数内部如何访问全局变量是。中是必需的,以确保函数能够正确地访问它们。中或使用它的头文件中对这些全局变量使用。或使用它的头文件中对这些全局变量使用。
2024-12-05 22:42:18
226
原创 freertos中为什那么互斥型信号量不能用在中断服务函数中,而二值信号量,计数信号量均可以用在中断服务函数中?
在FreeRTOS中,互斥型信号量、二值信号量和计数信号量各自具有不同的特性和使用场景。
2024-12-05 20:04:38
642
原创 freertos中什么是优先级继承?只有互斥信号量才有优先级继承嘛,为什么二值型信号量没有
定义:在实时操作系统中,任务(或线程)具有不同的优先级,以决定它们获得CPU资源的顺序。然而,当低优先级的任务持有某个关键资源(如互斥量),而高优先级的任务试图访问该资源时,高优先级的任务可能会被阻塞,直到资源被释放。这种情况被称为优先级反转,因为它导致高优先级的任务无法及时执行。优先级继承机制就是为了解决这个问题而设计的,即当高优先级的任务因等待某个被低优先级任务持有的资源而被阻塞时,FreeRTOS会临时提升持有该资源的低优先级任务的优先级,使其等于(或高于)所有等待该资源的任务中的最高优先级。作用。
2024-12-05 19:50:23
908
原创 为什么STM32的Cubemx创建的工程,对工程进行修改重新generate code后,对串口的代码的修改都恢复初始化了 ,但是main.c文件内就没有被初始化请回答上述问题,并解释哪些内容会恢复
STM32的CubeMX创建的工程在重新生成代码后,对串口的代码修改恢复初始化的问题,主要源于CubeMX的工作原理和代码生成机制。
2024-12-04 19:22:52
607
原创 为什么freertos用cubmx进行任务创建生成的代码用的是osThreadCreate函数 而没有用xTaskCreat函数?
FreeRTOS是一个实时操作系统,支持多任务并发执行,而STM32CubeMX是一个图形化的软件配置工具,用于配置STM32微控制器的外设、时钟、中断等,同时也支持FreeRTOS的配置和代码生成。在FreeRTOS中使用STM32CubeMX进行任务创建时,生成的代码倾向于使用函数而不是直接使用。
2024-12-04 15:50:12
720
原创 在stm32中利用systick实现延时delay配置自动重装值会不会影响系统节拍频率设置的自动重装值?
在STM32中,SysTick是一个24位的倒计数定时器,它常用于产生精确延时或提供给操作系统一个单独的心跳(时钟)节拍。
2024-12-04 10:20:45
740
原创 stm32中systick时钟pinlv和系统节拍频率有什么区别,二者有无影响?
在STM32中,SysTick时钟频率和系统节拍频率是两个不同的概念,它们之间存在区别,并且这种区别会对系统的运行产生一定的影响。
2024-12-03 18:36:27
801
原创 STM32在oled显示屏中,ssd1306的从机地址的SA0由什么控制?
定义:SA0是SSD1306的一个引脚。作用:通过设置SA0的值(0或1),可以改变SSD1306的从机地址,从而允许在I2C总线上连接多个具有不同地址的设备,而不会发生地址冲突。
2024-12-02 10:28:49
561
原创 STM32(hal库)中HAL_DMA_Start_IT函数是如何执行的?
函数用于启动直接存储器访问(DMA)传输,并配置DMA传输完成时产生中断。这个函数在内部执行了一系列操作来设置DMA的外设和内存地址、传输大小、传输方向等参数,并启动DMA传输。在STM32的HAL库中,
2024-11-21 20:13:00
672
原创 STM32(hal库)中HAL_ADC_PollForConversion 是 如何执行的?
是 STM32 HAL 库中的一个函数,用于轮询(poll)ADC(模数转换器)的转换完成状态。这个函数会阻塞调用它的线程,直到ADC转换完成。
2024-11-20 20:58:12
1735
原创 stm32里的PVD为什么是外部中断,而不是内部中断?
内部中断:由处理器内部的模块或事件引发,如定时器溢出、串口接收缓冲区非空等。外部中断:由外部设备或外部信号引发,如按键按下、外部传感器信号变化等。
2024-11-20 07:00:00
336
原创 stm32的ADC的中断是通过哪个线路进入NVIC的,是外部中断吗?
在STM32微控制器中,ADC模块具有自己的中断功能,当ADC转换完成、发生错误或其他特定事件时,ADC模块会生成一个内部中断请求。当ADC中断请求到达NVIC时,NVIC会根据中断优先级和中断向量表来决定是否立即处理该中断,并跳转到相应的中断处理程序执行。在配置和使用ADC中断时,需要参考相应的芯片手册和参考手册,以确保正确配置中断优先级、中断向量表和中断处理程序。STM32的ADC(模数转换器)中断并不是通过外部中断线路进入NVIC的,而是作为内部中断由ADC模块直接触发。
2024-11-19 22:42:32
466
原创 STM32(hal库)中,__HAL_LINKDMA 函数使用时候,串口的handler DMA_HandleTypedef 为什么前面要加extern
extern的使用是为了在多个源文件之间共享变量。在STM32 HAL库中使用时,如果DMA句柄是在另一个文件中定义的,你需要在当前文件中使用extern来声明它,以便能够链接到串口的handler。
2024-11-19 12:13:38
649
原创 STM32(hal库)中,为什么DMA没有MSP函数?
在STM32 HAL库中,DMA(直接存储器访问)并没有像其他某些外设(如USART、SPI等)那样拥有专门的MSP(MCU Services Package)初始化函数,这主要是由于DMA的特性和HAL库的设计哲学所决定的。首先,需要明确的是,MSP函数通常是由STM32CubeMX工具为特定的外设生成的,用于初始化外设的时钟、GPIO、NVIC(中断控制器)等底层硬件资源。由于DMA的初始化过程相对简单,且主要关注的是传输参数的设置,因此HAL库并没有为DMA提供一个专门的MSP函数。
2024-11-19 09:34:11
437
原创 esp8266的使能多链接,使能单链接是社么意思 AT+CIPMUX
指令关闭所有连接,然后再更改连接模式。此外,多连接模式需要在非透传模式下才能设置,并且开启服务器功能后也需要确保模块处于多连接模式。指令是ESP8266模块网络通信配置中的一个重要部分,它允许开发者根据应用需求灵活选择单连接或多连接模式。需要注意的是,在更改连接模式之前,必须确保当前没有建立任何连接。如果已经有连接存在,需要先使用。指令用于设置模块的连接模式,即是否支持多个TCP/UDP连接。在ESP8266的AT指令集中,
2024-11-16 12:27:07
455
原创 STM32中,不进行printf改写通过函数达到同款效果
的函数,用于通过串口(UART)发送格式化后的字符串。这个函数利用了 C 语言中的可变参数(varargs)特性以及串口通信的功能。这段代码定义了一个名为。
2024-11-14 19:44:59
603
原创 STM32hal库中,启动文件的中断向量DCD USART1_IRQHandler和hal库的HAL_UART_IRQHandle有什么区别?
是直接对应于USART1硬件中断的ISR,需要由开发者编写(或使用STM32CubeMX等工具自动生成),负责处理硬件级别的中断响应和调用HAL库提供的函数。是HAL库中提供的函数,用于处理UART中断的通用逻辑,不需要由开发者直接调用,而是由在适当的时候调用。这样的设计使得STM32的HAL库能够提供一个较为统一的接口给上层应用,同时保留了开发者直接控制硬件中断处理细节的能力。
2024-11-13 10:20:27
409
原创 STM32(hal库)在串口中,USART和uart有什么区别?
在STM32的HAL库中,USART和UART都是用于串口通信的模块,但它们在功能特性和使用场景上存在一些区别。
2024-11-12 23:19:45
1068
原创 STM32串口通讯时,如果最后一位是高电平,怎么区分最后一位和停止位?
在STM32串口通讯中,数据是按照数据帧的形式进行传输的,一个完整的数据帧通常包括起始位、数据位、校验位(如果有的话)以及停止位。起始位标志着一个数据帧的开始,固定是低电平;数据位是实际传输的有效数据;校验位(如奇偶校验位)用于检测数据的正确性;而停止位则用于标识一个数据帧的结束。在STM32串口通讯中,我们不需要(也无法)通过电平的高低来直接区分数据位的最后一位和停止位。这是由串口通信的时序和协议以及硬件实现共同保证的。接收方会根据约定的时序和参数来正确解析接收到的数据帧,从而确保数据的正确传输和处理。
2024-11-11 10:30:28
351
原创 STM32(hal库)void WWDG_IRQHandler(void)和void HAL_WWDG_IRQHandler(WWDG_HandleTypeDef *hwwdg)函数有什么区别?
是两个不同的函数,它们在STM32的HAL库中具有不同的原型、功能和用途。建议使用HAL库提供的。这两个函数名虽然相似,但它们实际上代表了不同的概念和作用。函数作为WWDG的中断服务程序,并通过注册回调函数来自定义中断处理逻辑。在STM32的HAL库中,
2024-11-10 20:04:22
310
原创 STM32中中断的回调函数是如何执行的?(窗口看门狗为例)
STM32(HAL库)中的启用回调函数注册是一种编程机制,它允许用户在应用层定义特定的函数,并将这些函数的指针注册到HAL库中的相应位置。STM32(HAL库)中的启用回调函数注册是一种强大的编程机制,它提高了代码的灵活性和可扩展性,实现了事件驱动编程,解耦了库函数和应用层函数,简化了中断处理,并提高了代码的可读性和可维护性。这是一个在HAL库中定义的弱回调函数,用户可以在自己的代码中重写这个函数来处理早期唤醒事件。如果EWI中断源被启用,接着检查WWDG的早期唤醒中断标志(EWIF)是否被设置。
2024-11-10 19:54:45
1382
原创 为什么STM32(hal库)中窗口看门狗是在提前中断回调函数里喂狗,而独立看门狗是直接程序里喂狗就可以
窗口看门狗和独立看门狗在喂狗操作上的差异主要是由于它们的设计特性和应用场景的不同。窗口看门狗具有中断功能,可以在计数器递减到特定值时产生中断,提醒用户及时喂狗;而独立看门狗则没有中断功能,用户需要自行控制喂狗时机。因此,在实际应用中,用户应根据具体需求选择合适的看门狗类型,并采取相应的喂狗策略以确保系统的稳定运行。
2024-11-10 19:04:05
529
原创 STM32(hal库)中的定时器从模式TIM_SlaveConfigTypeDef结构体中的含义,以及可选参数的含义都是什么意思
在STM32的HAL库中,定时器从模式配置结构体用于配置定时器作为从定时器时的相关参数。该结构体及其可选参数的含义对于理解和配置STM32定时器的从模式至关重要。
2024-11-08 15:23:19
529
原创 STM32的hal库定时中断的函数HAL_TIM_Base_Start_IT,在__HAL_TIM_ENABLE_IT基础上还做了哪些操作?
函数在基础上,还执行了参数检查、定时器状态检查、设置定时器状态为忙碌、启用定时器更新中断以及启用定时器外设等操作。这些操作共同确保了定时器中断能够正确、安全地启动,并在需要时产生中断信号。需要注意的是,在实际应用中,还需要根据定时器的特性和要求,正确配置结构体的各个成员,以满足实际需求。同时,在中断服务程序中,也需要编写相应的中断处理代码来响应定时器中断。
2024-11-07 08:00:00
757
原创 STM32中,定时器使用ETR引脚和使用APB1时钟是否一致?
例如,当使用ETR引脚作为定时器的触发源时,可能需要配置定时器的时钟源为APB1时钟(或其他适当的时钟源),以确保定时器能够正确地响应外部触发信号并进行计数。在STM32中,定时器的时钟源可以选择来自内部时钟(如APB1时钟)或外部时钟源。相反,它是作为定时器的外部触发输入来使用的。而APB1时钟则是STM32内部的一个时钟源,它用于为APB1总线上的外设提供时钟信号。总的来说,ETR引脚和使用APB1时钟在STM32中是两个独立的概念,它们分别代表了定时器的外部触发输入和内部时钟源。
2024-11-07 07:00:00
451
原创 STM32中为什么输入捕获启动定时器时候没有上述文章中其他操作
然而,输入捕获功能则专注于检测定时器输入通道上的边沿信号(如上升沿或下降沿),并在这些边沿发生时捕获定时器的当前计数值。因此,在启动输入捕获功能时,定时器的配置和初始化过程与基础中断启动有所不同。:输入捕获可能只需要配置与输入捕获相关的寄存器,如输入捕获模式寄存器(CCMR)、输入捕获滤波器寄存器(ICF)等,而不需要对定时器的所有寄存器进行全面初始化。:虽然状态检查在任何配置或启动过程中都是重要的,但输入捕获启动时的状态检查可能更侧重于确保输入通道和相关的捕获/比较寄存器处于正确的状态。
2024-11-06 16:13:08
326
原创 STM32的定时器外部时钟引脚通常接的是HSE吗?
STM32的定时器外部时钟引脚通常接的不是HSE,而是可能接外部晶体振荡器或其他外部信号源,具体取决于定时器的配置和应用需求。
2024-11-06 14:04:53
515
visionLSTM-xLSTM
2024-08-22
90+深度学习数据集.pdf
2024-08-22
3500个常用汉字,超级全
2022-08-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人