找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7317|回復: 2
打印 上一主題 下一主題
收起左側

我的stm32串口控制舵機程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:343322 發(fā)表于 2018-9-16 15:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
上位機通過串口給單片機發(fā)送角度,使得它控制舵機轉對應的角度
若角度發(fā)送不正確,返回error提示信息
此程序可以用來檢測舵機是否工作正常

單片機源程序如下:
  1. #include "stm32f10x.h"
  2. #include "pwm.h"
  3. #include "delay.h"
  4. #include "follower.h"

  5. unsigned char Dat_R[50];
  6. char error[] = "error";
  7. char i2 = 0;//Dat_R[]的數組下標
  8. u8 Transmit_flag_2=0;//串口2接受標志位

  9. int main(void)
  10. {
  11.         u16 pwm_value = 0;//45~215對應0~180度
  12.         u8 i = 0;
  13.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  14.         my_FOLLOWER_Init(115200);
  15.         my_PWM_Init(1800,799);//20ms
  16.         delay_init();
  17.   TIM_SetCompare1(TIM3, 135);//初始化舵機角度為90度
  18.         while(1)
  19.         {
  20.                 USART_GetFlagStatus(USART1,USART_FLAG_TC);
  21.                 USART_GetFlagStatus(USART2,USART_FLAG_TC);
  22.                
  23.                 if(Transmit_flag_2)
  24.                 {
  25.                         i = 0;
  26.                        
  27.                         if(i2 <= 5)
  28.                         {
  29.                                 while(Dat_R[i] != '\r')
  30.                                 {
  31.                                         pwm_value = pwm_value*10 + (Dat_R[i]-'0');
  32.                                         i++;
  33.                                 }

  34.                                 if(pwm_value<=180)
  35.                                 {
  36.                                         TIM_SetCompare1(TIM3, pwm_value+45);
  37.                                         USART_SendData(USART1, 'O');
  38.                                         while(USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET);
  39.                                         USART_SendData(USART1, 'K');
  40.                                         while(USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET);
  41.                                 }
  42.                                 else
  43.                                 {
  44.                                         for(i = 0; i < 5; i++)
  45.                                         {
  46.                                                 USART_SendData(USART1, error[i]);
  47.                                                 while(USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET);
  48.                                         }
  49.                                 }
  50.                         }
  51.                         else
  52.                         {
  53.                                 for(i = 0; i < 5; i++)
  54.                                 {
  55.                                         USART_SendData(USART1, error[i]);
  56.                                         while(USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET);
  57.                                 }
  58.                         }
  59.                        
  60.                        
  61.                         for(i = 0; i < i2; i++)
  62.                         {
  63.                                 Dat_R[i] = 0;
  64.                         }
  65.                         i = 0;
  66.                         pwm_value = 0;
  67.                         i2 = 0;
  68.                         Transmit_flag_2 = 0;
  69.                 }
  70.                
  71.         }
  72. }
復制代碼

所有資料51hei提供下載:
串口控制舵機.zip (300.91 KB, 下載次數: 128)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:413115 發(fā)表于 2019-7-5 19:37 | 只看該作者
寫的不行
回復

使用道具 舉報

板凳
ID:595232 發(fā)表于 2019-8-6 20:55 | 只看該作者
無法用串口對角度進行改變啊
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表