例程舵机

2019-08-26 18:39

#include \

/**************************************** 说明:

CPU_MK60DZ10 & CPU_MK60D10 *将PTC1引脚连接至舵机的信号线 CPU_MK60F12 & CPU_MK60F15 *将PTD0引脚连接至舵机的信号线 观察舵机的运动状态

*舵机控制信号脉宽范围0.5ms~2.5ms 即(-90°~+90°)

****************************************/

//函数声明

void pwm_init(void); void delay(uint16);

uint32 angle_to_period(int8); //变量定义

FTM_InitTypeDef ftm_init_struct;

void main (void) {

//初始化PWM pwm_init();

delay(1000);

//初始化延时后改变角度为45度

#if defined(CPU_MK60DZ10) || defined(CPU_MK60D10)

LPLD_FTM_PWM_ChangeDuty(FTM0, FTM_Ch0, angle_to_period(45)); #elif defined(CPU_MK60F12) || defined(CPU_MK60F15)

LPLD_FTM_PWM_ChangeDuty(FTM2, FTM_Ch0, angle_to_period(45)); #endif while(1) { } } /*

* 初始化FTM的PWM输出功能 * */

void pwm_init(void) {

#if defined(CPU_MK60DZ10) || defined(CPU_MK60D10) ftm_init_struct.FTM_Ftmx = FTM0; //使能FTM0通道

ftm_init_struct.FTM_Mode = FTM_MODE_PWM; //使能PWM模式 ftm_init_struct.FTM_PwmFreq = 50; //PWM频率50Hz

LPLD_FTM_Init(ftm_init_struct);

LPLD_FTM_PWM_Enable(FTM0, //使用FTM0 FTM_Ch0, //使能Ch0通道

angle_to_period(0), //初始化角度0度 PTC1, //使用Ch0通道的PTC1引脚 ALIGN_LEFT //脉宽左对齐 );

#elif defined(CPU_MK60F12) || defined(CPU_MK60F15) ftm_init_struct.FTM_Ftmx = FTM2; //使能FTM0通道

ftm_init_struct.FTM_Mode = FTM_MODE_PWM; //使能PWM模式 ftm_init_struct.FTM_PwmFreq = 50; //PWM频率50Hz

LPLD_FTM_Init(ftm_init_struct);

LPLD_FTM_PWM_Enable(FTM2, //使用FTM0 FTM_Ch0, //使能Ch0通道

angle_to_period(0), //初始化角度0度。将舵机的角度值转化为函数需要的占空比值

PTD0, //使用Ch0通道的PTD0引脚 ALIGN_LEFT //脉宽左对齐 ); #endif } /*

* 将舵机的角度值转化为PWM的频率 * deg--角度值(-90°~+90°) * |__-90~+90 * */

uint32 angle_to_period(int8 deg) {

uint32 pulse_width = 500+2000*(90+deg)/180; return (uint32)(10000*pulse_width/20000); }

void delay(uint16 n)

{

uint16 i; while(n--) {

for(i=0; i<5000; i++) {

asm(\ } } }


例程舵机.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《漫谈斯大林格勒之战》教案设计[1]

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: