標(biāo)題:
我的stm32串口控制舵機(jī)程序
[打印本頁]
作者:
wangyuyu
時(shí)間:
2018-9-16 15:37
標(biāo)題:
我的stm32串口控制舵機(jī)程序
上位機(jī)通過串口給單片機(jī)發(fā)送角度,使得它控制舵機(jī)轉(zhuǎn)對(duì)應(yīng)的角度
若角度發(fā)送不正確,返回error提示信息
此程序可以用來檢測(cè)舵機(jī)是否工作正常
單片機(jī)源程序如下:
#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[]的數(shù)組下標(biāo)
u8 Transmit_flag_2=0;//串口2接受標(biāo)志位
int main(void)
{
u16 pwm_value = 0;//45~215對(duì)應(yīng)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);//初始化舵機(jī)角度為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;
}
}
}
復(fù)制代碼
所有資料51hei提供下載:
串口控制舵機(jī).zip
(300.91 KB, 下載次數(shù): 128)
2018-9-16 15:37 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
bbcben
時(shí)間:
2019-7-5 19:37
寫的不行
作者:
aYUAB
時(shí)間:
2019-8-6 20:55
無法用串口對(duì)角度進(jìn)行改變啊
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1