标题:
stm32控制舵机程序
[打印本页]
作者:
eFSADawdaw
时间:
2021-7-15 13:02
标题:
stm32控制舵机程序
单片机控制舵机程序,用的是原字的定时器中断实验改的
单片机源程序如下:
#include "pwm.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "timer.h"
u8 JD=0;
u32 a0,a1;
u8 flag1=0,flag2=0;//定时器计数20ms到了的标志
int main(void)
{
u16 t1=0,t2=0;
u8 YS[6]={0,60,120,180,120,60};
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(9600); //串口初始化为115200
PWM_Init(); //LED端口初始化
TIM3_Int_Init(9,71);//10us
// t1=(t1/180)*2000;
while(1)
{/*
PWM0=1;
delay_us(500+t1);//延时
PWM0=0;
delay_ms(20);//延时
*/
// if(flag1==1)
// {
// flag1=0;
// t2++;
// if(t2==50)
// JD=60;
// if(t2==100)
// JD=120;
// if(t2==150)
// JD=180;
// if(t2==200)
// JD=120;
// if(t2==250)
// JD=60;
// if(t2==300)
// {
// JD=0;
// t2=0;
// }
// }
if(flag2==1)
{
flag2=0;
JD=YS[t2];
t2++;
if(t2>=6)
{
t2=0;
}
}
}
}
//定时器3中断服务程序
void TIM3_IRQHandler(void) //TIM3中断
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查TIM3更新中断发生与否
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx更新中断标志
a0++;a1++;
/*************PWM0**************/
if(a0==(50+JD))
{
PWM0=0;
}
if(a0>=2000)
{
a0=0;
PWM0=1;
flag1=1;
}
if(a1>=100000)
{
a1=0;
flag2=1;
}
}
}
复制代码
所有代码51hei提供下载:
舵机程序.7z
(184.97 KB, 下载次数: 18)
2021-7-16 03:35 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1