• 阻抗匹配

    本人非专业领域工作者,内容难免瑕疵,所以仅供参考。 什么是阻抗匹配?阻抗匹配的概念应用在各个工程领域,但在射频电路领域,阻抗匹配有更加重要的意义。阻抗匹配的目的在于将能量完整的从一个端口传输到另一个端口上,当负载的输入阻抗和源的输出阻抗共轭相等时...
  • STM32H7性能问题优化实践

    最近开发一个项目,采用STM32H7单片机,遇到了一个我以前没有遇到过的一个性能问题,通过分析解决该问题的过程让我对STM32高性能数据传输有更加深刻的理解。 关键字:总线、DMA、FIFO 项目背景某项目开发中需要将Linux的数据通过USB...
  • 简单尝试一下ITCM

    ITCM简介在STM32高性能单片机中存在一种供内核专用的内存TCM-SRAM,称为紧耦合内存。为了区分不同的用途,又存在称为DTCM和ITCM的两种不同内存,这两种内存本质上是一致的,但是其背后默认的MPU策略不同,所以一般将DTCM用于存储关键的...
  • PT协程的一个小扩展

    在之前的文章中介绍了使用链表来更加优雅的使用PT协程。我最近发现了当初实现的一个错误,现在已经修复了。 这里不是为了讨论之前的实现,而是介绍一个更有意思的东西。我在之前的实现基础上,实现了一个更加优雅的函数来利用协程,这应该是一种异步编程的技巧,或者...
  • FreeRTOS内核窥探

    在多任务环境下调试代码需要一定的代码调试经验,尤其是涉及到异步的任务流程时,单步执行可能无法跟踪到需要的执行流程。如果代码全速运行时虽然可以通过日志来梳理执行流程,但是涉及到FreeRTOS内核中的内容时,一般的日志显得比较鸡肋了。比如说我想检查某...
  • 初学射频信号

    从事嵌入式软件开发4年有余,我自认为还是有相当多的知识和技能存在欠缺,所以近年来一直保持良好的学习态度,持续充实自身的技能。从之前的文章内容能够看出,我主要围绕嵌入式软件开发的多个方面记录自己的学习心得。但实际上不仅限于此,在过去的一年中有很多机会...
  • 一个困扰我很久的问题

    大约在一年半前,我写了一篇文章介绍如何统计FreeRTOS系统中任务的实时CPU占用率的方法,其中最关键的是使用DWT计数器。我一直认为这个计数器在任意条件下都是能够正确运行的,直到我把它运用到Cortex-M7内核中。 正常情况下Cortex-M7...
  • 更优雅的使用Protothreads协程框架

    PT协程框架PT(Protothreads)是一个轻量级的多任务框架,区别于一般基于栈的RTOS,它实现多任务的基本原理是通过语句间的任意跳转来实现任务切换,所以实现多任务的开销比较小。 我们看一段示例代码来了解其用法。 12345678910111...
  • 单片机总线选择焦虑

    当你有多个选择,但是每个选择都不完美时,就会出现选择焦虑! 最近在优化单片机上USB协议栈内的代码,我发现了一个我之前没有被注意到的地方,那就是写入到USB端点上的数据是由DMA自动完成的,涉及到DMA的内存区域都需要特别对待,而我之前就是将它...
  • 实现独有的硬件通信总线

    背景前段时间开发了一个嵌入式软件,其中有一个功能是使用PWM驱动一个无源的蜂鸣器,根据以往的经验来看,这是一个非常简单的功能,不过在实际操作时遇到了一个很多人往往都忽略的问题。我们硬件选择的单片机没有硬件PWM功能,只有普通的定时器,这就意味着我们只...
/4