- 博客(7)
- 收藏
- 关注
原创 头脑风暴—POSIX与FreeRTOS的联系
虽然本文不具有实际指导价值,但可以通过横向对比两个系统的异同点,相似之处加深我们对知识的理解。而且某些FreeRTOS变种(如FreeRTOS+POSIX)支持部分POSIX接口,允许开发者使用标准API(如pthread线程库)编写更便携的代码。学习POSIX接口的设计(如目录操作opendirreaddir),可为后续在FreeRTOS中实现类似功能提供参考。若项目需要从Linux迁移到FreeRTOS,了解POSIX接口的底层实现(如无缓冲I/O)有助于优化嵌入式场景下的性能。
2025-02-16 20:18:55
1620
原创 如何测量GPIO翻转的最大频率(用示波器和逻辑分析仪)
首先,我们需要理解什么是GPIO翻转频率。GPIO是通用输入输出端口,翻转是指从高电平变到低电平,或者反过来。最大频率是指这个引脚在单位时间内能切换多少次状态。比如说,如果频率是1MHz,那每秒钟可以切换一百万次。需要确认在程序中已经将GPIO配置为最高速度模式,关闭任何可能限制速度的选项,比如施密特触发器的迟滞,或者输入滤波等。还要确定GPIO所在外设总线的预分配设置,确保频率是最大状态。示波器主要是用来观察电压随时间变化的波形,而逻辑分析仪则用来捕捉数字信号的状态变化,更适合分析多个信号线的时序。
2025-02-16 15:18:48
1924
原创 FreeRTOS学习之路1:开发工具链验证:基于Cubemx实现按键控制LED灯(裸机)
1. 项目立项到交付的基本流程;2. STM32CubeMX除了帮助我们初始化外设生成代码之外,还可以用来做什么?3. STM32CubeMX中的Debug选项如果不设置的话会有什么后果?4. 如何将STM32F103的系统时钟配置为最大值72MHz?关键配置点时钟源:使用外部晶振(HSE,通常8MHz)PLL倍频:将HSE通过PLL倍频至72MHz(8MHz × 9 = 72MHz)总线分频AHB总线(HCLK)无分频(72MHz)
2025-02-16 14:47:05
995
原创 HAL_Delay原理+优化方案
HAL_Delay() 是 STM32 HAL 库提供的阻塞式延时函数,其核心实现依赖,具体流程如下:// HAL 库关键代码片段// 空循环等待// 系统滴答计时器(SysTick)的中断服务函数// 全局变量 uwTick 自增// 获取当前系统时间戳:默认使用 1ms 中断周期(通过设置):通过while循环持续检查时间差,占用 CPU 资源__weak修饰符允许用户重写实现// 在中断服务函数中使用 HAL_Delay() 会导致灾难性后果// 将阻塞所有低优先级中断。
2025-02-16 14:36:41
2143
原创 系统架构视角总结嵌入式延时方案
最近在开发一款智能穿戴设备,需要兼顾低功耗和实时响应。移植RTOS环境。涉及到的延时操作比较多:抽象延时接口,裸机下使用TIM3定时器+状态机非阻塞方案,RTOS环境下桥接到vTaskDelayUntil,空闲时段启用STOP模式+RTC唤醒。复盘项目的时候,站在系统架构的层面问自己,为什么要选择这个延时方案,回顾我学习的资料,发现延时这版块讲得都很零碎,缺乏宏观视角,正好今天从系统架构的视角来梳理一下。SysTick寄存器查询(HAL_Delay本质)
2025-02-16 14:18:46
1065
原创 读取按键的方法汇总(更新中)
在main()循环中持续检测GPIO电平状态通过延时消抖或状态机处理抖动配置GPIO为中断触发模式(上升沿/下降沿/双边沿)在中断服务程序(ISR)中标记按键事件使用硬件定时器(如TIM)周期性触发中断在定时器中断中采样按键状态配合状态机实现消抖和动作识别定义按键状态(空闲、消抖、按下、释放等)通过状态转移处理长按、双击等复杂事件使用硬件电路消除抖动配合简单软件检测。
2025-02-14 13:39:04
1687
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅