stm32
文章平均质量分 85
小贝的奶爸
这个作者很懒,什么都没留下…
展开
-
基于VCP虚拟串口的Rosserial接口教程
在上篇文章中,我们介绍了如何在stm32中通过串口添加ROS的功能和接口,这篇文章接着上篇,介绍如何通过VCP虚拟串口来提升Rosserial的性能。原创 2022-09-30 11:50:09 · 867 阅读 · 0 评论 -
stm32实现CANOpen主机功能,无需canfestival库
我们知道CANOpen协议比较复杂,有对象字典、sdo、pdo等一大堆概念和功能,DS301、DS401等很多协议,CANOpen专门的canfestival库也是代码量巨大,异常复杂。然而实际上,这个复杂是针对实现一个完整的CANOpen从机来说的,CANOpen主机功能较为单一,甚至不需要第三方的类库。而我们日常工作中,经常做的是利用stm32作为主机,去控制CANOpen从机,因此,事情就变得很简单了。..................原创 2022-06-10 18:05:10 · 7109 阅读 · 4 评论 -
stm32采用cube生成项目后dsp库的用法
stm32中低端芯片没有浮点支持或者只包含单精度浮点库,如果用c的标准库math里面的相关函数,如sin、cos,这些函数是双精度编写的,stm32直接运行效率不高。为此,STM提供了dsp库来加速运算,这里记录一下采用cube方式生成的hal库的项目如何添加和使用dsp库。.........原创 2022-06-21 09:25:09 · 730 阅读 · 0 评论 -
stm32管理内存分配以及CCM的使用方法
本文以stm32f407VGT6为例描述,查阅该芯片的手册,可以知道其内存一共192K,但是在MDK编译项目时,有时候发现内存总量只有128k,原因在于,192k中有64k是CCM内存,剩下的128K才是正常的内存,所谓的CCM内存是cpu直接访问的空间,读写速度比其它内存快,但是不支持DMA,所以DMA对应的内存空间不能放在CCM中。.........原创 2022-06-21 13:20:27 · 6583 阅读 · 1 评论 -
stm32 将系统堆栈放置在外部内存的方法
stm32可以外扩很大的sram,常见外部sram的初始化函数一般是c语言写的,默认写在main函数里面。stm32初始化首先进入汇编代码startup_stm32f407xx.s,在汇编代码中Reset_Handler(复位中断服务程序)里面先调用了SystemInit,然后调用__main进行堆栈的初始化,最后才会跳转到用户main函数。调用SystemInit涉及到局部变量和函数调用,需要用到stack栈空间,如果我们简单的将系统堆栈配置到外部sram,执行SystemInit时外部sram还没有初始原创 2022-06-21 16:55:18 · 1865 阅读 · 2 评论 -
在STM32中实现ROS节点——Rosserial的用法
本文介绍如何将stm32控制板作为一个单独的ROS节点接入整个机器人ROS系统。在一个完整的机器人硬件系统中,由于众多传感器接口和实时性的需求,不可避免的需要加入嵌入式控制器,现在的机器人大多使用了分布式ROS系统,这套系统主要基于linux运行,而以stm32为例的大多数嵌入式控制器不支持linux。于是,当工控机想要与stm32进行数据交换时,只能脱离ROS体系采用自定义通讯协议。.........原创 2022-08-31 17:24:16 · 6172 阅读 · 17 评论