當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > 如何書寫STM32的一個直流電機(jī)驅(qū)動
聲明:本博文適用于 華清遠(yuǎn)見智能小車上的STM32主控板的開發(fā)。在該電路板上,核心芯片為STM32F10RCT。電機(jī)驅(qū)動使用L298芯片
1 獲取到電路元件
同時要獲取到如下一些東西:
1.1 電路板
1.2 芯片說明手冊 ( 芯片寄存器手冊 + 電路原理圖)
2 如何我們要做的是直流電機(jī)的驅(qū)動
2.1 開直流電機(jī)的驅(qū)動原理 – 》 馬達(dá)驅(qū)動
2.2 探究一下驅(qū)動電路與主芯片的關(guān)系
實(shí)際觀察發(fā)現(xiàn),馬達(dá)的控制端口接在了電路板的P4器件
根據(jù)實(shí)際電路發(fā)現(xiàn)P4是我們點(diǎn)擊的控制管腳
經(jīng)過查詢資料發(fā)現(xiàn)
結(jié)論:INPUTx與OUTx輸入輸出為正比關(guān)系
所以我們可以通過控制INPUTx來控制小車的移動
經(jīng)過搜尋文檔我們發(fā)現(xiàn)如下電路:
經(jīng)過電路分析發(fā)現(xiàn)
結(jié)論: PA2與INPUT1成正比關(guān)系
而PA2就是主芯片上的管腳!
所以,我們有如下結(jié)論:
PA2 INPUT1 OUT1
PB9 INPUT1 OUT2
PA1 INPUT1 OUT3
PC9 INPUT1 OUT4
PA0 INPUT1 ENA
PA3 INPUT1 ENB
所以我們有如下結(jié)論:
PA2 PB9 PA1 PC9 方向 PA0 PA3
1 0 1 0 后方 1 1
0 1 0 1 前方
1 0 0 0 左邊
....
硬件分析步驟已經(jīng)完成以下是軟件書寫過程:
我們首先通過STM32CubeMX來生成一些基礎(chǔ)代碼。請打開Cube軟件進(jìn)行如下選擇:
然后配置為如下狀態(tài)
之后點(diǎn)擊工具欄中的 Proect Generate Code(注意在生成代碼的時候選擇 MDK-ARM V5)
然后我們在對應(yīng)的路徑下找到要編輯的main函數(shù)也就是單片機(jī)在運(yùn)作時要運(yùn)行的入口函數(shù)。在其中找到該函數(shù)中MX_GPIO_Init();
下書寫如下代碼:
//設(shè)置電機(jī)狀態(tài)
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,1);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,0);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_9,0);
//設(shè)置電機(jī)使能狀態(tài)
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,1);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,1);
然后在Keil中編譯并稍寫進(jìn)入小車,查看情況。