stm32mini想實現藍牙與按鍵部分同時控制舵機的轉動
現在單獨使用藍牙控制舵機或者單獨使用按鍵模塊的轉動都是正常運轉的,但當把按鍵模塊的代碼與藍牙模塊的代碼相結合時,舵機亂轉,或者壓根就不轉。不知是哪里出現了問題呢?請各位大神幫忙解決一下這個疑惑,非常感激。
圖1 藍牙單獨控制舵機的主程序部分#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "timer.h"
extern u8 res;
int main(void)
{
int len;
int t;
int i;
delay_init(); //延時函數初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
uart_init(115200); //串口初始化為115200
My_USART2_Init();
TIM1_PWM_Init(199,7199); //不分頻。T為20ms,這樣的配置就是為了讓輸出的PWM信號達到舵機要求的20ms周期。
while(1)
{
if(res=='1'){TIM_SetCompare2(TIM3,175);delay_ms(1000);}
if(res=='2'){TIM_SetCompare2(TIM3,180);delay_ms(1000);}
if(res=='3'){TIM_SetCompare2(TIM3,185);delay_ms(1000);}
if(res=='4'){TIM_SetCompare2(TIM3,190);delay_ms(1000);}
if(res=='5'){TIM_SetCompare2(TIM3,195);delay_ms(1000);}
if(res=='A'){TIM_SetCompare3(TIM3,175);delay_ms(1000);}
if(res=='B'){TIM_SetCompare3(TIM3,180);delay_ms(1000);}
if(res=='C'){TIM_SetCompare3(TIM3,185);delay_ms(1000);}
if(res=='D'){TIM_SetCompare3(TIM3,190);delay_ms(1000);}
if(res=='E'){TIM_SetCompare3(TIM3,195);delay_ms(1000);}
}
}
圖2 單片機的按鍵模塊單獨控制兩個舵機轉動的主程序部分
#include "delay.h"
#include "sys.h"
#include "pwm.h"
#include "usart.h"
#include "stm32f10x.h"
#include "key.h"
#define key1 PCin(5) //KEY1按鍵
#define key2 PAin(15) //KEY0按鍵
#define key3 PAin(0) //wk_up按鍵
u16 cout;
u16 couts;
int main(void)
{
cout=50;
couts=50;
KEY_Init();
delay_init();
TIM3_PWM_Init(1999,719);
while(1)
{
if(key3==0&&key1==0) //key1??,????????
{
if(key1==0)
{
delay_ms(5);
cout+=5; } }
else if(key3==1&&key1==0) //key1?key3????,??????
{
delay_ms(5);
cout-=5; }
if(key3==0&&key2==0) //key2??,????????
{
delay_ms(5);
couts+=5;}
else if(key3==1&&key2==0) //key2?key3????,??????
{
delay_ms(5);
couts-=5;
}
TIM_SetCompare2(TIM3,cout); //PWM??
TIM_SetCompare3(TIM3,couts);
delay_ms(50);
}
}
圖3、4 按鍵部分與藍牙部分相結合(無法實現)
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "timer.h"
#define key1 PCin(5)
#define key2 PAin(15)
#define key3 PAin(0)
extern u8 res;
int main(void)
{
u16 cout=50;
u16 couts=50;
KEY_Init();
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart_init(115200);
My_USART2_Init();
TIM1_PWM_Init(199,7199);
while(1)
{
if(key3==0&&key1==0) //key1??,????????
{ if(key1==0)
{ delay_ms(5);
cout+=5; } }
else if(key3==1&&key1==0) //key1?key3????,??????
{ delay_ms(5);
cout-=5; }
if(key3==0&&key2==0) //key2??,????????
{ delay_ms(5);
couts+=5;}
else if(key3==1&&key2==0) //key2?key3????,??????
{
delay_ms(5);
couts-=5; }
TIM_SetCompare2(TIM3,cout); //PWM??
TIM_SetCompare3(TIM3,couts);
delay_ms(50);
}
}
|