STM32+ESP8266wifi遙控小車
單片機源程序如下:
- #include "sys.h"
- #include "delay.h"
- #include "led.h"
- #include "usart3.h"
- #include "esp8266.h"
- #include "l298n.h"
- int main(void){
- delay_init(); //延時函數初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優先級分組為組2:2位搶占優先級,2位響應優先級
- LED_Init(); //初始化與LED連接的硬件接口
- usart3_init(115200); //初始化串口3
- L298N_Init();
-
- while(atk_8266_send_cmd("AT","OK",20))//檢查WIFI模塊是否在線
- {
- atk_8266_quit_trans();//退出透傳
- atk_8266_send_cmd("AT+CIPMODE=0","OK",200); //關閉透傳模式
- delay_ms(200);
- }
-
- while(atk_8266_send_cmd("ATE0","OK",20));//關閉回顯
- atk_8266_send_cmd("AT+CWMODE=2","OK",20);
- atk_8266_send_cmd("AT+RST","OK",20);
- delay_ms(1000);//延時2s等待模塊重啟
- delay_ms(1000);//
- atk_8266_send_cmd("AT+CWSAP=\"WIFI_CAR\",\"20172017\",1,4","OK",1000);
-
- u16 rlen=0;
- atk_8266_send_cmd("AT+CIPMUX=1","OK",20); //0:單連接,1:多連接
- atk_8266_send_cmd("AT+CIPSERVER=1,8086","OK",20); //開啟Server模式,端口號為8086
- delay_ms(200);
- USART3_RX_STA=0;
- IWDG_Init(4,625); //分頻數為64,重載值為625,溢出時間為1s
- while(1){
- IWDG_Feed();//喂狗
- if(USART3_RX_STA&0X8000) //接收到一次數據了
- {
- LED1=!LED1;
- rlen=USART3_RX_STA&0X7FFF; //得到本次接收到的數據長度
- u8 flag=0;
- for(u8 i=0;i<rlen-1;i++) {
- if(USART3_RX_BUF[i]==0XAA&&USART3_RX_BUF[i+1]==0X55) {
- flag = i; //0XAA字節的位置
- break;
- }
- }
- u8 revData[6];
- for(u8 i=0;i<6;i++) {
- revData[i] = USART3_RX_BUF[flag+i]; //將有效數據存放到revData數組中
- }
- if(crc16_flage(revData, 4)) { //進行CRC校驗
- TIM_SetCompare2(TIM3,10000-60*revData[3]); //改變PWM脈沖寬度以調節小車速度
- switch(revData[2]){
- case 1: forward(); break; //前進
- case 2: back(); break; //后退
- case 3: right(); break; //右轉
- case 4: left(); break; //左轉
- case 5: stop(); break; //停止
- }
- }
- USART3_RX_STA=0;
- }
- }
- }
復制代碼
所有資料51hei提供下載:
WIFI_CAR.rar
(284.61 KB, 下載次數: 289)
2018-1-30 03:10 上傳
點擊文件名下載附件
STM32程序 下載積分: 黑幣 -5
|