串口的高级写法
前言很欣赏这种结构模块化的编程方式,非常优美!
一、相关基本知识1、 NOINIT定义类型 是一个编译器 / 链接器相关的宏定义,其核心作用是告诉编译器和硬件:不要对该变量进行初始化操作,且变量数据在系统复位后仍能保留。
NOINIT 是嵌入式开发中用于 “保留复位后 RAM 数据” 的专用宏,你的代码中用它修饰 UART 接收缓冲区,核心是为了避免复位丢失未处理的接收数据,或减少启动初始化开销。
用来定义串口的接受缓冲数组。
2、 typedef核心作用是 创建新的数据类型或者函数类型typedef的用法很多,这里只说一种。在结构体中定义变量,只需 int xxx,即可 通过结构体 .xxx 表示结构体中的变量,但如果结构体中添加函数,那该如何定义呢?定义函数,跟变量一样,要先找他的类型,这里就是指函数类型了typedef void (*Func_UartInitCallback)(Enum_DrvBaudType emBaud, Enum_DrvParityType emParity); 这里 typedef 定义了一个函数类型,这个类型限制了函数的输入和输出,从而决定了 ...
TMS320F280049C开发板上手
一、软件安装
二、CCS简单操作
2.2 仿真模式
编译后点击这里进入仿真模式。
再电机绿色箭头,开启仿真,不开启无效!
开启这里的实时更新,仿真检测的变量才会自动更新
ubuntu 部署deepseek
方案 在ubuntu中安装ollama,将下载完的deepseek模型部署到ollama中,完成部署。ui采用open-webui,通过docker部署,以防服务器8080端口冲突,再连接ollama的api端口,即可实现在网页端使用deepseek语言模型。
一、安装ollamaOllama的官网地址为:https://ollama.com 可直接从官网下载适合自己本地环境的版本,Linux、Windows和MacOS都有相应的支持。可在选择好后,点击下载,在下载中暂停下载,右键复制链接到ubuntu命令行中,通过wget http://example.com/file.zip指令下载文件。
二、部署模型方案一: ollama pull deepseek-r1:14b直接部署需要的模型,操作有些类似docker,但是他的模型有限,不能安装精简版本的,如DeepSeek-8B-Q4.Modelfile,等缩水模型.
方案二:可前往https://huggingface.co/TheBlokeHuggingFace模型库搜索DeepSeek-R1-Distill-Llama-8B- ...
测试
dad
111
11
11
111
111
11
solidworks 转 urdf文件
介绍urdf文件是用于ROS中实体模型仿真的文件,可通过编程实现,也可使用solidworks画出模型后,导出urdf文件。我此次是将机械臂的模型导出。
转成下面的rviz中打开的仿真图,可通过ROS进行控制机械臂的运动
一、环境使用sw导出,需要先下载urdf.exe文件 http://wiki.ros.org/sw_urdf_exporter由于urdf.exe目前只适配2021以前的sw,因此我这里用了sw2020版本的,urdf.exe直接安装即可。
工具栏里有这个就是安装成功了。
二、建立坐标系、基准轴这一步最为关键! 模型复杂的不可以用自动建立坐标系的方法去导出urdf,否则会无法正确控制、我一直试了十次!才终于成功了
每个关节需要一个坐标系,坐标系必须和所在关节建立联系,不能参考其他的关节。
先将关节“独立出去” 再其寻找旋转轴,如电机法兰盘
最好以z轴为旋转轴。选取的坐标原点最好在模型外壳上,方便后续导出时减少stl文件,当然 只能选取模型外壁的stl模型,内部的模型选上后会导致 mesh文件夹下的stl文件为空。
三、导出
导出完后,可再次打开u ...
STM32CubeMX HAL库问题总结
一、串口重定向发现正常发送函数可用,但使用重定向不能使用,检测keil下载设置中
这里要打勾
二、HAL库串口接收 结束字符在库函数中就很简单,接收一个字节就进入串口中断去检测其数据,写通信协议很方便,如下
但是在HAL库中他进行了包装,增加了发送中断,和接收回调,直接接受完指定长度的数据后进入回调函数,就没必要按库函数那么写了
当然非要按库函数那么写,可以在中断复位函数的HAL_UART_Receive_IT(&huart2, (uint8_t *)&RxBuffer, LENGTH);LENGTH长度配置为1,这样接收一个字节就进入回调函数了,就跟库函数一样了,但显然这样就没意义了。没有发挥HAL库的方便。
我在实际使用后,回调函数这个真难用啊,只能接收长度,不能定义结束字符,还得再找到USART1_IRQHandler(void) 函数自己重新定义。不然只能把长度改为1,当中断函数使了。。。
看来得学习DMA了呀!
42步进电机+drv8825驱动
一、42步进电机
1、简介
42步进电机又叫Nema17 步进电机,42和Nema17都是指长度
42mm指的是转轴那一面的尺寸,步进电机的长度有好多规格,长度越长劲儿越大,看下表
2、接线
4根线,四线两相,指A+ A+ B+ B- 两对
A+ A- 在一条线上串联,通电时相当于电磁体,A B交互通电让中间的永磁体跟着电磁铁的方向转动。该42步进电机的转子是50齿,除了A B 两对电磁体还有两对, 应该是让永磁体停止转动的吧,搭配转子的50齿使得一个脉冲转一个齿就停止,从而实现一步为1.8度吧 好像是。如果是细分的话,就是驱动器的功劳了,他会在这个1.8度之间再进行细分,大概是根据A B不同磁性的强度来控制永磁体的位置,类似拔河。
二、驱动器
了解了下,现在的步进电机驱动确实厉害,之前用过的TB6600真是又大又笨,像TMC2209模块都可以进行串口控制步进电机的转速那些了,确实可以,当然也可以买集成在42步进电机底部的闭环驱动板,直接集成了ESP32、和霍尔检测电机位置、转速。
1、DRV8825驱动模块
我选择这个是看到他比A4988强些,我选的42步进电机 40 ...
ros笔记
指令创建工作空间创建工作文件夹 mkdir -p catkin_ws/src初始化 catkin_init_workspace
编译 catkin_make
设置环境变量 source devel/setup.bash
launch启动 roslaunch ur3 display.launch
问题总结核心: 玄学问题就重启 roscore !! 解决80%的问题!gazebo 运行问题汇总1、在VM虚拟机运行中报错“VMware: vmw_ioctl_command error 无效的参数.”首先第一个VMware: vmw_ioctl_command error 无效的参数的问题。这应该是虚拟机的bug,毕竟使用虚拟机和真实的物理机上是有差别的。这有三种解决办法:
第一种:关闭虚拟机的3D图形加速
在编辑虚拟机选项中关闭3D图形加速
第二种:环境变量中设置
在运行之前,提前在终端执行以下命令:export SVGA_VGPU10=0
第三种,仅在launch文件中加入 <env name="SVGA_VGPU10" va ...
云母色选机PLC代码详解
6ac8868b32d665124b35b270e095c5af3726a0b6274c811ad23f06846cc4427fbe2440bfbb7192c051f4cd89460498a10c39b8f5e65a08beadacf8d66e525af182a27e49025df1fd2b5dd6b714fca3fe843d06619f8b9d9e3046f1ca0fb2b8b046442af05422f6741954d69fe400836ac0f7aebf8166e7b78274904d5da8faadfb0f77974d4d3b67414f5ea29bf01e854634d2f213ab9151e63b0e7eeb2e1d9ea6887d6e611bb9abb1edbdb91dbe29b149620d7d13f2d5a59da3821cc144b1e41fc293cb83a9ca1c21c16b56001c8640b87f21556ce9d014bb5015cafa00cffaf7df81c9192215628714161d601582d657e7624bb182c346c ...
streamlit 网页端opencv图像处理
streamlit 简介Streamlit是一个用于创建交互式Web应用程序的Python库。它的主要目标是使数据科学家能够快速轻松地搭建和部署机器学习模型、数据可视化和演示等应用。以下是Streamlit的一些核心特点和优势:简单易用:Streamlit提供了简洁直观的API,使得创建Web应用变得非常简单。只需使用少量的Python代码,就能够构建交互式应用程序,无需繁杂的前端开发经验。实时更新:Streamlit支持实时更新,即当修改代码后,应用程序会自动重新加载,并且可以即时看到修改后的效果,方便进行迭代开发和调试。内置组件:Streamlit提供了各种内置组件,可以方便地构建用户界面,包括文本输入框、下拉菜单、按钮、图表等,使得用户与应用程序进行交互更加灵活。多媒体支持:Streamlit内置了对多媒体内容的支持,可以轻松地显示图像、音频和视频等,方便展示和分析多媒体数据。部署简单:Streamlit应用程序可以非常容易地部署在各种平台上,包括本地服务器、云服务器以及各种云服务提供商(如Heroku、AWS等),使得应用的分享和展示变得非常便捷。总之,Streamlit是一个 ...