AM32电调学习解读六:main.c文件的函数介绍

最近在学习AM32电调的2.18版本的源码,我用的硬件是AT32F421,整理了部分流程处理,内容的颗粒度是按自己的需要整理的,发出来给有需要的人参考。按自己的理解整理的,技术能力有限,可能理解有误,欢迎纠正。


注:lida2003博主是个大牛。写的无刷电调的理论和AM32相关知识点介绍的比较系统,介绍的很详细,有需要的同学可以去参考。我对电调这块是外行,只是刚入门学习。这里重点是代码理解的整理分析,他哪里写了很多原理性的知识。

https://blog.csdn.net/lida2003/category_12753961.html?spm=1001.2014.3001.5482

        这是第六篇,前面分析的部分已经覆盖了电调控制的大部分路径,接下来是剩余代码的理解。简单介绍main.c文件函数的作用,部分函数前面的文章介绍,这里是个总结整理,为后面穿起来理解运行做准备。

1、doPidCalculations

pid计算函数,用于恒速、失速、限流的PID计算

2、loadEEpromSettings

配置参数读取换算。早期版本参数是一个一个赋值的,使用联合体数据结构,这只需要换算的处理了。个人认为这个函数挺重要,配置不同参数,是为了适应不同的应用场景,每个参数的作用是啥?对电调的运行理解有很大帮助。

3、saveEEpromSettings

保存配置参数

4、getSmoothedCurrent

计算平滑的电流值,这个算法可以减少计算量而且电流是最近100次的平均值

5、getBemfState

获取反电动势状态

6、commutate

相位计算、上下沿计算、同步检查标志位处理、换相、比较器管脚切换、比较器功率切换、比较器上下延中断切换

7、PeriodElapsedCallback

定时回调函数,检测到过零点后等待waitTime换相

8、interruptRoutine

比较器中断处理。

剔除无效过零点

main函数卡死判断保护

连续读取比较器输出符合预期filter_level次则判断为过零点

连续读取正确次数不符合预期,不是过零点,跳过

关闭比较器中断

更新本次换相时间

换相时间计数器清零

设置换相定时器等待时间并且使能定时器

9、startMotor

执行一次换相,设置平均换相时间,然后切换为运转状态

10、setInput

根据newinput应用油门数据

11、tenKhzRoutine

20khz 定时任务函数。

油门置低解锁

串口上报标志

启动阶段反电动势判断换相

PID调速

加速度处理

adjusted_duty_cycle生效

油门超时计数

12、processDshot

计算dshot,调用setInput生效油门数据

13、advanceincrement

正弦驱动3个相位duty值计算

14、zcfoundroutine

找到过零点例程,电机转动后才能在比较器的输出波形判断出过零点,所以这个函数的作用是找到过零点后推一下,为下次找过零点

15、runBrushedLoop

包含特定于有刷电机的循环

16、checkDeviceInfo

Uboot的尾部预留信息,用于指示配置参数信息存储位置,APP根据这个信息确认配置信息地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/80735.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WebSocket实时双向通信:从基础到实战

一、WebSocket 基础概念 1. 什么是 WebSocket? 双向通信协议:与 HTTP 的单向请求不同,WebSocket 支持服务端和客户端实时双向通信。 低延迟:适用于聊天室、实时数据推送、在线游戏等场景。 协议标识:ws://&#xff…

【算法】分支限界法和贪心、动态规划、回溯、分治法的区别是

什么是分支限界法 分支限界法是一种用于求解最优化问题的算法,其核心思想是通过剪枝策略减少搜索空间。 分支限界法常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。 在分支限界法中,每一个活结点只有一次机会成为扩展结点。活结点一旦成为扩展结点,就…

[自动化集成] 使用明道云上传附件并在Python后端处理Excel的完整流程

在企业日常自动化场景中,使用低代码平台如明道云搭建前端界面,结合自定义Python后端服务,实现灵活数据处理是一种高效的组合方式。本文将分享一个典型的集成用例:用户通过明道云上传文本和Excel附件,Python后端接收并解析这些信息,最终实现完整的数据处理闭环。 项目背景…

ubuntu下实时检测机械硬盘和固态硬盘温度

sudo apt update sudo apt install smartmontools然后,使用smartctl命令查看硬盘的详细信息,包括温度: sudo smartctl -a /dev/sda实时监控硬盘温度 虽然smartctl不能直接实时显示温度,你可以使用watch命令结合smartctl来定期查…

游戏开发实战(二):Python复刻「崩坏星穹铁道」嗷呜嗷呜事务所---源码级解析该小游戏背后的算法与设计模式【纯原创】

文章目录 奇美拉和队列奇美拉被动技能多对多观察者关系实现自定义元类奇美拉基类 管理奇美拉的队列奇美拉队列类心得体会扩展 规则定义工作相关奇美拉相关 奇美拉属性 在本篇博文,我将介绍本项目的整体框架,以及“编码规则”,这些规则保证了本…

Redis实现分布式锁的进阶版:Redisson实战指南

一、为什么选择Redisson? 在上一篇文章中,我们通过Redis原生命令实现了分布式锁。但在实际生产环境中,这样的基础方案存在三大痛点: 锁续期难题:业务操作超时导致锁提前释放不可重入限制:同一线程无法重复…

大语言模型 12 - 从0开始训练GPT 0.25B参数量 MiniMind2 补充 训练开销 训练步骤 知识蒸馏 LoRA等

写在前面 GPT(Generative Pre-trained Transformer)是目前最广泛应用的大语言模型架构之一,其强大的自然语言理解与生成能力背后,是一个庞大而精细的训练流程。本文将从宏观到微观,系统讲解GPT的训练过程,…

SID 2025上的天马,用“好屏”技术重构产业叙事

作为全球最具影响力的显示行业盛会,SID国际显示周不仅是技术比拼的舞台,更是未来产业方向的风向标。SID 2025上的技术密度与产业动态,再一次验证了这一定律。 Micro-LED、柔性OLED、裸眼3D、量子点、透明显示等新技术在SID 2025集中亮相&…

【AI News | 20250520】每日AI进展

AI Repos 1、nanoDeepResearch nanoDeepResearch 是一个受 ByteDance 的 DeerFlow 项目启发,旨在从零开始构建深度研究代理的后端项目。它不依赖 LangGraph 等现有框架,通过实现一个 ReAct 代理和状态机来模拟 Deep Research 的工作流程。项目主要包含规…

钉钉开发之AI消息和卡片交互开发文档收集

AI消息和卡片交互开发文档 智能交互接口能力介绍 AI助理发消息(主动直接发送模式 AI 助理发消息 - 主动发送模式 AI 助理发消息 - 回复消息模式 AI 助理发消息 - Webhook 回复消息模式 Stream 模式响应卡片回传请求事件 upload-media-files AI 助理发消息&a…

Redis中的事务和原子性

在 Redis 中,事务 和 原子性 是两个关键概念,用于保证多个操作的一致性和可靠性。以下是 Redisson 和 Spring Data Redis 在处理原子性操作时的区别与对比: 1. Redis 的原子性机制 Redis 本身通过以下方式保证原子性: 单线程模型…

Apollo10.0学习——planning模块(8)之scenario、Stage插件详解二

scenario插件 插件总览插件ValetParkingScenario阶段一:StageApproachingParkingSpotprocess()方法 阶段二:StageParkingprocess()方法FinishStage方法 插件PullOverScenarioIsTransferable: 场景切入条件 代码逻辑阶段一:PullOverStageAppro…

JVM的面试相关问题

面试中的相关问题主要是三块 1.JVM 内存区域划分 2.JVM 的类加载机制 3.JVM 的垃圾回收机制 JVM Java虚拟机 VM Virtual Machine 虚拟机,用 软件 来 模拟 硬件 传统意义上的"虚拟机" 更多指的是 VMWare, Virtual Box, Hyper-V, KVM(构造出虚拟的电脑,甚至可以…

win10使用nginx做简单负载均衡测试

一、首先安装Nginx: 官网链接:https://nginx.org/en/download.html 下载完成后,在本地文件中解压。 解压完成之后,打开conf --> nginx.config 文件 1、在 http 里面加入以下代码 upstream GY{#Nginx是如何实现负载均衡的&a…

[特殊字符]车牌识别相机,到底用在哪?

停车场管理,快速通行不是梦 停车场大概是车牌识别相机最常见的 “工作岗位” 啦!以前进出停车场,取卡、刷卡、人工收费,一系列操作下来,高峰期的时候真的能把人等得不耐烦😫 现在有了车牌识别相机&#xff…

nosqlbooster pojie NoSQLBooster for MongoDB

测过可用,注意 asar的安装使用报错改用 npx asar extract app.asar app 路径 C:\Users{computerName}\AppData\Local\Programs\nosqlbooster4mongo\resources npm install asar -g asar extract app.asar app 打开shared\lmCore.js 修改MAX_TRIAL_DAYS3000 修改…

组态王通过开疆智能profinet转ModbusTCP网关连接西门子PLC配置案例

本案例是组态王通过使用开疆智能研发的Profinet转ModbusTCP网关采集西门子1200PLC中数据的案例。 网关配置 首先来配置网关的参数,打开网关配置软件“Gateway Configuration Studio” 由于组态王那侧设定为ModbusTCP客户端所以网关作为ModbusTCP服务器。新建项目…

大模型服务如何实现高并发与低延迟

写在前面 大型语言模型(LLM)正以前所未有的速度渗透到各行各业,从智能客服、内容创作到代码生成、企业知识库,其应用场景日益丰富。然而,将这些强大的 AI 能力转化为稳定、高效、可大规模应用的服务,却面临着巨大的挑战,其中高并发处理能力和低响应延迟是衡量服务质量的…

k8s监控方案实践补充(二):使用kube-state-metrics获取资源状态指标

k8s监控方案实践补充(二):使用kube-state-metrics获取资源状态指标 文章目录 k8s监控方案实践补充(二):使用kube-state-metrics获取资源状态指标一、Metrics Server简介二、kube-state-metrics实战部署1. 创…

Manus 全面开放注册,OpenAI 发布 Codex,ChatGPT 上线 GPT-4.1!| AI Weekly 5.12-18

📢本周 AI 快讯 | 1 分钟速览🚀 1️⃣ 📝 Manus 全面开放注册 :无需邀请码即可注册,新用户免费获得 1000 积分,每日 300 积分免费任务。 2️⃣ 🔍 阿里 Qwen 推出「深入研究」 :Qw…