单片机
蒙塔基的钢蛋儿
这个作者很懒,什么都没留下…
展开
-
RegisterDeviceNotification对于复合设备的问题
背景:单片机枚举了两个设备,也就是两个接口,一个虚拟机串口CDC,一个厂商自定义设备,虚拟串口CDC走的WIN10自带的驱动,厂商自定义设备走的zadig万能USB驱动,现在我需要监听厂商自定义设备。结果使用RegisterDeviceNotification监听的是复合设备。得到的设备实例路径也是复合设备的,并不是厂商自定义设备的实例路径,这两个的区别是,厂商自定义实例路径中会包含接口...原创 2021-11-05 01:05:22 · 692 阅读 · 0 评论 -
sprintf在裸机下的堆使用情况(STM32+ <arm-none-eabi-gcc>)
实测sprintf函数在打印整数时不会调用MALLOC,在打印浮点是会调用malloc如图所示为打印浮点时的函数调用栈回溯,printf也一样。libc库采用:原创 2021-10-07 15:38:34 · 371 阅读 · 0 评论 -
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 · 1002 阅读 · 0 评论 -
Tasking编译器开发TC275(Tricore)中使用自定义段
Tasking编译器使用的不是GCC那套链接脚本语言,自创了一个LSL脚本语言。所以GCC那套链接脚本语法就不好使的。如果你在用Tasking编译并且需要用自定义段的话,你肯定不知道咋搞,因为网上没公开没资料。。。。只有个非常简单的Tasking的Linker使用手册,并不能满足从链接脚本中导出符号 给到C源文件中使用。这个问题我花了一天的时间解决了。看代码吧假设条件:假定想添加只读段的名称是.text.myrodata 1.在链接脚本文件中text group中添加如下代码:原创 2020-10-28 19:32:40 · 6049 阅读 · 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 · 2455 阅读 · 4 评论