如何書寫STM32的一個直流電機驅動
時間:2018-09-29 來源:未知
聲明:本博文適用于 華清遠見智能小車上的STM32主控板的開發。在該電路板上,核心芯片為STM32F10RCT。電機驅動使用L298芯片
1 獲取到電路元件
同時要獲取到如下一些東西:
1.1 電路板
1.2 芯片說明手冊 ( 芯片寄存器手冊 + 電路原理圖)
2 如何我們要做的是直流電機的驅動
2.1 開直流電機的驅動原理 – 》 馬達驅動
2.2 探究一下驅動電路與主芯片的關系
實際觀察發現,馬達的控制端口接在了電路板的P4器件

根據實際電路發現P4是我們點擊的控制管腳

經過查詢資料發現
結論:INPUTx與OUTx輸入輸出為正比關系
所以我們可以通過控制INPUTx來控制小車的移動
經過搜尋文檔我們發現如下電路:

經過電路分析發現
結論: PA2與INPUT1成正比關系
而PA2就是主芯片上的管腳!

所以,我們有如下結論:
PA2 INPUT1 OUT1
PB9 INPUT1 OUT2
PA1 INPUT1 OUT3
PC9 INPUT1 OUT4
PA0 INPUT1 ENA
PA3 INPUT1 ENB
所以我們有如下結論:
PA2 PB9 PA1 PC9 方向 PA0 PA3
1 0 1 0 后方 1 1
0 1 0 1 前方
1 0 0 0 左邊
....
硬件分析步驟已經完成以下是軟件書寫過程:
我們首先通過STM32CubeMX來生成一些基礎代碼。請打開Cube軟件進行如下選擇:




然后配置為如下狀態

之后點擊工具欄中的 Proect Generate Code(注意在生成代碼的時候選擇 MDK-ARM V5)

然后我們在對應的路徑下找到要編輯的main函數也就是單片機在運作時要運行的入口函數。在其中找到該函數中MX_GPIO_Init();
下書寫如下代碼:
//設置電機狀態
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);
//設置電機使能狀態
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,1);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,1);
然后在Keil中編譯并稍寫進入小車,查看情況。

