- 博客(106)
- 收藏
- 关注
原创 GPIO_ReadInputData和GPIO_ReadInputDataBit区别
GPIO_ReadInputData和GPIO_ReadInputDataBit区别探讨
2025-04-11 22:38:51
281
原创 C语言中科学技术法的表示方法
C语言中科学技术法的表示方法,%g格式,这个格式会根据实际数值的大小选择合适的表示方式,无论是科学计数法还是普通数字表示。
2025-04-09 02:00:00
486
原创 Keil5工程中.uvoptx和.uvprojx后缀名什么意思?
这个文件是项目选项文件,用于保存与项目设置相关的配置和选项。它包含编译器、链接器及其他工具的设置。: 这个文件是项目文件,包含整个项目的结构和配置信息。它通常包括源代码文件、库文件、项目依赖关系等。
2025-03-31 21:23:45
283
原创 微秒延时实现
该函数借助SysTick定时器实现了微秒级的延时。它先设定定时器的重载值,然后清空当前计数值,接着启动定时器,在定时器计数到 0 之前一直等待,最后关闭定时器。不过,要注意该函数假定系统时钟频率为 72MHz,若实际频率不同,就需要相应地调整LOAD寄存器的赋值。
2025-03-27 08:00:00
961
原创 STM32中不同FLASH的芯片启动文件选择规则
F103ZET6的FLASH大小是512K,所以选择startup_stm32f10x_hd.s。F103C8T6的FLASH大小是64K,所以选择startup_stm32f10x_md.s。从ZET6到C8T6,需要更改。2)C/C++选项卡。
2025-03-27 00:15:00
169
原创 int main(参数){}函数中参数为空的时候到底要不要加void?
>推荐使用:int main(void)以明确表示该函数不需要参数,减少误解和潜在错误。>>学习或维护代码,强烈建议选择更明确的参数声明,以避免混淆。
2025-03-26 00:15:00
320
原创 for(int i = 0;i < 10;i++);用法
这意味着该循环将执行10次(每次i增加),但不会有任何内容被执行(没有输出或操作),这通常不是我们想要的。,并将其初始化为 0。这个变量通常用作计数器。): 在每次循环开始前,会检查这个条件。): 这部分代码在每次循环结束时执行,会将。小于 10,则执行循环体内的代码;在 C、C++ 等语言中,大于或等于 10,则结束循环。): 这里声明了一个整型变量。
2025-03-25 09:15:41
261
原创 共享内存详解
覆盖与更新:写入共享内存时,如果使用相同的内存地址进行写入,较新的数据会覆盖较旧的数据。叠加:如果数据写入到不同的内存地址(例如,通过调整指针或使用不同的偏移量),则会实现数据的叠加。三、同一时间只允许一个进程访问共享内存吗?在使用共享内存进行进程间通信时,确实需要考虑到多个进程可能会同时访问同一块共享内存的问题。为了确保数据的一致性和完整性,通常需要使用同步机制来控制对共享内存的访问。同一时间只允许一个进程访问共享内存:如果没有同步机制,多个进程可以同时访问共享内存,但这可能导致数据不一致或损坏。
2024-11-16 10:31:22
1169
2
原创 Modbus通信协议
我们知道,通信协议有UART/USART串口通信、单总线(如DHT11)、SPI通信(如 TFT 液晶显示屏、OLED 显示器)、IIC通信,这里我们来谈一下Modbus通信。Modbus是一种通信协议,主要用于工业自动化和控制系统中的电子设备之间进行数据交换。它定义了数据传输的格式和方式,包括主从通信模型、数据包结构及错误检查等。Modbus协议有多个变种,如Modbus RTU(串行)和Modbus TCP(基于以太网),它们的基本原理相同,但在实现细节上有所不同。
2024-11-04 16:32:43
376
1
原创 我的创作纪念日(2024/11/4)
一、机缘最初成为创作者的初心:希望将自己在编程和技术领域的学习和经验分享给他人,帮助更多人解决问题,提升他们的技术能力。:通过写作来记录自己的学习过程和技术探索,形成个人的知识体系和成长轨迹。:希望能够在技术社区中建立自己的影响力,与其他开发者互动,成为行业的一份子。:利用 优快云 平台与其他创作者和读者交流,从中获取新的想法和灵感,促进自身的学习与提升。:出于对技术的热爱,愿意投入时间和精力来创作内容,推动自己的兴趣和热情。二、收获在创作的过程中的收获。
2024-11-04 16:19:37
1138
原创 共享内存相关知识点
功能函数用于销毁一个已经初始化的互斥锁(mutex)。这意味着该互斥锁不再可用,并且释放与该互斥锁相关联的资源。用法参数mutex:指向待销毁的互斥锁对象的指针。返回值如果成功,返回 0;如果发生错误,返回一个错误码。注意事项在调用时,确保没有线程在使用该互斥锁(即,确保所有锁定已经解除并且所有线程都已结束),否则会导致未定义行为。在销毁之前,可以使用或等函数检查互斥锁的状态。
2024-10-31 22:04:44
1195
原创 探讨单片机中-----片上外设
通过将这些外设集成到单个芯片上,微控制器能够在较小的体积内提供丰富的功能,减少了外部组件的需求,提高了系统的可靠性与性能。,这些外设可以直接与主处理器进行通信,从而提供特定的功能。与外部外围设备相比,片上外设具有更小的延迟、更低的功耗以及更高的集成度。我们知道,我们常说的芯片就是我们直观看到的一个物体(通常是一个外壳),芯片内部包含。DMA(直接内存访问控制器):允许外设直接访问系统内存,减少CPU的干预,从而提高效率。:如Ethernet、CAN等,用于与网络或通信协议的连接。在内核外部,芯片内部。
2024-10-29 09:15:00
656
原创 CubeMX中的RCC功能详解
因此,RCC 不是时钟本身,但它是管理和配置时钟的关键模块。它在微控制器的操作中起着至关重要的作用,确保各个部分能够以适当的时钟频率工作。:控制不同外设(如 GPIO、USART、ADC 等)的时钟输入,通过启用或禁用这些时钟来节省能耗。:允许用户选择不同的时钟源(如内部振荡器、外部晶振等),以供微控制器使用。它是一个用于管理微控制器内部和外部时钟信号的模块。:管理系统的复位过程,确保系统在上电或复位后可以正常启动。在微控制器和嵌入式系统的上下文中,:配置时钟频率、分频器等,以匹配具体应用的需求。
2024-10-28 18:54:30
428
原创 CubeMX中的Debug作用
调试中提供的单步执行(Step Over/Step Into)可以逐行执行代码,以观察每一步的影响,方便找出问题所在。:Debug功能可以帮助开发人员检测和识别代码中的错误或异常,使得问题能够被快速定位。:通过调试,开发人员可以实时查看变量的值、程序的执行流程等,帮助理解程序的运行状态。:可以设置条件断点,只有在特定条件满足时,程序才会在该行停止,帮助高效定位复杂问题。:通过调试,还可以输出日志信息,帮助追踪程序的执行过程和数据流动。:一些调试器还提供性能分析工具,可以识别瓶颈,优化代码。
2024-10-28 18:51:42
285
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人