一、小車模型設計
1)硬體搭配:四輪小車底盤、五路紅外循跡感測器、l298n兩路電機驅動模組、stm32f103rc最小系統板、電源、降壓模組。
2)說明:這裡只用到了兩路電機驅動模組,是因為我將同一邊的電機進行了併聯;使用的電源應大於7v,才能有效的驅動小車行駛;降壓模組的作用是將電壓調節到適合微控制器最小系統板工作的5v供電。
3)組裝起來大概長這個模樣
二、循跡程式設計
1)需要配置的外設:五個gpio輸入口,兩個定時器輸出pwm波(這裡只有兩路也可以只配置乙個定時器,因為乙個定時器可以輸出4路pwm波);
2)gpio口配置(五路輸入):
// 埠巨集定義:
#define track_port gpioa
//選擇a埠
#define track_port_clk rcc_apb2periph_gpioa
//埠a時鐘
#define track_infrared_l2_pin gpio_pin_9
//左2感測器對應的引腳
#define track_infrared_l1_pin gpio_pin_8
//左1感測器對應的引腳
#define track_infrared_m_pin gpio_pin_7
//中間感測器對應的引腳
#define track_infrared_r1_pin gpio_pin_6
//右1感測器對應的引腳
#define track_infrared_r2_pin gpio_pin_5
//右2感測器對應的引腳
// 埠模式配置函式:
void
track_init
(void
)//循跡埠初始化
4)電機驅動函式:
/*******
功 能:左邊電機驅動函式
形 參:cont1 配置ccr3比較暫存器的值(占空比調整)
cont2 配置ccr4比較暫存器的值(占空比調整)
返回值: 無
說 明:當cont1大於0,cont2為0時,電機正轉,反之則反轉(這裡仔細理解一下,後面函式會使用到)
******/
void
motor_l_cont
(uint16_t cont1,uint16_t cont2)
/*******
功 能:右邊電機驅動函式
形 參:cont1 配置ccr3比較暫存器的值(占空比調整)
cont2 配置ccr4比較暫存器的值(占空比調整)
返回值: 無
說 明:當cont1大於0,cont2為0時,電機正轉,反之則反轉(這裡仔細理解一下,後面函式會使用到)
******/
void
motor_r_cont
(uint16_t cont1,uint16_t cont2)
/*******
功 能:雙邊電機驅動函式
形 參:l_speed 設定左電機前進的轉速
r_speed 設定右電機前進的轉速
返回值: 無
說 明:這裡呼叫左電機驅動和右電機驅動函式,
******/
void
motor_speed_adjust
(uint16_t l_speed,uint16_t r_speed)
/*******
功 能:小車旋轉函式(左右電機反方向轉動)
形 參:fx 為1時,逆時針轉動(左電機反轉,右電機正轉)
為0時,順時針轉動(左電機正轉,右電機反轉)
返回值: 無
說 明:這裡使用到的starter_speed,為巨集定義的初始占空引數,這裡呼叫左電機驅動和右電機驅動函式,
******/
void
motor_opposite
(u8 fx)
//旋轉
else
}/********
功 能:後退,左右電機反轉
形 參:無
返回值: 無
說 明:這裡使用到的starter_speed,為巨集定義的初始占空引數,這裡呼叫左電機驅動和右電機驅動函式,
******/
void
motor_retreat
(void
)
5)循跡函式:
/********
功 能:讀取5個感測器輸出的狀態
形 參:無
返回值:state 感測器狀態
說 明:感測器檢測到白線輸出1,黑線輸出0。。
因為使用的時gpioa埠的5到9引腳,這裡直接讀出gpioa所有引腳的狀態,
然後將得到的資料向右移動5位,去掉0到4引腳的資料,
再與上0x001f,得到5到9引腳的狀態,
******/
u8 get_infrared_state
(void
)/********
功 能:循跡調整函式
形 參:無
返回值: 無
說 明:根據獲取到的感測器輸出狀態,進行左右電機的速度調整
******/
void
track_adjust
(void)}
}
(好的,到這裡就完了。寫的非常簡單,不足的地方請各位不吝賜教) STM32F4與STM32F1的區別
作為cortex m3市場的最大佔有者,st公司在2011年又推出基於cortex m4核心的stm32f4系列產品,相對與stm32f1 f2等cortex m3產品,stm32f4最大的優勢,就是新增了硬體fpu單元以及dsp指令,同時,stm32f4的主頻也提高了很多,達到168mhz 可獲得...
STM32F1外部中斷例項
使用外部中斷的基本步驟如下 1.設定好相應的時鐘 2.設定相應的中斷 3.io口初始化 4.把相應的io口設定為中斷線路 要在設定外部中斷之前 並初始化 5.在選擇的中斷通道的響應函式中中斷函式。1 開啟時鐘 void rcc config void 設定相應的時鐘所需要的rcc函式在stm32f1...
STM32f1學習筆記 GPIO
參考文章 stm32自學筆記 stm32可以提供很多gpio,一般分別在5個埠 port gpioa gpioe 每個埠有16個gpio,最大耐壓值為5v。每個埠有32為寬頻的設定暫存器,一共64位,每個gpio占用4位配置位。其中兩位設定gpio的方向,另外兩位設定gpio的工作模式。1 gpio...