草庐IT

STM32Programmer

全部标签

java - "Simulating"一个 64 位整数和两个 32 位整数

我正在为移动设备编写一个计算量非常大的程序,并且仅限于32位CPU。本质上,我正在执行大量数据的点积(>12k带符号的16位整数)。浮点运算太慢了,所以我一直在寻找一种方法来使用整数类型执行相同的计算。我偶然发现了一个叫做BlockFloatingPoint的东西算术(链接论文中的第17页)。它做得很好,但现在我面临一个问题,即32位不足以以足够的精度存储我的计算输出。澄清一下,精度不够的原因是我必须大幅降低每个数组元素的精度,以便最终得到适合32位整数的数字。这是~16000件事的总和,使我的结果如此巨大。有没有办法(我喜欢引用一篇文章或教程)使用两个32位整数作为最高有效字和最低有

一起玩儿物联网人工智能小车——09. ESP32 WROVER开发板组成、引脚功能初探

在拿到一个芯片、模组、功能模块或者开发板的时候,除了去网上搜索各种文档和教程之外,最重要的文档就是设计制造商所提供的datasheet文档了。datasheet直接翻译成中文就是数据表,通常指用于辅助硬件开发的资料工作表、数据手册、规格书、产品手册等。对于硬件开发者和相关软件开发者来说都是必备的文档资料。通过datasheet我们通常可以了解到该硬件的1.功能描述。2.电气特性。3.管脚的定义。4.封装图、尺寸图。5.原理图。6.典型应用等相关的技术资料。为我们了解和使用这个芯片提供了一定的帮助。基于ESP32系列芯片最常见的开发板就是ESP32-DevKitCV4开发板了,这是一个通用型基础

c++ - COM 初始化和在 Win32 C++ DLL 中的使用

我正在编写一个使用COM查询WMI的Win32C++DLL。如何以编程方式确定COM是否已初始化?谢谢。 最佳答案 MarkRansom是对的直接、干净和简单的解决方案是要求调用者对COM进行初始化。丑陋的骇客您可以尝试第一次调用-可能是CoCreateInstance,如果它返回CO_E_NOTINITIALIZED,请自己运行CoInitialize(在这种情况下不要忘记取消初始化)但是,从DLL将CoInitialize“注入(inject)”到调用者线程中仍然存在问题。所以有一个清洁溶液让DLL创建一个工作线程(这意味着DL

c++ - 将 float 转换为 32 位十六进制 C++

谁能告诉我是否有将float转换为十六进制格式的代码?例如:floatnum=70.482和十六进制函数应返回428CF6C9。如果之前有任何代码已经完成,请链接我。干杯。 最佳答案 你可以自己简单地写一下:floatx;constunsignedchar*pf=reinterpret_cast(&x);for(size_ti=0;i!=sizeof(float);++i){//ithbyteispf[i]//e.g.printf("0x02X",pf[i]);}事实上,您可以这样做以获得任何(标准布局*)变量的二进制表示。*)谢谢

c++ - new[] 比 Win32 的 VirtualAlloc 快吗?

我正在测试一些字符串池分配器的性能:我考虑了提供的那个here调用VirtualAlloc然后分割出子分配,以及使用标准C++(不直接调用任何Win32API)和new[]的类似实现。我希望VirtualAlloc版本更快,因为我认为开销应该比C++new[]少;但我观察到的结果恰恰相反:使用new[]似乎比使用较低级别的VirtualAlloc产生更快的代码。我跑了几次测试(代码是用VS2010SP1编译的),输出是这样的:StringpoolusingVirtualAlloc:1280.07msStringpoolusingnew[]:799.193ms这是为什么?为什么new[]

【正点原子STM32】STM32时钟系统(时钟树、时钟源、分频器和倍频系数、锁相环、STM32CubeMX时钟树、系统时钟配置步骤)

一、认识时钟树1.1、什么是时钟?1.2、认识时钟树(F1)1.3、认识时钟树(F4)1.4、认识时钟树(F7)1.5、认识时钟树(H7)二、配置系统时钟2.1、系统时钟配置步骤2.2、外设时钟使能和失能2.3、sys_stm32_clock_init函数(F1)HAL_RCC_OscConfig()函数(F1)HAL_RCC_ClockConfig函数(F1)2.4、sys_stm32_clock_init函数(F4/F7)HAL_RCC_OscConfig()函数(F4/F7)HAL_RCC_ClockConfig()函数(F4/F7)2.5、sys_stm32_clock_init函数(

c++ - 如何从 win32 应用程序的命令行参数中获取 std::string?

所以现在我有一个intmain(intargc,char*argv[]){}如何使它基于字符串?intmain(intargc,std::string*argv[])就够了吗? 最佳答案 你不能改变main的签名,所以这是你最好的选择:#include#includeintmain(intargc,char*argv[]){std::vectorparams(argv,argv+argc);//...return0;} 关于c++-如何从win32应用程序的命令行参数中获取std::st

第三章 USB应用笔记之USB鼠标(以STM32 hal库为例)

第三章USB应用笔记之USB鼠标(以STM32hal库为例)提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录第三章USB应用笔记之USB鼠标(以STM32hal库为例)前言一、STM32USB库简单讲解工程目录结构.C文件分析二、实操代码《鼠标》一、STM32CubeMX设置USB时钟设置USB使能UBS功能选择二、代码部分添加代码鼠标发送给PC的数据解析实验效果总结前言STM32F1系列是意法半导体(STMicroelectronics)推出的一款微控制器系列,具有广泛的应用领域。在STM32F1系列中,一些型号支持USB功能,以下是STM32F1系列USB的一些特点

java - 如何使用 gcc 编译器或其他编译器生成 64 位 .dll。无法在 AMD 64 位平台上加载 IA 32 位 .dll

您好,我没有找到如何创建64位dll的解决方案。并使用它的原生C++方法。我使用Java代码metodynatywne.java:classmetodynatywne{static{System.loadLibrary("metodynatywne");}nativepublicvoidsayHello();publicstaticvoidmain(Stringargv[]){newmetodynatywne().sayHello();}}然后生成metodynatywne.h使用javah-jnimetodynatywne我写了metodynatywne.cpp代码:#include

C++ -- Detours (Win32 API Hijacking) -- 劫持类方法

很长一段时间我都没有遇到使用Detours劫持函数的问题...当我试图劫持类方法时(在我的例子中是IHTMLDocument2::writefrommshtml.dll)我遇到了无穷无尽的问题(主要是类型不匹配)。由于我没有在网上找到任何相关示例,我开始怀疑是否可以这样做。我的问题是:是否可以使用Detours劫持类方法?我可以举个例子吗?如果不是,是否可以使用另一个Hook库以更简单的方式劫持类方法?提前谢谢大家! 最佳答案 IHTMLDocument2::write不仅仅是一个类方法;这是一个COM方法。这意味着更多。例如,还有