标题:
我的stm32串口控制舵机程序
[打印本页]
作者:
wangyuyu
时间:
2018-9-16 15:37
标题:
我的stm32串口控制舵机程序
上位机通过串口给单片机发送角度,使得它控制舵机转对应的角度
若角度发送不正确,返回error提示信息
此程序可以用来检测舵机是否工作正常
单片机源程序如下:
#include "stm32f10x.h"
#include "pwm.h"
#include "delay.h"
#include "follower.h"
unsigned char Dat_R[50];
char error[] = "error";
char i2 = 0;//Dat_R[]的数组下标
u8 Transmit_flag_2=0;//串口2接受标志位
int main(void)
{
u16 pwm_value = 0;//45~215对应0~180度
u8 i = 0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
my_FOLLOWER_Init(115200);
my_PWM_Init(1800,799);//20ms
delay_init();
TIM_SetCompare1(TIM3, 135);//初始化舵机角度为90度
while(1)
{
USART_GetFlagStatus(USART1,USART_FLAG_TC);
USART_GetFlagStatus(USART2,USART_FLAG_TC);
if(Transmit_flag_2)
{
i = 0;
if(i2 <= 5)
{
while(Dat_R[i] != '\r')
{
pwm_value = pwm_value*10 + (Dat_R[i]-'0');
i++;
}
if(pwm_value<=180)
{
TIM_SetCompare1(TIM3, pwm_value+45);
USART_SendData(USART1, 'O');
while(USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET);
USART_SendData(USART1, 'K');
while(USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET);
}
else
{
for(i = 0; i < 5; i++)
{
USART_SendData(USART1, error[i]);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET);
}
}
}
else
{
for(i = 0; i < 5; i++)
{
USART_SendData(USART1, error[i]);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET);
}
}
for(i = 0; i < i2; i++)
{
Dat_R[i] = 0;
}
i = 0;
pwm_value = 0;
i2 = 0;
Transmit_flag_2 = 0;
}
}
}
复制代码
所有资料51hei提供下载:
串口控制舵机.zip
(300.91 KB, 下载次数: 128)
2018-9-16 15:37 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
bbcben
时间:
2019-7-5 19:37
写的不行
作者:
aYUAB
时间:
2019-8-6 20:55
无法用串口对角度进行改变啊
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1