一、環(huán)境介紹
STM32程序開(kāi)發(fā)IDE: keil5
STM32程序風(fēng)格: 采用寄存器方式開(kāi)發(fā),注釋齊全,執(zhí)行效率高,方便移植
手機(jī)APP: 采用QT設(shè)計(jì),程序支持跨平臺(tái)編譯運(yùn)行(Android、IOS、Windows、Linux都可以編譯運(yùn)行,對(duì)應(yīng)平臺(tái)上QT的環(huán)境搭建,之前博客已經(jīng)發(fā)了文章講解)
硬件包含: 淘寶購(gòu)買(mǎi)的完整一套4輪遙控小車(chē)(采用STM32F103ZET6作為主控板)、DHT11溫濕度傳感器、中科微GPS模塊、ESP8266
小車(chē)完整源碼下載地址:https://download.csdn.net/download/xiaolong1126626497/19557040
APP完整源碼下載地址: https://download.csdn.net/download/xiaolong1126626497/19557009
二、功能介紹
這是基于STM32設(shè)計(jì)的4輪遙控小車(chē),支持通過(guò)Android手機(jī)APP、Windows上位機(jī)完成對(duì)小車(chē)遙控;支持前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、停止等操作。
小車(chē)上會(huì)實(shí)時(shí)采集溫度、濕度、GPS經(jīng)緯度、通過(guò)ESP8266 WIFI上傳至手機(jī)APP,手機(jī)APP收到數(shù)據(jù)之后,會(huì)將溫濕度實(shí)時(shí)顯示出來(lái),經(jīng)緯度收到后會(huì)調(diào)用百度地圖,顯示小車(chē)的位置,并且數(shù)據(jù)也會(huì)存放到數(shù)據(jù)庫(kù)里,方便查看歷史數(shù)據(jù);支持范圍內(nèi)溫濕度查詢(xún)、最高溫濕度、最低溫濕度查詢(xún)。
小車(chē)電機(jī)驅(qū)動(dòng)模塊采用L298N、WIFI模塊采用ESP8266、MCU采用STM32F103C8T6、溫濕度模塊采用DTH11、GPS模塊采用北斗GPS+BDS。
![](https://file.elecfans.com//web2/M00/32/FD/pYYBAGIcWVmAWeuHAAfit4iZbbI654.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9sb25nMTEyNjYyNjQ5Nw==,size_16,color_FFFFFF,t_70)
?
![poYBAGDYdXCAWkKMAAAAK8RNs4s030.png](http://file.elecfans.com/web2/M00/03/FB/poYBAGDYdXCAWkKMAAAAK8RNs4s030.png)
![](https://file.elecfans.com//web2/M00/32/F7/poYBAGIcWVmAa3yuAAGm_7ha7-k356.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9sb25nMTEyNjYyNjQ5Nw==,size_16,color_FFFFFF,t_70)
![poYBAGDYdXCAWkKMAAAAK8RNs4s030.png](http://file.elecfans.com/web2/M00/03/FB/poYBAGDYdXCAWkKMAAAAK8RNs4s030.png)
?
![](https://file.elecfans.com//web2/M00/32/FD/pYYBAGIcWVqAC1kxAAEpuWXQKC4845.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9sb25nMTEyNjYyNjQ5Nw==,size_16,color_FFFFFF,t_70)
![poYBAGDYdXCAWkKMAAAAK8RNs4s030.png](http://file.elecfans.com/web2/M00/03/FB/poYBAGDYdXCAWkKMAAAAK8RNs4s030.png)
?
三、相關(guān)硬件介紹
![](https://file.elecfans.com//web2/M00/32/F7/poYBAGIcWV2AeioTACuvk-Jw8EY089.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9sb25nMTEyNjYyNjQ5Nw==,size_16,color_FFFFFF,t_70)
?
![poYBAGDYdXCAWkKMAAAAK8RNs4s030.png](http://file.elecfans.com/web2/M00/03/FB/poYBAGDYdXCAWkKMAAAAK8RNs4s030.png)
![](https://file.elecfans.com//web2/M00/32/FD/pYYBAGIcWV2ACk8IAAUxeA8HXIM244.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9sb25nMTEyNjYyNjQ5Nw==,size_16,color_FFFFFF,t_70)
![poYBAGDYdXCAWkKMAAAAK8RNs4s030.png](http://file.elecfans.com/web2/M00/03/FB/poYBAGDYdXCAWkKMAAAAK8RNs4s030.png)
?
![](https://file.elecfans.com//web2/M00/32/F7/poYBAGIcWV6AHN8zAAgyWqUxE8c100.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9sb25nMTEyNjYyNjQ5Nw==,size_16,color_FFFFFF,t_70)
![poYBAGDYdXCAWkKMAAAAK8RNs4s030.png](http://file.elecfans.com/web2/M00/03/FB/poYBAGDYdXCAWkKMAAAAK8RNs4s030.png)
?
![](https://file.elecfans.com//web2/M00/32/FD/pYYBAGIcWV-AS4XyAAYgcAZ52Ps591.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9sb25nMTEyNjYyNjQ5Nw==,size_16,color_FFFFFF,t_70)
![poYBAGDYdXCAWkKMAAAAK8RNs4s030.png](http://file.elecfans.com/web2/M00/03/FB/poYBAGDYdXCAWkKMAAAAK8RNs4s030.png)
?
四、程序源碼
硬件連接說(shuō)明:
GPS接的串口1: PA3(RX) --5V~3.3V
WIFI接的串口3: PB10(TX)--->接ESP8266的RX PB11(RX)--->接ESP8266的TX --3.3V
DHT11溫濕度接: PA7
![](https://file.elecfans.com//web2/M00/32/F7/poYBAGIcWV-AL9lVAAXGI4twTdY964.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9sb25nMTEyNjYyNjQ5Nw==,size_16,color_FFFFFF,t_70)
![poYBAGDYdXCAWkKMAAAAK8RNs4s030.png](http://file.elecfans.com/web2/M00/03/FB/poYBAGDYdXCAWkKMAAAAK8RNs4s030.png)
?
4.1 STM32小車(chē)端: main.c源碼
#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
#include "key.h"
#include "usart.h"
#include
#include "timer.h"
#include "bluetooth.h"
#include "esp8266.h"
#include "dht11.h"
#include "gps.h"
#include "motor.h"
/*
硬件連接說(shuō)明:
GPS接的串口1: PA3(RX) --5V~3.3V
WIFI接的串口3: PB10(TX)--->接ESP8266的RX PB11(RX)--->接ESP8266的TX --3.3V
DHT11溫濕度接: PA7
*/
u8 ESP8266_SendBuff[50];
char Buffer[1024];
int main()
{
u32 time_cnt=0;
double Longitude=120.086199;
double latitude=30.139219;
u8 temp=20;
u8 humi=70;
//延時(shí)2秒保證系統(tǒng)穩(wěn)定
delay_ms(1000);
delay_ms(1000);
LED_Init();
BEEP_Init();
USART1_Init(115200); //串口調(diào)試
USART2_Init(9600); //接GPS模塊
TIMER2_Init(72,20000);
USART3_Init(115200); //串口-WIFI ESP8166_01默認(rèn)波特率9600 ESP8266_12F默認(rèn)波特率115200
TIMER3_Init(72,20000); //超時(shí)時(shí)間20ms
printf("正在初始化請(qǐng)稍等.\r\n");
printf("DHT11_Init:%d\r\n",DHT11_Init());//溫濕度傳感器初始化
printf("準(zhǔn)備檢測(cè)WIFI硬件,請(qǐng)稍等...\r\n");
//初始化WIFI硬件
if(ESP8266_Init())printf("WIFI硬件錯(cuò)誤.\r\n");
else
{
printf("WIFI設(shè)備正常....\r\n");
//配置WIFI的模式 192.168.4.1
printf("WIFI配置狀態(tài):%d\r\n",ESP8266_AP_TCP_Server_Mode("esp8266_666","12345678",8089));
}
MotorInit(); //電機(jī)初始化
//電機(jī)脈沖控制
TIMER4_Init(72,1000);
while(1)
{
//接收到GPS的數(shù)據(jù)
if(USART2_RX_FLAG)
{
USART2_RX_BUFFER[USART2_RX_CNT]='\0';
//解析經(jīng)緯度
GPS_GNRMC_Decoding((char*)USART2_RX_BUFFER,&Longitude,&latitude);
USART2_RX_CNT=0;
USART2_RX_FLAG=0;
//打印到串口調(diào)試助手
printf("GPS:%f,%f\r\n",Longitude,latitude);
}
//接收到WIFI的數(shù)據(jù)
if(USART3_RX_FLAG)
{
USART3_RX_BUFFER[USART3_RX_CNT]='\0';
printf("WIFI:%s\r\n",USART3_RX_BUFFER);
strcpy(Buffer,(char*)USART3_RX_BUFFER);
USART3_RX_CNT=0;
USART3_RX_FLAG=0;
BEEP=1;
delay_ms(50);
BEEP=0;
if(strstr((char*)Buffer,":a"))
{
printf("向前...\r\n");
CarGo();
}
else if(strstr((char*)Buffer,":b"))
{
printf("后退...\r\n");
CarBack();
}
else if(strstr((char*)Buffer,":c"))
{
printf("向左...\r\n");
CarLeft();
}
else if(strstr((char*)Buffer,":d"))
{
printf("向右...\r\n");
CarRight();
}
else if(strstr((char*)Buffer,":e"))
{
printf("停止...\r\n");
CarStop();
}
}
time_cnt++;
delay_ms(10);
//判斷輪詢(xún)時(shí)間
if(time_cnt>=100*2)
{
time_cnt=0;
//讀取溫濕度數(shù)據(jù)
DHT11_Read_Data(&temp,&humi);
sprintf((char*)ESP8266_SendBuff,"#%d,%d,%f,%f",temp,humi,Longitude,latitude);
//向服務(wù)器上傳數(shù)據(jù)
ESP8266_ServerSendData(0,ESP8266_SendBuff,strlen((char*)ESP8266_SendBuff));
//打印到串口調(diào)試助手
printf("ESP8266_SendBuff:%s\r\n",(char *)ESP8266_SendBuff);
//運(yùn)行狀態(tài)
Motor_LED=!Motor_LED;
}
}
}
4.2 STM32小車(chē)端: 電機(jī)控制源碼
#include "motor.h"
//全局變量定義
unsigned int speed_count=0;//占空比計(jì)數(shù)器 50次一周期
int front_left_speed_duty=SPEED_DUTY;
int front_right_speed_duty=SPEED_DUTY;
int behind_left_speed_duty=SPEED_DUTY;
int behind_right_speed_duty=SPEED_DUTY;
unsigned char continue_time=0;
//根據(jù)占空比驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng)
void CarMove(void)
{
BEHIND_RIGHT_EN;
//右前輪
if(front_right_speed_duty > 0)//向前
{
if(speed_count < front_right_speed_duty)
{
FRONT_RIGHT_GO;
}else //停止
{
FRONT_RIGHT_STOP;
}
}
else if(front_right_speed_duty < 0)//向后
{
if(speed_count < (-1)*front_right_speed_duty)
{
FRONT_RIGHT_BACK;
}else //停止
{
FRONT_RIGHT_STOP;
}
}
else //停止
{
FRONT_RIGHT_STOP;
}
//左后輪
if(behind_left_speed_duty > 0)//向前
{
if(speed_count < behind_left_speed_duty)
{
BEHIND_LEFT_GO;
} else //停止
{
BEHIND_LEFT_STOP;
}
}
else if(behind_left_speed_duty < 0)//向后
{
if(speed_count < (-1)*behind_left_speed_duty)
{
BEHIND_LEFT_BACK;
} else //停止
{
BEHIND_LEFT_STOP;
}
}
else //停止
{
BEHIND_LEFT_STOP;
}
}
//向前
void CarGo(void)
{
front_left_speed_duty=SPEED_DUTY;
front_right_speed_duty=SPEED_DUTY;
behind_left_speed_duty=SPEED_DUTY;
behind_right_speed_duty=SPEED_DUTY;
}
//后退
void CarBack(void)
{
front_left_speed_duty=-SPEED_DUTY;
front_right_speed_duty=-SPEED_DUTY;
behind_left_speed_duty=-SPEED_DUTY;
behind_right_speed_duty=-SPEED_DUTY;
}
//向左
void CarLeft(void)
{
front_left_speed_duty=-20;
front_right_speed_duty=SPEED_DUTY;
behind_left_speed_duty=-20;
behind_right_speed_duty=SPEED_DUTY+10;//增加后輪驅(qū)動(dòng)力
}
//向右
void CarRight(void)
{
front_left_speed_duty=SPEED_DUTY;
front_right_speed_duty=-20;
behind_left_speed_duty=SPEED_DUTY+10;//增加后輪驅(qū)動(dòng)力
behind_right_speed_duty=-20;
}
//停止
void CarStop(void)
{
front_left_speed_duty=0;
front_right_speed_duty=0;
behind_left_speed_duty=0;
behind_right_speed_duty=0;
}
/*
FRONT_LEFT_F_PIN PG13 左前前進(jìn)IO
FRONT_LEFT_B_PIN PG11 左前后退IO
FRONT_RIGHT_F_PIN PC11 右前前進(jìn)IO
FRONT_RIGHT_B_PIN PD0 右前后退IO
BEHIND_LEFT_F_PIN PD6 左后前進(jìn)IO
BEHIND_LEFT_B_PIN PG9 左后后退IO
右后電機(jī)的兩個(gè)控制IO這里改為兩路使能EN1、EN2,高電平有效
BEHIND_RIGHT_F_PIN PD4 右電機(jī)使能IO
BEHIND_RIGHT_B_PIN PD2 左電機(jī)使能IO
*/
void MotorInit(void)
{
RCC->APB2ENR|=1<<8; //PG
RCC->APB2ENR|=1<<5; //PD
RCC->APB2ENR|=1<<4; //PC
GPIOG->CRH&=0xFF0F0F0F;
GPIOG->CRH|=0x00303030;
GPIOD->CRL&=0xF0F0F0F0;
GPIOD->CRL|=0x03030303;
GPIOC->CRH&=0xFFFF0FFF;
GPIOC->CRH|=0x00003000;
CarStop();
}
4.3 STM32小車(chē)端: ESP8266 WIFI源碼
#include "esp8266.h"
u8 ESP8266_IP_ADDR[16]; //255.255.255.255
u8 ESP8266_MAC_ADDR[18]; //硬件地址
/*
函數(shù)功能: ESP8266命令發(fā)送函數(shù)
函數(shù)返回值:0表示成功 1表示失敗
*/
u8 ESP8266_SendCmd(char *cmd)
{
u8 i,j;
for(i=0;i<10;i++) //檢測(cè)的次數(shù)--發(fā)送指令的次數(shù)
{
USART3_RX_FLAG=0;
USART3_RX_CNT=0;
USARTx_StringSend(USART3,cmd);
delay_ms(200);
if(USART3_RX_FLAG)
{
USART3_RX_BUFFER[USART3_RX_CNT]='\0';
USART3_RX_FLAG=0;
USART3_RX_CNT=0;
if(strstr((char*)USART3_RX_BUFFER,"OK"))
{
return 0;
}
}
}
return 1;
}
/*
函數(shù)功能: ESP8266硬件初始化檢測(cè)函數(shù)
函數(shù)返回值:0表示成功 1表示失敗
*/
u8 ESP8266_Init(void)
{
ESP8266_SendCmd("+++");
delay_ms(200);
ESP8266_SendCmd("+++");
delay_ms(200);
return ESP8266_SendCmd("AT\r\n");
}
/*
函數(shù)功能: 一鍵配置WIFI為AP+TCP服務(wù)器模式
函數(shù)參數(shù):
char *ssid 創(chuàng)建的熱點(diǎn)名稱(chēng)
char *pass 創(chuàng)建的熱點(diǎn)密碼 (最少8位)
u16 port 創(chuàng)建的服務(wù)器端口號(hào)
函數(shù)返回值: 0表示成功 其他值表示對(duì)應(yīng)錯(cuò)誤值
*/
u8 ESP8266_AP_TCP_Server_Mode(char *ssid,char *pass,u16 port)
{
char *p;
u8 i;
char tmp_buff[100];
/*1. 測(cè)試硬件*/
if(ESP8266_SendCmd("AT\r\n"))return 1;
/*2. 關(guān)閉回顯*/
if(ESP8266_SendCmd("ATE0\r\n"))return 2;
/*3. 設(shè)置WIFI模式*/
if(ESP8266_SendCmd("AT+CWMODE=2\r\n"))return 3;
/*4. 復(fù)位*/
ESP8266_SendCmd("AT+RST\r\n");
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
/*5. 關(guān)閉回顯*/
if(ESP8266_SendCmd("ATE0\r\n"))return 5;
/*6. 設(shè)置WIFI的AP模式參數(shù)*/
sprintf(tmp_buff,"AT+CWSAP=\"%s\",\"%s\",1,4\r\n",ssid,pass);
if(ESP8266_SendCmd(tmp_buff))return 6;
/*7. 開(kāi)啟多連接*/
if(ESP8266_SendCmd("AT+CIPMUX=1\r\n"))return 7;
/*8. 設(shè)置服務(wù)器端口號(hào)*/
sprintf(tmp_buff,"AT+CIPSERVER=1,%d\r\n",port);
if(ESP8266_SendCmd(tmp_buff))return 8;
/*9. 查詢(xún)本地IP地址*/
if(ESP8266_SendCmd("AT+CIFSR\r\n"))return 9;
//提取IP地址
p=strstr((char*)USART3_RX_BUFFER,"APIP");
if(p)
{
p+=6;
for(i=0;*p!='"';i++)
{
ESP8266_IP_ADDR[i]=*p++;
}
ESP8266_IP_ADDR[i]='\0';
}
//提取MAC地址
p=strstr((char*)USART3_RX_BUFFER,"APMAC");
if(p)
{
p+=7;
for(i=0;*p!='"';i++)
{
ESP8266_MAC_ADDR[i]=*p++;
}
ESP8266_MAC_ADDR[i]='\0';
}
//打印總體信息
printf("當(dāng)前WIFI模式:AP+TCP服務(wù)器\n");
printf("當(dāng)前WIFI熱點(diǎn)名稱(chēng):%s\n",ssid);
printf("當(dāng)前WIFI熱點(diǎn)密碼:%s\n",pass);
printf("當(dāng)前TCP服務(wù)器端口號(hào):%d\n",port);
printf("當(dāng)前TCP服務(wù)器IP地址:%s\n",ESP8266_IP_ADDR);
printf("當(dāng)前TCP服務(wù)器MAC地址:%s\n",ESP8266_MAC_ADDR);
return 0;
}
/*
函數(shù)功能: TCP服務(wù)器模式下的發(fā)送函數(shù)
發(fā)送指令:
*/
u8 ESP8266_ServerSendData(u8 id,u8 *data,u16 len)
{
u8 i,j,n;
char ESP8266_SendCMD[100]; //組合發(fā)送過(guò)程中的命令
for(i=0;i<10;i++)
{
sprintf(ESP8266_SendCMD,"AT+CIPSEND=%d,%d\r\n",id,len);
USARTx_StringSend(USART3,ESP8266_SendCMD);
delay_ms(200);
if(USART3_RX_FLAG)
{
USART3_RX_BUFFER[USART3_RX_CNT]='\0';
USART3_RX_FLAG=0;
USART3_RX_CNT=0;
if(strstr((char*)USART3_RX_BUFFER,">"))
{
//繼續(xù)發(fā)送數(shù)據(jù)
USARTx_DataSend(USART3,data,len);
//等待數(shù)據(jù)發(fā)送成功
delay_ms(200);
if(USART3_RX_FLAG)
{
USART3_RX_BUFFER[USART3_RX_CNT]='\0';
USART3_RX_FLAG=0;
USART3_RX_CNT=0;
if(strstr((char*)USART3_RX_BUFFER,"SEND OK"))
{
return 0;
}
}
}
}
}
return 1;
}
4.4 QT軟件端代碼布局
![](https://file.elecfans.com//web2/M00/32/FD/pYYBAGIcWWCANDROAAKPYA5j3Os272.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9sb25nMTEyNjYyNjQ5Nw==,size_16,color_FFFFFF,t_70)
![poYBAGDYdXCAWkKMAAAAK8RNs4s030.png](http://file.elecfans.com/web2/M00/03/FB/poYBAGDYdXCAWkKMAAAAK8RNs4s030.png)
?
?
-
單片機(jī)
+關(guān)注
關(guān)注
6043文章
44623瀏覽量
638834 -
Android
+關(guān)注
關(guān)注
12文章
3945瀏覽量
127993 -
STM32
+關(guān)注
關(guān)注
2272文章
10925瀏覽量
357732 -
遙控小車(chē)
+關(guān)注
關(guān)注
2文章
30瀏覽量
18519 -
keil5
+關(guān)注
關(guān)注
6文章
45瀏覽量
20743
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
【技術(shù)精選】嵌入式STM32原創(chuàng)征文活動(dòng)精選文章
如何讓keil5可以開(kāi)發(fā)51單片機(jī)系列
![如何讓<b class='flag-5'>keil5</b>可以<b class='flag-5'>開(kāi)發(fā)</b>51單片機(jī)系列](https://file.elecfans.com/web1/M00/9A/29/pIYBAF0cR5CAAfBnAACU91_VCRw074.png)
如何安裝KEIL5詳細(xì)教程說(shuō)明
![如何安裝<b class='flag-5'>KEIL5</b>詳細(xì)教程說(shuō)明](https://file.elecfans.com/web1/M00/B8/80/pIYBAF5yxwmAfCDHAAJcMxXw1g8851.png)
STM32開(kāi)發(fā)軟件Keil5的應(yīng)用程序免費(fèi)下載
Keil5新建STM32工程的教程免費(fèi)下載
![<b class='flag-5'>Keil5</b>新建<b class='flag-5'>STM32</b>工程的教程免費(fèi)下載](https://file.elecfans.com/web1/M00/DD/5D/pIYBAGASHJ-AQHQSAAM2MBPqA8M307.png)
KEIL5開(kāi)發(fā)環(huán)境的搭建與芯片安裝使用方法
STM32利用KEIL5實(shí)現(xiàn)無(wú)實(shí)物串口收發(fā)實(shí)驗(yàn)
![<b class='flag-5'>STM32</b>利用<b class='flag-5'>KEIL5</b>實(shí)現(xiàn)無(wú)實(shí)物串口收發(fā)實(shí)驗(yàn)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
畢業(yè)論文 | 基于STM32的雙輪平衡小車(chē)設(shè)計(jì)(基于Keil5的完整注釋版代碼工程,原器件清單)
![畢業(yè)論文 | 基于<b class='flag-5'>STM32</b>的雙輪平衡<b class='flag-5'>小車(chē)</b>設(shè)計(jì)(基于<b class='flag-5'>Keil5</b>的完整注釋版代碼工程,原器件清單)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
KEIL5安裝C51依賴(lài),解決KEIL5無(wú)法創(chuàng)建C51工程
![<b class='flag-5'>KEIL5</b>安裝C51依賴(lài),解決<b class='flag-5'>KEIL5</b>無(wú)法創(chuàng)建C51工程](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32學(xué)習(xí)筆記1——軟硬件基礎(chǔ)之keil5編程與GPIO開(kāi)發(fā)
![<b class='flag-5'>STM32</b>學(xué)習(xí)筆記1——軟硬件基礎(chǔ)之<b class='flag-5'>keil5</b>編程與GPIO<b class='flag-5'>開(kāi)發(fā)</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
keil5軟件同時(shí)編譯51和STM32
![<b class='flag-5'>keil5</b>軟件同時(shí)編譯51和<b class='flag-5'>STM32</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論