【AM32 电调学习–main()】

AM32 电调学习–main()

零、相关参数

  1. startup_max_duty_cycle 启动阶段最大占空比
          if (input >= 47 && (zero_crosses < (20 >> stall_protection))) {
                if (duty_cycle_setpoint < min_startup_duty) {
                    duty_cycle_setpoint = min_startup_duty;
                }
                if (duty_cycle_setpoint > startup_max_duty_cycle) {
                    duty_cycle_setpoint = startup_max_duty_cycle;
                }
            }
  1. throttle_max_at_low_rpm 400(2000)
  2. throttle_max_at_high_rpm
    throttle_max_at_low_rpm = throttle_max_at_low_rpm * TIMER1_MAX_ARR / 2000; // adjust to new pwm frequency
    throttle_max_at_high_rpm = TIMER1_MAX_ARR; // adjust to new pwm frequency
  1. char RC_CAR_REVERSE = 0; // have to set bidirectional, comp_pwm off and stall
    // protection off, no sinusoidal startup
 if (RC_CAR_REVERSE) { // overrides a whole lot of things!
        throttle_max_at_low_rpm = 1000;
        bi_direction = 1;
        use_sin_start = 0;
        low_rpm_throttle_limit = 1;
        VARIABLE_PWM = 0;
        // stall_protection = 1;
        comp_pwm = 0;
        stuck_rotor_protection = 0;
        minimum_duty_cycle = minimum_duty_cycle + 50;
        stall_protect_minimum_duty = stall_protect_minimum_duty + 50;
        min_startup_duty = min_startup_duty + 50;
    } 
  1. desync_check 每6step置1
  2. filter_level 判断过零的次数

一、初始化

1. 初始化外设

    initAfterJump();

    initCorePeripherals();

    enableCorePeripherals();

2.设置参数获取

    loadEEpromSettings();

    EEPROM_VERSION = *(uint8_t*)(0x08000FFC);
#ifdef USE_MAKE
    if (firmware_info.version_major != eepromBuffer[3] || firmware_info.version_minor != eepromBuffer[4]) {
        eepromBuffer[3] = firmware_info.version_major;
        eepromBuffer[4] = firmware_info.version_minor;
        for (int i = 0; i < 12; i++) {
            eepromBuffer[5 + i] = firmware_info.device_name[i];
        }
        saveEEpromSettings();
    }
#else
    if (VERSION_MAJOR != eepromBuffer[3] || VERSION_MINOR != eepromBuffer[4]) {
        eepromBuffer[3] = VERSION_MAJOR;
        eepromBuffer[4] = VERSION_MINOR;
        for (int i = 0; i < 12; i++) {
            eepromBuffer[5 + i] = (uint8_t)FIRMWARE_NAME[i];
        }
        saveEEpromSettings();
    }
#endif
</
### AM32 开源电调 上位机软件 开发教程 下载 对于AM32开源电调项目的开发,尤其是涉及到上位机软件的选择和开发资源获取方面,有多种途径可以获得所需资料和支持。 #### 使用的编程环境与工具链 为了方便开发人员进行固件编写以及调试工作,推荐使用Keil MDK作为主要IDE来完成C/C++代码编辑、编译等工作[^3]。此外,STM32CubeMX也是一个非常有用的图形化配置工具,它可以帮助快速初始化外设并生成初始项目框架。 #### 烧录方式及工具介绍 针对不同接口类型的烧写需求,提供了两种方案供选择: - 对于采用串口或USB DFU模式进行程序加载的情况,建议选用`Artery_ISP_Programmer`这款官方支持的应用程序来进行操作; - 若是通过SWD硬件接口实施,则应考虑利用`ArteryICPProgrammer`配合AT-LINK或J-LINK仿真器实现高效稳定的在线调试体验[^1]。 #### 通信协议解析 当涉及具体应用层面上的数据交互时,通常会借助UART(Universal Asynchronous Receiver Transmitter)总线完成主机间的信息传递任务。在此过程中,需注意设定正确的波特率参数(如本案例中的256000bps),并通过特定命令序列触发目标设备响应机制——例如连续发送多字节FF指令以达成初步握手目的。 #### 关键特性概述 值得注意的是,在实际运行状态下,该型号ESC具备良好的兼容性和扩展能力,不仅能够良好适配各类主流无人机平台架构下的飞行控制系统,而且允许用户自定义调整PWM信号周期内的占空比比例从而精确控制电机运转状态(-2000至+2000区间范围内)。 #### 获取更多帮助 除了上述提及的内容之外,还可以关注DroneCAN社区动态及其关联的技术文档库,那里或许能找到关于如何构建更复杂应用场景方面的指导性意见或是最佳实践分享[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值