问题标签 [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.
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。
我对接下来要尝试什么进行调试感到困惑。任何想法或建议都非常感谢!
c - STM32 SPI LL DMA 发送
我一直在尝试让 SPI 主传输在 STM32G030C8 上使用 DMA 和 STM32 LL 驱动程序工作。
我确实让 SPI 在没有 DMA 的情况下与 LL 驱动程序一起工作,所以我相信至少我的接线是正确的。
我做了什么:
SPI1_TX
通过将请求设置为 DMA1 通道 1 ,将 SPI 设置为在 cubeMX 中使用 DMA在代码中设置传输:
主程序
spi.c:
dma.c:
从参考手册中,我找到了 DMA 配置的以下步骤:
通道配置过程 配置 DMA 通道 x 需要以下序列:
- 在寄存器中设置外设寄存器地址
DMA_CPARx
。在外设事件之后,或在内存到内存模式下启用通道之后,数据从该地址移入/移出该地址。- 在
DMA_CMARx
寄存器中设置内存地址。在外设事件之后或在存储器到存储器模式下启用通道之后,数据被写入/读取存储器。DMA_CNDTRx
在寄存器中配置要传输的数据总数。每次数据传输后,该值都会递减。- 在寄存器中配置下面列出的参数
DMA_CCRx
: – 通道优先级 – 数据传输方向 – 循环模式 – 外设和内存递增模式 – 外设和内存数据大小 – 半传输和/或全传输时的中断使能和/或传输错误- 通过设置寄存器中的 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 通道管理引发错误事件,必须按顺序执行以下步骤:
- 如果使用 DMA Rx,则在 SPI_CR2 寄存器的 RXDMAEN 位中启用 DMA Rx 缓冲区。
- 如果使用了流,则在 DMA 寄存器中为 Tx 和 Rx 启用 DMA 流。
- 如果使用 DMA Tx,则在 SPI_CR2 寄存器的 TXDMAEN 位中启用 DMA Tx 缓冲区。
- 通过设置 SPE 位启用 SPI。
据我了解,我已经完成了所有步骤,但是我的示波器连接到 SPI1 线路时我看不到任何东西。
我一定是遗漏了一些东西(或者某些东西以错误的顺序完成),但我不知道出了什么问题。
在其他一些问题中,问题是 DMA 通道错误并且不支持 SPI,但是在这个 MCU 中,如果我理解正确的话,DMAMUX 会处理这个问题,并且任何信号都应该在任何 DMA 通道中可用?(在 spi.c 中配置)
编辑:
从 SPI 和 DMA 读取标志:
因此,一切似乎都已启用,没有错误但没有数据传输!
任何帮助表示赞赏!谢谢!