77范文网 - 专业文章范例文档资料分享平台

STM32f103PWM(用于电调)程序

来源:网络收集 时间:2020-05-24 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

#include \#include \

//定时器3中断服务程序 void TIM3_IRQHandler(void) { if(TIM3->SR&0X0001)//溢出中断 { // LED1=!LED1; }

TIM3->SR&=~(1<<0);//清除中断标志位 }

//通用定时器中断初始化

//这里时钟选择为APB1的2倍,而APB1为36M //arr:自动重装值。 //psc:时钟预分频数 //这里使用的是定时器3!

void TIM3_Int_Init(u16 arr,u16 psc) {

RCC->APB1ENR|=1<<1; //TIM3时钟使能 TIM3->ARR=arr; //设定计数器自动重装值 TIM3->PSC=psc; //预分频器设置 TIM3->DIER|=1<<0; //允许更新中断 TIM3->CR1|=0x01; //使能定时器3

MY_NVIC_Init(1,3,TIM3_IRQn,2);//抢占1,子优先级3,组2 }

void TIM2_PWM_Init(u16 arr,u16 psc) { //此部分需手动修改IO口设置 RCC->APB1ENR|=1<<0; //TIM2时钟使能 RCC->APB2ENR|=1<<2; //使能PORTA时钟 PA0,PA1,PA2,PA3 GPIOA->CRL&=0XFFFFFFF0; //PA0清除之前的设置 GPIOA->CRL|=0X0000000B; //复用功能输出 1011 每四位控制一个IO低八位用CRL高八位CRH //后两位00表示输入状态;此时前两位00模拟输入;01浮空输入;10上拉/下拉输入;11保留 //后两位01/10/11分别表示10/20/50MHz的输出速度;此时前两位00通用推完输出;01通用开漏输出;10复用推挽;11复用开漏 GPIOA->CRL&=0XFFFFFF0F; //PA1清除之前的设置 GPIOA->CRL|=0X000000B0; //复用功能输出 GPIOA->CRL&=0XFFFFF0FF; //PA2清除之前的设置 GPIOA->CRL|=0X00000B00; //复用功能输出 GPIOA->CRL&=0XFFFF0FFF; //PA3清除之前的设置 GPIOA->CRL|=0X0000B000; //复用功能输出 TIM2->ARR=arr; //设定计数器自动重装

值 TIM2->PSC=psc; // // 效 // // // // 效

//预分频器不分频

TIM2->CCMR1|=6<<4; TIM2->CCMR1|=6<<12; TIM2->CCMR2|=6<<4; TIM2->CCMR2|=6<<12;

TIM2->CCMR1|=1<<3; TIM2->CCMR1|=1<<11; TIM2->CCMR2|=1<<3; TIM2->CCMR2|=1<<11;

TIM2->CCER|=1<<0; TIM2->CCER|=1<<1; TIM2->CCER|=1<<0; TIM2->CCER|=1<<4; TIM2->CCER|=1<<8; TIM2->CCER|=1<<12;

TIM2->CCER|=3<<0; TIM2->CCER|=3<<4; TIM2->CCER|=3<<8; TIM2->CCER|=3<<12;

//CH1 PWM1模式 //CH2 PWM1模式 //CH3 PWM1模式 //CH4 PWM1模式

//CH1 预装载使能 //CH2 预装载使能 //CH3 预装载使能 //CH4 预装载使能

//OC1 输出使能 //OC1 低电平有效 //OC1 输出使能,高电平有效 //OC2 输出使能,高电平有效 //OC3 输出使能,高电平有效 //OC4 输出使能,高电平有

//OC1 输出使能,低电平有效 //OC2 输出使能,低电平有效 //OC3 输出使能,低电平有效 //OC4 输出使能,低电平有

TIM2->CR1|=1<<7; //ARPE使能 自动重载预装载

TIM2->CR1|=1<<0; //使能定时器2 }

#ifndef __TIMER_H #define __TIMER_H #include \

/******************************************************************************** 本程序中共预设了八个通道的PWM输出,使用高级定时器1和通用定时器2

********************************************************************************/ //#define LED0_PWM_VAL TIM1->CCR1 #define CH11_PWM_VAL TIM1->CCR1 #define CH12_PWM_VAL TIM1->CCR2 #define CH13_PWM_VAL TIM1->CCR3 #define CH14_PWM_VAL TIM1->CCR4

#define CH21_PWM_VAL TIM2->CCR1 #define CH22_PWM_VAL TIM2->CCR2 #define CH23_PWM_VAL TIM2->CCR3 #define CH24_PWM_VAL TIM2->CCR4

void TIM3_Int_Init(u16 arr,u16 psc); void TIM1_PWM_Init(u16 arr,u16 psc); void TIM2_PWM_Init(u16 arr,u16 psc); #endif

下面用于电调初始化设置

int main(void) while(1)

//状态判断

{

if(NRF24L01_RxPacket(tmp_buf)==0) //若收到数据信息. { TIM2_PWM_Init(19999,71); //定时器2初始化 启动频率1000 000Hz;PWM频率=1000 000/(19999+1)= 50Hz if(tmp_buf[8]==0x00&tmp_buf[9]==0x00) //判断是否为一般遥控模式 { CH21_PWM_VAL = 1000; //设置最小值 CH22_PWM_VAL = 1000; //设置最小值 CH23_PWM_VAL = 1000; //设置最小值 CH24_PWM_VAL = 1000; //设置最小值 break;

//跳出死循环

}

if(tmp_buf[8]==0xf0&tmp_buf[9]==0x00)

//判断是否为设置电调最大值 { CH21_PWM_VAL = 2000; //设置最大值 CH22_PWM_VAL = 2000; //设置最大值 CH23_PWM_VAL = 2000; //设置最大值 CH24_PWM_VAL = 2000; //设置最大值

}

if(tmp_buf[8]==0xf0&tmp_buf[9]==0xf0) //判断是否为设置电调最小值 { CH21_PWM_VAL = 1000; //设置最小值 CH22_PWM_VAL = 1000; //设置最小值 CH23_PWM_VAL = 1000; //设置最小值 CH24_PWM_VAL = 1000; //设置最小值

}

//71+1分频;计数

} }

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库STM32f103PWM(用于电调)程序在线全文阅读。

STM32f103PWM(用于电调)程序.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/1070858.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: