自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (2)
  • 收藏
  • 关注

原创 STM32+USB3300复位枚举异常的问题

F4和H7用的都是DWC2的USBIP,我的板子上3300+单片机工作的很好,插入枚举一切正常,但是设备收到上位机的复位命令后,单片机复位,USB3300复位,可是复位异常了,枚举异常,请在USB外设的复位函数中相关位置添加delay即可。关键字:STM32F4,STM32H7,USB3300,USBHS,Reset复位。全速USB不用加,高速USB在软复位时你就要加了。当然你不做设备软复位可以不加的、如果你用的官方的库。

2023-10-06 21:35:56 788

原创 .net7的 nativeaot基本原理

.net7的 nativeaot基本原理

2022-08-22 10:41:18 2932 1

原创 STM32 CANFD波特率计算器

STM32 CANFD波特率计算器

2022-07-31 15:29:00 2388

原创 TouchGFX和FREERTOS配合使用时,堆的问题

背景:我将出了全局变量之外所有的内存都给到FREERTOS的HEAP5去管理。GUI框架使用的是TouchGFX。我想把所有的动态内存分配全部交给FREERTOS的:pvPortMalloc去管理,这样好管理。于是我将内存分配相关函数全部重定义到FREERTOS提供的API中,新建一个Cpp文件:#include "freertos.h"void *operator new(size_t size){ return pvPortMalloc(size);}void *operato

2022-05-16 00:22:06 464

原创 RegisterDeviceNotification对于复合设备的问题

背景:单片机枚举了两个设备,也就是两个接口,一个虚拟机串口CDC,一个厂商自定义设备,虚拟串口CDC走的WIN10自带的驱动,厂商自定义设备走的zadig万能USB驱动,现在我需要监听厂商自定义设备。结果使用RegisterDeviceNotification监听的是复合设备。得到的设备实例路径也是复合设备的,并不是厂商自定义设备的实例路径,这两个的区别是,厂商自定义实例路径中会包含接口...

2021-11-05 01:05:22 644

原创 sprintf在裸机下的堆使用情况(STM32+ <arm-none-eabi-gcc>)

实测sprintf函数在打印整数时不会调用MALLOC,在打印浮点是会调用malloc如图所示为打印浮点时的函数调用栈回溯,printf也一样。libc库采用:

2021-10-07 15:38:34 322

原创 STM32高速USB设备HAL库的问题

背景:一个ARM cortex-M 核心的单片机,使用C++开发,RTOS使用FreeRTOS。某一外设中断(假设外设名称为P1,这里P1可能是串口 可能是USB 也可能是其他)接收到数据后,发送一个信号激活高优先级任务:p1_rec_task (中断下半部):p1_rec_task(){ while(1) { 等待信号量(); if(数据是XXX) { queue_item.data=pvPortMallo

2021-10-03 18:32:16 865

原创 STLWinUSB读写测试

#include <windows.h>#include "../STLWinUsb.h"#include <cassert>using namespace std;void CALLBACK UsbDeviceNotify(PTCHAR devicePath, DeviceChangeType_t dct, WORD vid, WORD pid){ wprintf(L"UsbDeviceNotify: devicePath:%ws,DeviceChange..

2021-04-22 18:11:53 151

原创 C++封装的WINUSB库:STLUsb支持热插拔检测

#include <windows.h>#include "../STLUSB.h"using namespace std;void CALLBACK UsbDeviceNotify(PTCHAR devicePath, DeviceChangeType_t dct, WORD vid, WORD pid){ wprintf(L"UsbDeviceNotify: devicePath:%ws,DeviceChangeType_t:%10ws,vid:0x%.4x,pi...

2021-04-21 19:33:25 859

原创 根据USB的DevicePath解析得到VID和PID的C++

wstring wdp(functionClassDeviceData->DevicePath); auto vidfind= wdp.find(L"vid_", 0); auto vidstr= L"0x"+wdp.substr(vidfind + 4, 4); auto vid = stoi(vidstr, 0, 16); auto pidfind = wdp.find(L"pid_", 0); auto pidstr = L"0x" + wdp.substr(pidfi.

2021-04-20 19:37:48 573

原创 极具性价比的CAN分析仪,可用CANOE上位机

可使用CANOE11上位机,USB CAN 分析仪,Vector CAPL DBC J1939 UDS FBL ISO15765 ISO14229

2021-03-08 17:48:57 1192 1

原创 Tasking编译器开发TC275(Tricore)中使用自定义段

Tasking编译器使用的不是GCC那套链接脚本语言,自创了一个LSL脚本语言。所以GCC那套链接脚本语法就不好使的。如果你在用Tasking编译并且需要用自定义段的话,你肯定不知道咋搞,因为网上没公开没资料。。。。只有个非常简单的Tasking的Linker使用手册,并不能满足从链接脚本中导出符号 给到C源文件中使用。这个问题我花了一天的时间解决了。看代码吧假设条件:假定想添加只读段的名称是.text.myrodata 1.在链接脚本文件中text group中添加如下代码:

2020-10-28 19:32:40 5525 6

原创 使用C++在AURIX Development Studio里开发TC275

背景:我自己有个库 是用C++写的,只用了C with class,为的就是在单片机上用继承的功能,编写高质量的代码。以前在ARM单片机上面用的很好,现在要在TC275单片机(Tricore核心的单片机,就像STM32是ARM核心的单片机一样)上跑。所以要搞一下Tricore C++AURIX DS for Tricore是使用的免费的Tasking编译器,其实该编译器是支持C++的。但是从启动文件来看 ,只初始化了c环境的东西:bss data等段,通过生成的elf 文件来看是生成了Cpp全局构.

2020-10-19 17:42:04 2251 4

原创 .net 异步笔记

2020-08-06 14:07:19 138

原创 记 MSVC编译器对于函数调用风格的脑残行为(__cdecl\__stdcall)

众所周知,cdecl是父函数需要平衡栈,stdcall是子函数需要平衡栈,可是我近日发现stdcall函数指针调用,父函数也平衡栈了,是不是觉得非常奇怪?看如下代码:typedef void (*__cdecl CppCdeclTest_t)(int a,int b);typedef void (*__stdcall CppStdTest)(int a, int b);int main(){ HMODULE dll=LoadLibrary(L"CallingConventionTe

2020-07-23 10:51:31 286

原创 笔记 LIBUSB close的问题

问题背景:电脑发送请求数据,设备返回响应数据。问题复现:打开->发送->关闭 第一次正常。能正常收发数据。重新打开->发送->关闭 第二次不正常,不能执行到发送回调函数(例子中的SendCallBack函数)。解决方案:在关闭函数里 libusb_release_interface后面添加一点延时就好了。伪代码:void PollThreadFunction(){ printf("UsbEventPollThread Is Running!\n")

2020-07-07 10:25:37 871

原创 MEF 元数据设计原理

本文不说MEF的元数据怎么用,只说MEF的自定义元数据为什么这么设计。 [MyMetaData("Android")] [MyMetaData("IOS")] [Export(typeof(IMyInterface))] [其他自定义的Attribute] public class MyClass:IMyInterface { /...

2020-02-06 15:47:34 387

原创 VS 2015/2017/2019插件开发笔记

一个VSIX就是一个Package。一个Package有一个唯一的GUID,里面可能包含多个CommandGroup。每一个CommandGroup 也都有GUID。CommandGroup 又有多个Command。每一个Command都有一个GUIID。在集成Package那个类中,Initialize的方法里 协商所有资源的初始化,如下。最后base.Initializ...

2020-01-31 19:39:57 943

原创 rust所有权理解,让所有人理解所有权

let▲▲▲ b=& ★★★a;不管怎么样,有这个&,a妥妥的是失去了写权限,至于有没有失去读权限,请看★★★。如果★★★是mut,说明a大大方方的传递了所有,读写权限全部失去,b具有读写权限。如果★★★啥特没有(即&a),说明a失去写权限的同时它耍了个心眼,并没有把写权限传给b,b只有只读权限,也就是说a也不能写,b也不能写,a和b都有读权限---...

2019-06-13 15:15:13 780

原创 VSCode 调试Rust程序设置

{ // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name"...

2019-06-08 21:20:05 2864 1

原创 stm32带CAN的应用的时候 进入STOP模式失败分析

我用了CAN,进入低功耗之前,步骤如下:1.关闭CAN收发器电源,2.停止发送数据,3.HAL CAN STOP。 如上步骤进入低功耗失败。下面的步骤成功:1.停止发送数据,2.HAL CAN STOP3.关闭CAN收发器电源。如上步骤进入STOP模式成功,做个笔记还有个问题,在调用HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,P...

2019-04-04 16:29:55 1000 1

原创 C#调用C dll一些走过坑的笔记

笔记1:c dll的call convention 是cdecl ,弄了一个CallBack,供外部调用。C#方面 在debug模式下,委托不加UnmanagedFunctionPointer是正常的,在release模式下不加UnmanagedFunctionPointer不行,加上UnmanagedFunctionPointer才正常。错误的写法:internal deleg...

2019-01-29 11:21:58 1233 1

原创 矩阵乘法计算脚本代码(C#)

代码:using System;using System.Collections.Generic;using System.Windows.Forms;class Script{ public class Matrix { public List> array = null; public int Row {

2016-11-28 17:59:52 1536

原创 N阶行列式计算

a11a1..a1n.........an1an..ann上面行列式的结果=Σ((-1)^t )*a1p1*a2p2*a3p3..其中t从0到np1 p2 p3,是自然数的一个排列。

2016-11-28 13:37:32 911

原创 QML 每一秒计数器加一,并且方向键控制文本的显示

代码完毕。

2015-01-19 19:41:47 775

原创 字符设备的初始化之我见:

字符设备的初始化之我见:1.首先申请主设备号,申请好之后这说明这个系统支持刚才申请的设备了。比如申请的主设备号为M2.实现XXXX_read,xxxx_write.....函数3.填充file_operations结构体{.owner=THIS_MODULE,//逗号.read=XXXX_read,.....};填充完毕了,这说明用户空间使用read等函

2014-06-04 17:24:24 917

原创 GLOBDEV——linux字符设备驱动程序

#include"linux/module.h"#include"linux/types.h"#include"linux/fs.h"#include"linux/errno.h"#include"linux/mm.h"#include"linux/sched.h"#include"linux/init.h"#include"linux/cdev.h"#includ

2014-06-04 17:12:07 999

原创 linux下时间编程

#include"stdio.h"#include"time.h"#include"string.h"void main( ){struct tm *date;time_t t;t=time(NULL);//////本地时间date=localtime(&t);puts("\n\n\n\n\n\n\nlocal:\n");printf(

2014-03-09 23:00:39 731

s3c 2440 _MDK

s3c 2440 _MDK 新手需要这个

2014-06-18

avr教程马超老师的教程

一个很漂亮的单片机教程,希望大家喜欢我哦

2014-04-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除