0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

keil5開(kāi)發(fā)案例分享 基于STM32設(shè)計(jì)遙控小車

1126626497 ? 來(lái)源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2022-02-28 13:10 ? 次閱讀

一、環(huán)境介紹

小車主控MCU: STM32F103ZET6

STM32程序開(kāi)發(fā)IDE: keil5

STM32程序風(fēng)格: 采用寄存器方式開(kāi)發(fā),注釋齊全,執(zhí)行效率高,方便移植

手機(jī)APP: 采用QT設(shè)計(jì),程序支持跨平臺(tái)編譯運(yùn)行(AndroidIOS、Windows、Linux都可以編譯運(yùn)行,對(duì)應(yīng)平臺(tái)上QT的環(huán)境搭建,之前博客已經(jīng)發(fā)了文章講解)

硬件包含: 淘寶購(gòu)買的完整一套4輪遙控小車(采用STM32F103ZET6作為主控板)、DHT11溫濕度傳感器、中科微GPS模塊、ESP8266

小車完整源碼下載地址:https://download.csdn.net/download/xiaolong1126626497/19557040

APP完整源碼下載地址: https://download.csdn.net/download/xiaolong1126626497/19557009

二、功能介紹

這是基于STM32設(shè)計(jì)的4輪遙控小車,支持通過(guò)Android手機(jī)APP、Windows上位機(jī)完成對(duì)小車遙控;支持前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、停止等操作。

小車上會(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)用百度地圖,顯示小車的位置,并且數(shù)據(jù)也會(huì)存放到數(shù)據(jù)庫(kù)里,方便查看歷史數(shù)據(jù);支持范圍內(nèi)溫濕度查詢、最高溫濕度、最低溫濕度查詢。

小車電機(jī)驅(qū)動(dòng)模塊采用L298N、WIFI模塊采用ESP8266、MCU采用STM32F103C8T6、溫濕度模塊采用DTH11、GPS模塊采用北斗GPS+BDS。

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.pngpoYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

三、相關(guān)硬件介紹

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.pngpoYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

四、程序源碼

硬件連接說(shuō)明:
GPS接的串口1: PA3(RX) --5V~3.3V
WIFI接的串口3: PB10(TX)--->接ESP8266的RX PB11(RX)--->接ESP8266的TX --3.3V
DHT11溫濕度接: PA7

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

4.1 STM32小車端: 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);
       
       //判斷輪詢時(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小車端: 電機(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小車端: 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)名稱
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. 查詢本地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)名稱:%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軟件端代碼布局

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?


?

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6023

    文章

    44375

    瀏覽量

    628286
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3903

    瀏覽量

    126606
  • STM32
    +關(guān)注

    關(guān)注

    2257

    文章

    10826

    瀏覽量

    352431
  • 遙控小車
    +關(guān)注

    關(guān)注

    2

    文章

    30

    瀏覽量

    18228
  • keil5
    +關(guān)注

    關(guān)注

    6

    文章

    43

    瀏覽量

    20577
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【技術(shù)精選】嵌入式STM32原創(chuàng)征文活動(dòng)精選文章

    設(shè)計(jì)方案keil5開(kāi)發(fā)案例分享 基于STM32設(shè)計(jì)遙控小車 STM32 + ESP8266 +
    發(fā)表于 07-27 18:26

    如何讓keil5可以開(kāi)發(fā)51單片機(jī)系列

    通常,我們使用keil5開(kāi)發(fā)32,keil4開(kāi)發(fā)51。但這樣切換版本太過(guò)繁瑣,下面介紹一種讓keil5兼容51程序的方法。只針對(duì)已經(jīng)破解的
    發(fā)表于 07-03 17:42 ?29次下載
    如何讓<b class='flag-5'>keil5</b>可以<b class='flag-5'>開(kāi)發(fā)</b>51單片機(jī)系列

    如何安裝KEIL5詳細(xì)教程說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何安裝KEIL5詳細(xì)教程說(shuō)明包括了:獲取KEIL5安裝包,開(kāi)始安裝KEIL5,安裝STM32芯片包
    發(fā)表于 03-19 08:00 ?0次下載
    如何安裝<b class='flag-5'>KEIL5</b>詳細(xì)教程說(shuō)明

    STM32開(kāi)發(fā)軟件Keil5的應(yīng)用程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是STM32開(kāi)發(fā)軟件Keil5的應(yīng)用程序免費(fèi)下載
    發(fā)表于 03-26 08:00 ?16次下載

    Keil5新建STM32工程的教程免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是Keil5新建STM32工程的教程免費(fèi)下載。
    發(fā)表于 01-28 08:00 ?23次下載
    <b class='flag-5'>Keil5</b>新建<b class='flag-5'>STM32</b>工程的教程免費(fèi)下載

    KEIL5開(kāi)發(fā)環(huán)境的搭建與芯片安裝使用方法

    KEIL5開(kāi)發(fā)環(huán)境的搭建與芯片安裝使用方法
    發(fā)表于 06-10 10:21 ?36次下載

    STM32利用KEIL5實(shí)現(xiàn)無(wú)實(shí)物串口收發(fā)實(shí)驗(yàn)

    文章背景:學(xué)習(xí)到STM32裸板開(kāi)發(fā)中的串口收發(fā)實(shí)驗(yàn),苦于沒(méi)錢買開(kāi)發(fā)板,現(xiàn)在的電腦也鮮有自帶串口的,所以想著能否空手套白狼,直接利用KEIL5在線完成仿真。沒(méi)想到還確實(shí)有辦法!所需軟件:
    發(fā)表于 11-21 17:36 ?8次下載
    <b class='flag-5'>STM32</b>利用<b class='flag-5'>KEIL5</b>實(shí)現(xiàn)無(wú)實(shí)物串口收發(fā)實(shí)驗(yàn)

    畢業(yè)論文 | 基于STM32的雙輪平衡小車設(shè)計(jì)(基于Keil5的完整注釋版代碼工程,原器件清單)

    畢業(yè)論文 | 基于STM32的雙輪平衡小車設(shè)計(jì)(基于Keil5的完整注釋版代碼工程,原器件清單)
    發(fā)表于 11-21 20:06 ?0次下載
    畢業(yè)論文 | 基于<b class='flag-5'>STM32</b>的雙輪平衡<b class='flag-5'>小車</b>設(shè)計(jì)(基于<b class='flag-5'>Keil5</b>的完整注釋版代碼工程,原器件清單)

    KEIL5安裝C51依賴,解決KEIL5無(wú)法創(chuàng)建C51工程

    89C51的工程卻發(fā)現(xiàn)找不到89C51的芯片包了。今天給大家分享一下解決辦法。無(wú)法創(chuàng)建的原因keil4通常用來(lái)開(kāi)發(fā)51單片機(jī)項(xiàng)目,而keil5通常用來(lái)開(kāi)發(fā)
    發(fā)表于 11-29 12:51 ?56次下載
    <b class='flag-5'>KEIL5</b>安裝C51依賴,解決<b class='flag-5'>KEIL5</b>無(wú)法創(chuàng)建C51工程

    STM32學(xué)習(xí)筆記1——軟硬件基礎(chǔ)之keil5編程與GPIO開(kāi)發(fā)

    STM32學(xué)習(xí)筆記1——軟硬件基礎(chǔ)之keil5編程與GPIO開(kāi)發(fā)
    發(fā)表于 11-30 12:36 ?4次下載
    <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>

    Keil5中C51和MDK共存的方法(以Keil5為例)

    Keil5中C51和MDK共存的方法(以Keil5為例)
    發(fā)表于 12-03 20:21 ?75次下載
    <b class='flag-5'>Keil5</b>中C51和MDK共存的方法(以<b class='flag-5'>Keil5</b>為例)

    keil5軟件同時(shí)編譯51和STM32

    Keil5軟件同時(shí)編譯51和stm32打開(kāi)keil5,點(diǎn)擊File->License Management可以看到目前已有c51的product,還需安裝stm32的produc
    發(fā)表于 12-03 20:51 ?17次下載
    <b class='flag-5'>keil5</b>軟件同時(shí)編譯51和<b class='flag-5'>STM32</b>

    STM32Keil5支持包下載教程

    STM32Keil5支持包下載教程
    發(fā)表于 12-08 10:36 ?50次下載
    【<b class='flag-5'>STM32</b>】<b class='flag-5'>Keil5</b>支持包下載教程

    Keil5軟件配置與新建STM32工程的步驟

    本文將介紹下Keil5軟件配置與新建STM32工程的步驟。
    發(fā)表于 02-08 15:36 ?62次下載
    <b class='flag-5'>Keil5</b>軟件配置與新建<b class='flag-5'>STM32</b>工程的步驟

    keil5怎么往stm32里燒錄程序

    STM32開(kāi)發(fā)板 使用USB線將STM32開(kāi)發(fā)板連接到計(jì)算機(jī)。 配置Keil5項(xiàng)目 打開(kāi)Keil5
    的頭像 發(fā)表于 08-22 09:31 ?596次閱讀