
单片机
文章平均质量分 60
单片机(英语:Single-chip microcomputer,台湾作单晶片,全称单芯片微型计算机),是把中央处理器、存储器、定时/计数器(timer/counter)、各种输入输出接口等都集成在一块集成电路芯片上的微型计算机。与应用在个人计算机中的通用微处理器相比,它更强调自供应(不用外接硬件)
wdfk_prog
https://github.com/wdfk-prog
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LoRaWAN节点学习笔记
LoRaWAN终端节点技术研究摘要 本文研究了基于Sub-GHz频段的LoRaWAN终端节点技术,重点分析了ST-SUBGHZ射频收发器的关键特性。该收发器支持150-960MHz ISM频段,提供两种功率模式(最高+22dBm),采用半双工通信方式。研究详细探讨了电源管理方案(LDO/SMPS)、HSE32 TCXO时钟源设计、发射器高低功率输出配置(RFO_HP/RFO_LP)、接收链架构以及RF-PLL频率合成技术。特别强调了LoRa调制解调器的实现,包括扩频因子(SF5-12)和带宽(7.8-500原创 2025-01-14 20:57:52 · 1136 阅读 · 0 评论 -
stop2模式低功耗无法进入的问题分析
本文分析了低功耗模式下无法正常进入的问题。现象表现为进入低功耗后立即退出,通过打印函数发现中断标志位未清除导致失败。经排查发现SYSTICK中断未处理触发了标志位挂起,原因是屏蔽中断响应后未及时进入低功耗函数。解决方案建议:1)精简进退低功耗函数的运行代码;2)采用多次开关中断方式减少单次间隔运行量;3)在中断处理中使用原生printf减少调用耗时。这些优化可避免中断标志位挂起导致的低功耗进入失败问题。原创 2023-05-25 15:35:14 · 707 阅读 · 0 评论 -
关于RTC的玄学bug分析与解决
发现:经过一下午复现排查后,按键背面为晶振区域;我摁下按键的手法会按压到晶振区域导致晶振异常;人按下按键时未按压到晶振区域.无法复现;现象:按键长按或者连续按压导致RTC起振异常;RTC经过的时间读取出来没有变化,或者变化异常。最后总结一波:以后不要接触挤压精密器件部分。关于RTC的玄学bug分析与解决。原创 2023-07-07 17:31:21 · 717 阅读 · 0 评论 -
freertos学习笔记
FreeRTOS核心机制与内存管理分析 本文系统梳理了FreeRTOS的关键设计规范和底层实现机制。在命名规范方面,FreeRTOS采用前缀标识法,变量名以类型缩写开头(如x表示BaseType_t),函数名则包含返回类型和所属文件信息(如vTask表示void返回的任务函数)。内存管理方面,FreeRTOS提供5种堆实现:heap_1不支持释放,heap_2/4支持释放但后者能合并碎片,heap_3封装标准malloc,heap_5支持非连续内存区域。任务管理部分详解了任务删除限制、堆栈分配、优先级设置等原创 2025-01-14 20:55:17 · 999 阅读 · 0 评论 -
CUBEMXV6.70版本 使用STM32H750 之前时钟配置报错的修改办法
CUBEMXV6.70版本 使用STM32H750 之前时钟配置报错的修改办法原创 2022-12-16 14:46:14 · 806 阅读 · 4 评论 -
TICKLESS模式下最大低功耗的时间只能是349tick的原因分析
空闲执行时间没问题,传入函数后有问题.原创 2024-03-27 10:00:47 · 334 阅读 · 0 评论 -
FREERTOS开启TICKLESS后最大只能349tick休眠的原因分析
摘要 本文分析FreeRTOS空闲线程在TICKLESS模式下的运行时间限制问题。通过代码调试发现,当空闲时间超过349个tick时,系统会强制限制为这个最大值。原因是SysTick作为24位计数器,其最大计数值为0xFFFFFF。根据48MHz系统时钟和1000Hz调度频率计算,理论最大可休眠时间为0xFFFFFF/48000≈349个tick。这种设计确保了SysTick重载值不会溢出,但限制了系统的低功耗休眠时间。原创 2023-05-23 16:51:43 · 316 阅读 · 0 评论 -
STM32F7 ADC+DMA 目标数组无更新 解决办法
百度过其他adc+dma设置方法,均无效果。无效,进不去debug。机缘巧合之下搜索RTC的时候看到这篇文章。怀疑是编译器优化问题。加上__IO,防止编译器优化无效。得知F7的地址不是这个。这个文章仅做思路查看。原创 2021-12-22 15:28:30 · 2793 阅读 · 1 评论 -
ADC+DMA 目标数组无更新 解决办法
本文介绍了STM32F7系列ADC与DMA的优化实现方案。重点解决了L1-Cache导致DMA数据不更新的问题,提出了三种解决方案:使用DTCM内存、手动维护Cache一致性或配置write-through模式。代码采用32字节对齐内存分配,实现了带平均值计算的ADC电压读取功能,并通过DMA半传输和传输完成回调处理Cache一致性。优化后的方案支持多通道处理,包含初始化、数据读取示例和详细的注意事项,如内存分配建议、性能优化手段和错误处理机制,具有更好的结构清晰度和可维护性。原创 2021-12-22 16:54:50 · 2155 阅读 · 0 评论 -
【ARM V6编译器 编译汇编代码出错解决办法】
本文展示了ARM架构下使用汇编内联实现基础系统功能的代码示例。包括WFI指令执行、中断开关控制(INTX_DISABLE/ENABLE)和栈顶地址设置(MSR_MSP)等功能实现。这些底层操作用于系统休眠、中断管理和堆栈初始化,采用混合编程方式通过asm关键字嵌入汇编指令,其中WFI_SET函数单独实现,其他函数均包含返回指令(BX LR)。代码适用于需要直接操作CPU寄存器和指令的场景,为嵌入式系统开发提供基础支持。原创 2022-02-12 15:07:57 · 1052 阅读 · 0 评论 -
CUBE 配置SDRAM 无法选择地址问题解决办法
本文介绍了STM32 HAL库中SDRAM引脚配置问题的解决方法。当在CubeMX中无法选择SDRAM地址引脚时,通常是因为该引脚已被其他功能占用。通过检查并释放被占用的引脚(如示例中的PF12),即可恢复配置功能。文章提供了两种确定SDRAM所需引脚的方法:新建CubeMX工程查看自动配置,或直接参考他人已实现的代码。最后给出了一个具体的SDRAM初始化示例,详细列出了需要配置的GPIO引脚及其复用设置,主要涉及GPIOC/D/E/F/G等多个端口引脚,均设置为FMC复用功能。原创 2022-02-23 10:58:40 · 4438 阅读 · 0 评论 -
HAL_DMA_ERROR_FE错误代码解决方法
摘要:本文分析了STM32F7芯片使用DMA+USART+FIFO通信时出现数据丢失的问题。通过调试发现系统频繁进入DMA的FIFO错误中断(错误代码10),但实际配置并未启用FIFO功能。解决方案是在DMA中断服务函数中通过__HAL_DMA_DISABLE_IT(&hdma_usart1_tx,DMA_IT_FE)关闭FIFO错误中断。文中指出若不处理该错误,HAL库会强制关闭DMA传输,导致通信异常。文章还提供了错误定位方法和相关代码片段,适合遇到类似问题的开发者参考。(150字)原创 2022-02-10 18:17:37 · 2673 阅读 · 0 评论