標(biāo)題: STM32通過按鍵控制舵機(jī)正反轉(zhuǎn),正反調(diào)速PWM程序 [打印本頁(yè)]

作者: wuyize    時(shí)間: 2022-1-27 10:35
標(biāo)題: STM32通過按鍵控制舵機(jī)正反轉(zhuǎn),正反調(diào)速PWM程序
第一次加入51黑,多有不足,請(qǐng)站內(nèi)大佬多多指教,我也是剛?cè)腴T不久小白
****************************************************************
單片機(jī):STM32f103c8t6+獨(dú)立按鍵模塊+SG90  360度舵機(jī)(180度的也可以,需要把峰值調(diào)小)
主要編程工具軟件:KEIL5,CUBEMX

主要功能:按鍵1反向加速(長(zhǎng)按一直加速直到設(shè)置峰值(峰值可修改,速度可修改)),按鍵2正向加速(同KEY1),按鍵3舵機(jī)停止
接線:KEY1接PA0
         KEY2接PA1
         KEY3接PA2

         PA8接TIM1(PWM輸出口)
注:如果接口需要調(diào)整,均可自行修改
附上單片機(jī)cube接口圖:

部分主要代碼:

//按鍵初始化函數(shù)
void KEY_Init(void)
{

    MX_GPIO_Init();
}

//按鍵處理函數(shù)
//返回按鍵值
//mode:0,不支持連續(xù)按;1,支持連續(xù)按;
//0,沒有任何按鍵按下
//1,WKUP按下 WK_UP
//注意此函數(shù)有響應(yīng)優(yōu)先級(jí),KEY0>KEY1>KEY2>WK_UP!!
u8 KEY_Scan(u8 mode)
{
    static u8 key_up=1;     //按鍵松開標(biāo)志
    if(mode==1)key_up=1;    //支持連按
    if(key_up&&(KEY1==0||KEY2==0||KEY3==0))
    {
        delay_ms(10);
        key_up=0;
        if(KEY1==0)       return KEY1_PRES;
        else if(KEY2==0)  return KEY2_PRES;
        else if(KEY3==0)  return KEY3_PRES;
           
    }else if(KEY1==1&&KEY2==1&&KEY3==1)key_up=1;
    return 0;   //無按鍵按下
}
感謝支持!


Keil代碼下載:
程序.7z (5.62 MB, 下載次數(shù): 104)






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1