问题标签 [low-level-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
46 浏览

c# - KeyLogger 仅捕获某些 Windows 或应用程序?

我有一个 C# 中的按键记录器(下面的代码),在 Visual Studio 中以调试模式运行时可以完美运行。但是,当我将它作为独立的控制台应用程序运行时,只会捕获来自特定窗口/应用程序的击键,我不知道为什么。我尝试了各种构建版本或首次亮相、x86 或 x64、是否以管理员身份运行、在控制台应用程序启动之前或之后打开应用程序的各种组合,但似乎没有任何区别。

我正在运行Win10 64位。以下是一些日志记录工作正常的示例应用程序:Firefox、Opera、Edge、Windows 运行对话框、IE11、Outlook 桌面客户端、Microsoft Teams、Skype、Spotify。

以下是一些日志记录不起作用的示例应用程序:Chrome、Notepad、Notepad++、Oracle SQL Developer、SSMS、Excel、Word。

我对接下来要尝试什么进行调试感到困惑。任何想法或建议都非常感谢!

0 投票
1 回答
223 浏览

c - STM32 SPI LL DMA 发送

我一直在尝试让 SPI 主传输在 STM32G030C8 上使用 DMA 和 STM32 LL 驱动程序工作。

我确实让 SPI 在没有 DMA 的情况下与 LL 驱动程序一起工作,所以我相信至少我的接线是正确的。

我做了什么:

  1. SPI1_TX通过将请求设置为 DMA1 通道 1 ,将 SPI 设置为在 cubeMX 中使用 DMA

  2. 在代码中设置传输:

主程序

spi.c:

dma.c:

从参考手册中,我找到了 DMA 配置的以下步骤:

通道配置过程 配置 DMA 通道 x 需要以下序列:

  1. 在寄存器中设置外设寄存器地址DMA_CPARx。在外设事件之后,或在内存到内存模式下启用通道之后,数据从该地址移入/移出该地址。
  2. DMA_CMARx寄存器中设置内存地址。在外设事件之后或在存储器到存储器模式下启用通道之后,数据被写入/读取存储器。
  3. DMA_CNDTRx在寄存器中配置要传输的数据总数。每次数据传输后,该值都会递减。
  4. 在寄存器中配置下面列出的参数DMA_CCRx: – 通道优先级 – 数据传输方向 – 循环模式 – 外设和内存递增模式 – 外设和内存数据大小 – 半传输和/或全传输时的中断使能和/或传输错误
  5. 通过设置寄存器中的 EN 位来激活通道DMA_CCRx。通道一旦启用,就可以服务来自连接到该通道的外设的任何 DMA 请求,或者可以启动内存到内存块传输。

据我了解,第 1、2、3 和 5 步是在 main.c 中完成的,第 4 步已经在 spi.c 中完成

同样在关于 SPI 和 DMA 的参考手册中:

SPIx_CR2寄存器中的 TXE 或 RXNE 使能位置位时,请求 DMA 访问。必须向 Tx 和 Rx 缓冲区发出单独的请求。

- 在传输中,每次 TXE 设置为 1 时都会发出一个 DMA 请求。然后 DMA 写入SPIx_DR寄存器

使用 DMA 开始通信时,为防止 DMA 通道管理引发错误事件,必须按顺序执行以下步骤:

  1. 如果使用 DMA Rx,则在 SPI_CR2 寄存器的 RXDMAEN 位中启用 DMA Rx 缓冲区。
  2. 如果使用了流,则在 DMA 寄存器中为 Tx 和 Rx 启用 DMA 流。
  3. 如果使用 DMA Tx,则在 SPI_CR2 寄存器的 TXDMAEN 位中启用 DMA Tx 缓冲区。
  4. 通过设置 SPE 位启用 SPI。

据我了解,我已经完成了所有步骤,但是我的示波器连接到 SPI1 线路时我看不到任何东西。

我一定是遗漏了一些东西(或者某些东西以错误的顺序完成),但我不知道出了什么问题。

在其他一些问题中,问题是 DMA 通道错误并且不支持 SPI,但是在这个 MCU 中,如果我理解正确的话,DMAMUX 会处理这个问题,并且任何信号都应该在任何 DMA 通道中可用?(在 spi.c 中配置)

编辑:

从 SPI 和 DMA 读取标志:

因此,一切似乎都已启用,没有错误但没有数据传输!

任何帮助表示赞赏!谢谢!