电调解锁方法
2ms高电平的pwm波,400hz,持续5s以上
1ms高电平的pwm波,持续2s
即可解锁,之后输入1-2ms范围的高电平的pwm波即可控制电机的转速

这里是主函数

#include "stdio.h"
#include <stdint.h>
#include <stdbool.h>
#include "hw_memmap.h"
#include "hw_types.h"
#include "hw_gpio.h"
#include "debug.h"
#include "fpu.h"
#include "gpio.h"
#include "pin_map.h"
#include "rom.h"
#include "sysctl.h"
#include "uart.h"
#include "uartstdio.h"
#include "SystickTime.h"
#include "wpwm.h"#ifdef DEBUG
void
__error__(char *pcFilename, uint32_t ui32Line)
{}
#endif/*
*********************************************************************************************************
*   函 数 名: PrintfLogo
*   功能说明: 打印例程名称和例程发布日期, 接上串口线后,打开PC机的串口终端软件可以观察结果
*   形    参: 无
*   返 回 值: 无
*********************************************************************************************************
*/
void PrintfLogo(void)
{printf("*************************************************************\n\r");printf("* 例程名称   : %s\r\n", "基于滴答定时器的精准延时"); /* 打印例程名称 */printf("* 例程版本   : %s\r\n", "V1.0");          /* 打印例程版本 */printf("* 发布日期   : %s\r\n", "20200310");  /* 打印例程日期 */printf("* 标准库版本  :TM4C123GH6PM\r\n");printf("* \r\n");  /* 打印一行空格 */printf("* QQ    : 3138372165 \r\n");printf("* Email : 3138372165@qq.com \r\n");printf("* Copyright www.nameless.tech 无名创新\r\n");printf("*************************************************************\n\r");
}void ConfigureUART(void)
{ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);// Enable the GPIO Peripheral used by the UART.ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);// Enable UART0ROM_GPIOPinConfigure(GPIO_PA0_U0RX);// Configure GPIO Pins for UART mode.ROM_GPIOPinConfigure(GPIO_PA1_U0TX);ROM_GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);// Use the internal 16MHz oscillator as the UART clock source.// Initialize the UART for console I/O.UARTStdioConfig(0, 115200, 16000000);UARTClockSourceSet(UART0_BASE, UART_CLOCK_PIOSC);
}int fputc(int ch, FILE *f){UARTCharPut(UART0_BASE,ch); return (ch);}
int fgetc(FILE *f) {int ch=UARTCharGet(UART0_BASE);    return (ch);}
int main(void)
{  ROM_FPULazyStackingEnable();//使能FPU浮点运算ROM_SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ |SYSCTL_OSC_MAIN);//配置系统时钟   80MSysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);//解锁PC口为普通IOHWREG(GPIO_PORTC_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY; HWREG(GPIO_PORTC_BASE + GPIO_O_CR) = 0x000000FF;GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE, GPIO_PIN_2);GPIOPinWrite(GPIO_PORTC_BASE,GPIO_PIN_2,0);initTime();//初始化滴答定时器ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);ROM_GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_2);//红色ROM_GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_3);//绿色ROM_GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1);//蓝色ConfigureUART();//初始化串口0PrintfLogo();//串口打印版本信息Init_PWM();//初始化pwmPWM_Output(2000,2000,2000,2000);delay_ms(5000);PWM_Output(1000,1000,1000,1000);delay_ms(2000);PWM_Output(1200,1200,1200,1200);while(1){printf("%d\r\n",PWMGenPeriodGet(PWM0_BASE, PWM_GEN_0));printf("%d\r\n",PWMGenPeriodGet(PWM0_BASE, PWM_GEN_1));printf("%d\r\n",PWMGenPeriodGet(PWM0_BASE, PWM_GEN_2));printf("%d\r\n",PWMGenPeriodGet(PWM0_BASE, PWM_GEN_3));GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, 0);//置低位点亮delay_ms(100);    GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, GPIO_PIN_2);//置高位熄灭delay_ms(100);GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_3, 0);//置低位点亮delay_ms(100);   GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_3, GPIO_PIN_3);//置高位熄灭delay_ms(100);GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1, 0);//置低位点亮delay_ms(100);  GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1, GPIO_PIN_1);//置高位熄灭delay_ms(100);}
}

pwm模块的函数(这一段程序来自于无名飞控

#include "wpwm.h"
//#define PWM_PERIOD_MAX  3125//2.5ms————400hz
#define PWM_PERIOD_MAX    3125//2.5ms————400hz#define PWM_PERIOD_MAX_20MS  (5000*8) static uint16_t period;
/***********************************************************
@函数名:Init_PWM
@入口参数:无
@出口参数:无
@功能描述:PWM初始化
@作者:无名小哥
@日期:2019年01月27日
*************************************************************/
void Init_PWM(void)
{SysCtlPWMClockSet(SYSCTL_PWMDIV_64); // Set divider to 80M/8=10M=0.1usSysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0); // Enable PWM peripheralSysCtlDelay(2); // Insert a few cycles after enabling the peripheral to allow the clock to be fully activatedSysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); // Enable GPIOB peripheralSysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); // Enable GPIOC peripheralSysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE); // Enable GPIOE peripheralSysCtlDelay(2); // Insert a few cycles after enabling the peripheral to allow the clock to be fully activated// Use alternate functionGPIOPinConfigure(GPIO_PB6_M0PWM0);GPIOPinConfigure(GPIO_PB7_M0PWM1);GPIOPinConfigure(GPIO_PB4_M0PWM2);GPIOPinConfigure(GPIO_PB5_M0PWM3);GPIOPinConfigure(GPIO_PE4_M0PWM4);GPIOPinConfigure(GPIO_PE5_M0PWM5);GPIOPinConfigure(GPIO_PC4_M0PWM6);GPIOPinConfigure(GPIO_PC5_M0PWM7);// Use pin with PWM peripheralGPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_6);//M0PWM0GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_7);//M0PWM1GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_4);//M0PWM2GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_5);//M0PWM3GPIOPinTypePWM(GPIO_PORTE_BASE, GPIO_PIN_4);//M0PWM4GPIOPinTypePWM(GPIO_PORTE_BASE, GPIO_PIN_5);//M0PWM5GPIOPinTypePWM(GPIO_PORTC_BASE, GPIO_PIN_4);//M0PWM6GPIOPinTypePWM(GPIO_PORTC_BASE, GPIO_PIN_5);//M0PWM7// Configure the PWM generator for count down mode with immediate updates to the parametersPWMGenConfigure(PWM0_BASE, PWM_GEN_0, PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);PWMGenConfigure(PWM0_BASE, PWM_GEN_1, PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);PWMGenConfigure(PWM0_BASE, PWM_GEN_2, PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);PWMGenConfigure(PWM0_BASE, PWM_GEN_3, PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);// The period is set to 2.5ms (400 Hz)period = PWM_PERIOD_MAX; PWMGenPeriodSet(PWM0_BASE, PWM_GEN_0, period); // Set the periodPWMGenPeriodSet(PWM0_BASE, PWM_GEN_1, period);PWMGenPeriodSet(PWM0_BASE, PWM_GEN_2, period); // Set the periodPWMGenPeriodSet(PWM0_BASE, PWM_GEN_3, period);// Start the timers in generator 0 and 1PWMGenEnable(PWM0_BASE, PWM_GEN_0);PWMGenEnable(PWM0_BASE, PWM_GEN_1);PWMGenEnable(PWM0_BASE, PWM_GEN_2);PWMGenEnable(PWM0_BASE, PWM_GEN_3);// Enable the outputsPWMOutputState(PWM0_BASE, PWM_OUT_0_BIT | PWM_OUT_1_BIT | PWM_OUT_2_BIT | PWM_OUT_3_BIT| PWM_OUT_4_BIT | PWM_OUT_5_BIT | PWM_OUT_6_BIT | PWM_OUT_7_BIT, true);PWM_Output(1000,1000,1000,1000);
}/***********************************************************
@函数名:PWM_Output
@入口参数:uint16_t width1,uint16_t width2,uint16_t width3,
uint16_t width4,uint16_t width5,uint16_t width6,
uint16_t width7,uint16_t width8
@出口参数:无
@功能描述:PWM输出
@作者:无名小哥
@日期:2019年01月27日
*************************************************************/
void PWM_Output(uint16_t width1,uint16_t width2,uint16_t width3,uint16_t width4)
{PWMPulseWidthSet(PWM0_BASE,PWM_OUT_6,1.25*width1);//PC4 PWMPulseWidthSet(PWM0_BASE,PWM_OUT_7,1.25*width2);//PC5  PWMPulseWidthSet(PWM0_BASE,PWM_OUT_1,1.25*width3);//PB7PWMPulseWidthSet(PWM0_BASE,PWM_OUT_0,1.25*width4);//PB6EPWM_Output(1.25*width1,1.25*width2,1.25*width3,1.25*width4);//外接PWM口与排针PWM口输出对应//PWM1、PWM5同输出//PWM2、PWM6同输出//PWM3、PWM7同输出//PWM4、PWM8同输出
}      void EPWM_Output(uint16_t width5,uint16_t width6,uint16_t width7,uint16_t width8)
{PWMPulseWidthSet(PWM0_BASE,PWM_OUT_5,width5);//PE5PWMPulseWidthSet(PWM0_BASE,PWM_OUT_4,width6);//PE4PWMPulseWidthSet(PWM0_BASE,PWM_OUT_2,width7);//PB4PWMPulseWidthSet(PWM0_BASE,PWM_OUT_3,width8);//PB5
}

强烈建议在实验室里面做,实验室有仪器,即使出现问题也可以更快地找出来。

TIVA Launchpad编程解锁好盈天行者(20A)电调相关推荐

  1. qq飞控 银燕电机 天行者20a电调 天地飞7遥控器 所有飞控接收机大同小异

    1)四旋翼安装 四旋翼安装注意事项 注意飞控飞行模式是x飞行,还是+飞行: 不同的飞行模式飞控安装方式不同: 注意电机转向: 最后安装浆叶: 注意浆叶转向: 2)遥控器与飞控设置 遥控器与飞控设置注意 ...

  2. 用stm32模拟遥控器初始化电调(电调解锁)(电调行程校准)(附百度云例程)

    用stm32模拟遥控器初始化电调(电调行程校准)(电调解锁) 亲测可用的例程 链接:https://pan.baidu.com/s/1MwcWBU15Z7YJ3Dz0mA15ew 提取码:1234 硬 ...

  3. 无人机动力测试-无人机电机、螺旋桨、电调测试

    无人机动力系统 测试实验实训教学课程 实验课程4:动力系统基本参数测量与验证 课程内容: 1. 动力系统性能参数及性能特性曲线 2. 动力系统性能参数及性能特性曲线测试实验 实验器材: WF-EDU- ...

  4. (新西达30A电调+1400KV电机)无人机(航模)电调解索和驱动方法

    无人机(航模)电调解索和驱动方法(新西达30A电调+1400KV电机) 经过一天的时间才完成电调的解锁和驱动,在网上一直看到别人说PWM频率需要50HZ,其实不然,频率并不固定大家大可在50HZ~50 ...

  5. STM32通过PWM控制ESC30C电调

    最近在搞一个水下推进器,这东西的控制其实跟四旋翼的螺旋桨控制差不多.但我也是第一次用STM32板子来控制电调驱动桨叶旋转,因此踩了很多坑.网上找了很多资料,但是很多都写的不是很清楚,这边稍微记录一下怎 ...

  6. 基于FPGA:如何通过电调控制无刷电机(包含FPGA及Arduino程序)

    日常·唠嗑: 2020已经过去,回首这一年,真的经历了很多,申报项目.集创赛.电赛.机械创新赛.挑战杯.写博客.遇见她--一路走来磕磕碰碰,也成长了许多.在2021伊始,写下这篇博客博客,希望能不忘初 ...

  7. 无名创新TIVA LaunchPad V2版本飞控代码阶段性更新日志

    TIVA LaunchPad V2版本飞控代码阶段性更新日志: 20220430主要更新如下 1.增加了飞控串口直接解析2D激光雷达传感器数据.OLED激光雷达点云数据显示,方便后续处理避障.绕障飞行 ...

  8. 瑞萨单片机解调好盈电调控制无刷电机

    最近刚接触四旋翼,主控用的是瑞萨的RX23T系列,表示以前从来没有接触过瑞萨的单片机,所以拿到手一脸的懵逼.在我好不容易搞懂了开发环境的使用,把在某宝上寻得的资料烧写到单片机上,期待电机嗡嗡转起来,可 ...

  9. 竞赛无人机搭积木式编程——以2022年TI电赛送货无人机一等奖复现为例学习(7月B题)

    在学习本教程前,请确保已经学习了前4讲中无人机相关坐标系知识.基础飞行控制函数.激光雷达SLAM定位条件下的室内定点控制.自动飞行支持函数.导航控制函数等入门阶段的先导教程. 同时用户在做二次开发自定 ...

最新文章

  1. css3圆形轨迹动画
  2. TableView 隐藏多余的分割线
  3. excel随机数的获取
  4. 数据结构之二叉树的先序、中序、后续的求法
  5. 报错:Navicat for MySQL 连接MySQL 8.0 出现1130错误
  6. html5 js选择器,使用HTML5的JS选择器操作页面中的元素
  7. java 按钮设置图片_Java中如何设置带图片按钮的大小
  8. Django Model设计详解
  9. OCR训练常见问题(1)
  10. HNU 实验七 字符串 E-mail地址
  11. 软件测试入坑建议:新手零基础怎么入门软件测试?你还缺这几份资料!
  12. 基础练习: 使用openssl命令创建RSA密钥
  13. python入门指南小说-Python 入门指南
  14. Python学习之路-22 (面向对象特殊成员)
  15. C++标准程序库读书笔记-第二章新的语言特性
  16. 单例模式中为什么用枚举更好
  17. 通过Debugx5在电脑端调试微信页面
  18. 2013/07/20 SQLLDR 关于OPTIONALLY ENCLOSED BY
  19. SpringBoot重启后,第一次请求接口请求慢的解决方案
  20. SpringBoot整合Redis实现优惠券秒杀服务(笔记+优化思路版)

热门文章

  1. 用onedrive备份电脑中的任意文件夹
  2. 2018年最受关注的十大科技、媒体、通讯新动向 | 全球TMT
  3. php redis delete,ThinkPHP5 Redis::delete() is deprecated | 剑花烟雨江南
  4. 【说透中台】01 | 来龙去脉:中台为什么这么火?
  5. 2022全新UI强大的头像制作神器+支持各种CPS等功能
  6. php中=%3e -%3e的区别,华为Nova3e和Nova2s哪个好? 华为Nova2s与3e区别对比评测
  7. Android 自定义控件-高仿猎豹清理大师自定义内存开口圆环控件
  8. 200条装修小常识(结婚,不结婚的都要看一下,很有用的)
  9. JAVA四大排序介绍
  10. 日本早稻田大学的研究人员,使用AI给黑白照片着色