|
最近學(xué)習(xí)了stm32,就想用它來控制舵機,然后寫下這篇文章分享給大家,如果有理解不到位的地方歡迎大家指正。(我使用的是stm32f103rc型號的開發(fā)板,其實也可以用在stm32f103c8上面)
按鍵控制舵機主要就是通過按鍵中斷來進(jìn)行pwm舵機函數(shù)從而進(jìn)行控制舵機
單片機源程序如下:
- #include "key.h"
- #include "delay.h"
- void KEY_Init(void)
- {
-
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);//使能PORTA,PORTC時鐘
- GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//關(guān)閉jtag,使能SWD,可以用SWD模式調(diào)試
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;//PA15
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //設(shè)置成上拉輸入
- GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化GPIOA15
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;//PC5
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //設(shè)置成上拉輸入
- GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化GPIOC5
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;//PA0
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0設(shè)置成輸入,默認(rèn)下拉
- GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.0
-
- }
- //按鍵處理函數(shù)
- //返回按鍵值
- //mode:0,不支持連續(xù)按;1,支持連續(xù)按;
- //返回值:
- //0,沒有任何按鍵按下
- //KEY0_PRES,KEY0按下
- //KEY1_PRES,KEY1按下
- //WKUP_PRES,WK_UP按下
- //注意此函數(shù)有響應(yīng)優(yōu)先級,KEY0>KEY1>WK_UP!!
- u8 KEY_Scan(u8 mode)
- {
- static u8 key_up=1;//按鍵按松開標(biāo)志
- if(mode)key_up=1; //支持連按
- if(key_up&&(KEY0==0||KEY1==0||WK_UP==1))
- {
- delay_ms(10);//去抖動
- key_up=0;
- if(KEY0==0)return KEY0_PRES;
- else if(KEY1==0)return KEY1_PRES;
- else if(WK_UP==1)return WKUP_PRES;
- }else if(KEY0==1&&KEY1==1&&WK_UP==0)key_up=1;
- return 0;// 無按鍵按下
- }
復(fù)制代碼 這里因為喔只有一個sg90所以我只在WK_UP按鍵的中斷函數(shù)中加入了pwm舵機函數(shù),其它的按鍵大家可以加入其它的外設(shè)來達(dá)到按鍵控制外設(shè)的目的。因為篇幅的限制,大家可以自行下載源碼查看。
51黑下載:
按鍵控制舵機.7z
(186.19 KB, 下載次數(shù): 109)
2021-4-24 17:27 上傳
點擊文件名下載附件
|
評分
-
查看全部評分
|