国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vscode stm32cubemx 優(yōu)雅開發(fā)stm32,最簡(jiǎn)單步驟教程

這篇具有很好參考價(jià)值的文章主要介紹了vscode stm32cubemx 優(yōu)雅開發(fā)stm32,最簡(jiǎn)單步驟教程。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

配置安裝環(huán)境

  1. 下載STM32cubeMX,這個(gè)大家可以自己在stm的官網(wǎng)下載到
  2. 下載VSCode
  3. 下載arm-none-eabi-gcc
  4. 下載MinGW-w64,為了實(shí)現(xiàn)里面的makefile 等功能
  5. 下載OpenOCD這里用來(lái)調(diào)試stm32,支持jlink stlink daplink

上述安裝步驟1、安裝步驟2在這里比較簡(jiǎn)單,就不贅述了

安裝arm-none-eabi-gcc:

stm32-for-vscode,stm32,vscode,單片機(jī)

?此處我們下載zip包,方便安裝。

以我為例,我們解壓到 E:\Tools\ 目錄下

安裝MinGW-w64

stm32-for-vscode,stm32,vscode,單片機(jī)

此處我們同樣下載zip包,安裝比較方便,注意一定要安裝上述劃線的版本

?以我為例,我們解壓到 E:\Tools\ 目錄下

安裝openocd

stm32-for-vscode,stm32,vscode,單片機(jī)

?此處我們下載最新的版本

以我為例,我們解壓到 E:\Tools\ 目錄下

通過stm32cubemx新建一個(gè)例程

這里以我的開發(fā)板為例,使用的是stm32f407vgt6,我們創(chuàng)建一個(gè)工程

stm32-for-vscode,stm32,vscode,單片機(jī)

配置一下SWD調(diào)試

stm32-for-vscode,stm32,vscode,單片機(jī)

?配置外部8mhz晶振

stm32-for-vscode,stm32,vscode,單片機(jī)

?配置PA1,用作測(cè)試LED

stm32-for-vscode,stm32,vscode,單片機(jī)

?配置usart1作為串口輸出測(cè)試

?stm32-for-vscode,stm32,vscode,單片機(jī)

?配置時(shí)鐘,完成最后一步工作

stm32-for-vscode,stm32,vscode,單片機(jī)

?這里我們選擇makefile,即可,點(diǎn)擊generate code

通過vscode 生成剛剛用stm32cubemx 創(chuàng)建的工程

stm32-for-vscode,stm32,vscode,單片機(jī)

?在這里,我們?cè)跀U(kuò)展中找到插件并安裝

  • C/C++
  • Cortex-Debug
  • stm32-for-vscode

?剛剛下載的工具我都放在這個(gè)目錄了,如圖所示

?stm32-for-vscode,stm32,vscode,單片機(jī)

?為了使用方便,我稍微改下名字

stm32-for-vscode,stm32,vscode,單片機(jī)

這樣就舒服多了

?安裝好stm32-for-vscode以后,我們會(huì)發(fā)現(xiàn)側(cè)邊欄增加了一個(gè)圖標(biāo):

stm32-for-vscode,stm32,vscode,單片機(jī)

?按照上述提示,我們導(dǎo)入相應(yīng)的工具

這里已經(jīng)配置成我的路徑了

重新打開vscode,即可看到變化

stm32-for-vscode,stm32,vscode,單片機(jī)

幾個(gè)選項(xiàng)分別為

  • 編譯
  • 全編譯
  • 燒錄到stm32
  • 調(diào)試stm32
  • 修改下載工具

?我簡(jiǎn)單演示一下,首先我們選擇自己的編譯工具,例如我這邊使用的是dap-link

stm32-for-vscode,stm32,vscode,單片機(jī)

?我們看到這里已經(jīng)選擇成功了,那么我們先點(diǎn)擊build

stm32-for-vscode,stm32,vscode,單片機(jī)

?已經(jīng)生成成功了,我們看到編譯速度是keil的指數(shù)級(jí)的提升

stm32-for-vscode,stm32,vscode,單片機(jī)

我們點(diǎn)擊flash stm32,即可看到已經(jīng)下載成功了!

最基本的操作已經(jīng)可以了,編譯下載一條龍,那么接下來(lái)我們?cè)囋囌{(diào)試功能。

?使用vscode調(diào)試

我們?cè)诖a里簡(jiǎn)單添加一些代碼,作為調(diào)試的現(xiàn)象

stm32-for-vscode,stm32,vscode,單片機(jī)

不出意外的話,我們可以在debug中觀察到i的變化

那么我們來(lái)試一下吧,點(diǎn)擊build,再點(diǎn)擊 debug在 printf 處添加斷電

stm32-for-vscode,stm32,vscode,單片機(jī)

可以看到我們已經(jīng)進(jìn)入到調(diào)試的模式了,那么我們新增一個(gè)監(jiān)視來(lái)監(jiān)視i

?stm32-for-vscode,stm32,vscode,單片機(jī)

?此時(shí)i的值為0,我們?cè)谌龠\(yùn)行兩次次試試

stm32-for-vscode,stm32,vscode,單片機(jī)

?stm32-for-vscode,stm32,vscode,單片機(jī)

可以看到,我們已經(jīng)有i的值的變化,也在串口輸出了值,符合我們的預(yù)期

這種開發(fā)方式已經(jīng)可以替代keil了?

最后小結(jié)

那么我們知道,在keil中調(diào)用printf 只需要在前面增加putc函數(shù)即可,那在這種開發(fā)方式中,我們?nèi)绾翁砑雍瘮?shù),使得可以printf。

很簡(jiǎn)單,只需要將下述代碼復(fù)制到頭,并且包含stdio.h即可

int _write(int fd, char *ch, int len)
{
  HAL_UART_Transmit(&huart1, (uint8_t*)ch, len, 0xFFFF);
  return len;
}

進(jìn)一步更新使用C++

如果使用C++來(lái)編寫工程的話,我們發(fā)現(xiàn)本來(lái)的printf不行了,怎么回事呢

很簡(jiǎn)單,這里借鑒可以新增兩個(gè)文件 target.h,插入一下內(nèi)容

#ifndef _RETARGET_H__
#define _RETARGET_H__
#include "stm32f4xx_hal.h"
#include <sys/stat.h>
#include <stdio.h>

#ifdef __cplusplus
extern "C" {
#endif

void RetargetInit(UART_HandleTypeDef *huart);
int _isatty(int fd);
int _write(int fd, char *ptr, int len);
int _close(int fd);
int _lseek(int fd, int ptr, int dir);
int _read(int fd, char *ptr, int len);
int _fstat(int fd, struct stat *st);

#ifdef __cplusplus
}
#endif

#endif //#ifndef _RETARGET_H__

再新增一個(gè)target.c

#include <_ansi.h>
#include <_syslist.h>
#include <errno.h>
#include <sys/time.h>
#include <sys/times.h>
#include <retarget.h>
#include <stdint.h>
#if !defined(OS_USE_SEMIHOSTING)
#define STDIN_FILENO  0
#define STDOUT_FILENO 1
#define STDERR_FILENO 2

UART_HandleTypeDef *gHuart;

void RetargetInit(UART_HandleTypeDef *huart)
{
    gHuart = huart;
    /* Disable I/O buffering for STDOUT stream, so that
     * chars are sent out as soon as they are printed. */
    setvbuf(stdout, NULL, _IONBF, 0);
}
int _isatty(int fd)
{
    if (fd >= STDIN_FILENO && fd <= STDERR_FILENO)
        return 1;
    errno = EBADF;
    return 0;
}
int _write(int fd, char *ptr, int len)
{
    HAL_StatusTypeDef hstatus;
    if (fd == STDOUT_FILENO || fd == STDERR_FILENO)
    {
        hstatus = HAL_UART_Transmit(gHuart, (uint8_t *) ptr, len, HAL_MAX_DELAY);
        if (hstatus == HAL_OK)
            return len;
        else
            return EIO;
    }
    errno = EBADF;
    return -1;
}
int _close(int fd)
{
    if (fd >= STDIN_FILENO && fd <= STDERR_FILENO)
        return 0;
    errno = EBADF;
    return -1;
}
int _lseek(int fd, int ptr, int dir)
{
    (void) fd;
    (void) ptr;
    (void) dir;
    errno = EBADF;
    return -1;
}
int _read(int fd, char *ptr, int len)
{
    HAL_StatusTypeDef hstatus;
    if (fd == STDIN_FILENO)
    {
        hstatus = HAL_UART_Receive(gHuart, (uint8_t *) ptr, 1, HAL_MAX_DELAY);
        if (hstatus == HAL_OK)
            return 1;
        else
            return EIO;
    }
    errno = EBADF;
    return -1;
}
int _fstat(int fd, struct stat *st)
{
    if (fd >= STDIN_FILENO && fd <= STDERR_FILENO)
    {
        st->st_mode = S_IFCHR;
        return 0;
    }
    errno = EBADF;
    return 0;
}
#endif //#if !defined(OS_USE_SEMIHOSTING)

就可以繼續(xù)使用print了,甚至是cout也完全沒有問題

  while (1)
  {
    /* USER CODE END WHILE */
    printf("test i = %d \n", i++);
    std::cout << 123 << std::endl;
    HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_1);
    HAL_Delay(1000);
    /* USER CODE BEGIN 3 */
  }

面對(duì)_exit等報(bào)錯(cuò),我們這里需要在STM32-for-VSCode.config.yaml這個(gè)文件中新增選項(xiàng),就可以沒有報(bào)錯(cuò)了文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-530744.html

# Compiler flags
cFlags: []
cxxFlags: []
assemblyFlags: []
linkerFlags: 
  - -specs=nano.specs
  - -Wl,--gc-sections
  - -ffreestanding -flto
  - -specs=nosys.specs #新增這個(gè)選項(xiàng)

到了這里,關(guān)于vscode stm32cubemx 優(yōu)雅開發(fā)stm32,最簡(jiǎn)單步驟教程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • STM32開發(fā),VScode+Embedded IDE,簡(jiǎn)單方便,沒有keil版權(quán)困擾

    STM32開發(fā),VScode+Embedded IDE,簡(jiǎn)單方便,沒有keil版權(quán)困擾

    網(wǎng)上看了很多搭建stm32+GCC的開發(fā)環(huán)境,覺得都比較麻煩,發(fā)現(xiàn)Embedded IDE非常方便。官方教程也比較詳細(xì),借助插件就可以完成開發(fā)環(huán)境搭建,簡(jiǎn)單方便。該插件支持mcu多,并且直接兼容keil的工程,如果擔(dān)心keil版權(quán)問題,那就直接拋棄keil吧。 若有不正確之處,請(qǐng)參考官網(wǎng):這

    2024年02月01日
    瀏覽(26)
  • vscode 和 keil協(xié)同使用開發(fā)stm32程序,超詳細(xì)教程

    vscode 和 keil協(xié)同使用開發(fā)stm32程序,超詳細(xì)教程

    VSCODE 是一款廣受好評(píng)的代碼編輯器, KEIL 是常用的嵌入式開發(fā)工具但編程界面簡(jiǎn)陋。 將兩個(gè)工具一起搭配使 用, 能大大提高我們的效率。 你可以把 VSCODE 專門用來(lái)編輯和編譯, KEIL 用來(lái)對(duì)文件進(jìn)行增刪下載配置環(huán)境。 原始的 KEIL 代碼編輯界面在編 輯和閱讀上都十分的不方

    2024年02月05日
    瀏覽(21)
  • STM32 第9講 STM32CubeMX簡(jiǎn)介安裝和簡(jiǎn)單使用

    STM32 第9講 STM32CubeMX簡(jiǎn)介安裝和簡(jiǎn)單使用

    STM32CubeMX是ST開發(fā)的一款圖形配置工具,可以通過圖形化配置自動(dòng)生成初始化代碼。 STM32的標(biāo)準(zhǔn)外設(shè)庫(kù)已經(jīng)停止維護(hù)了。 安裝STM32CubeMX之前必須安裝JAVA環(huán)境,這兩個(gè)順序不能調(diào)換。 官網(wǎng)下載地址link 下載完成后,點(diǎn)擊安裝包,直接安裝即可。 接下來(lái)檢測(cè)是否安裝成功。 Win +

    2024年02月16日
    瀏覽(26)
  • 基于STM32CubeMx配置FreeRtos以及USB虛擬串口步驟詳解

    基于STM32CubeMx配置FreeRtos以及USB虛擬串口步驟詳解

    ? ?Debug:推薦選擇 Serial Wire (方便使用STLink打斷點(diǎn)在線調(diào)試) 中間兩項(xiàng)默認(rèn)Disable就好 TimeBase Source:若需要配置FreeRtos則不能選擇SysTick,隨機(jī)選擇一個(gè)TIM定時(shí)器即可,這里我選擇TIM1定時(shí)器。 (解釋:裸機(jī)的時(shí)鐘源默認(rèn)是SysTick,但是開啟FreeRtos后,F(xiàn)reeRtos會(huì)占用SysTick,用于任

    2024年02月05日
    瀏覽(28)
  • STM32CubeMX+VSCODE+EIDE+RT-THREAD 工程創(chuàng)建

    STM32CubeMX+VSCODE+EIDE+RT-THREAD 工程創(chuàng)建

    ????????Eide環(huán)境搭建暫且不表,后續(xù)補(bǔ)充。主要記錄下Vscode環(huán)境下 創(chuàng)建Rt-thread工程的過程。分別介紹STM32CubeMX添加rtt支持包的方式和手動(dòng)添加rtt kernel方式。STM32CubeMX生成工程的時(shí)候有\(zhòng)\\"坑\\\",防止下次忘記,方便渡一下有緣人,特此記錄。 ? ? ? ? 此工程以創(chuàng)建stm32f405為例

    2024年02月14日
    瀏覽(27)
  • STM32CubeMX教程1 工程建立

    開發(fā)板(STM32F407G-DISC1) STM32CubeMX軟件(Version 6.10.0) keil μVision5 IDE(MDK-Arm) ST-LINK/V2驅(qū)動(dòng) 使用STM32CubeMX軟件 建立一個(gè)STM32F407的空工程 如下圖所示為STM32CubeMX軟件主界面 單擊ACCESS TO MCU SELECTOR 在彈出的MCU選擇界面,搜索工程使用的MCU型號(hào),然后選中該MCU,單擊界面右上角Star

    2024年02月04日
    瀏覽(34)
  • STM32CubeMX 下載和安裝 詳細(xì)教程

    STM32CubeMX 下載和安裝 詳細(xì)教程

    【HAL庫(kù)】STM32CubeMX開發(fā)----STM32F407----目錄 STM32CubeMX安裝包(Win-6.6.1) ---- 下載鏈接 官網(wǎng)下載地址:https://www.st.com/en/development-tools/stm32cubemx.html

    2024年02月02日
    瀏覽(20)
  • 【STM32】STM32CubeMX教程一--基本使用(新建工程點(diǎn)亮LED燈)

    【STM32】STM32CubeMX教程一--基本使用(新建工程點(diǎn)亮LED燈)

    前言 在配置好CubeMX之后,就是新建工程的開始了,那么首先我們需要一些準(zhǔn)備,本片博客我們會(huì)很詳細(xì)的介紹STM32CubeMX的基本使用和如何創(chuàng)建一個(gè)新的工程并且點(diǎn)亮LED燈 在新建工程時(shí),我們分為了具體流程1~7,如果您不想看每部分的講解,直接按照流程操作即可,5分鐘即可

    2024年02月09日
    瀏覽(26)
  • STM32CUBEMX使用教程以及項(xiàng)目的搭建

    STM32CUBEMX使用教程以及項(xiàng)目的搭建

    STM32cubemx教程 簡(jiǎn)介 STM32CubeMX 是 ST 意法半導(dǎo)體近些年力推薦的STM32 芯片圖形化配置工具,目的就是為了方便開發(fā)者, 允許用戶使用圖形化向?qū)蒀 初始化代碼,可以大大減輕開發(fā)工作,時(shí)間和費(fèi)用,提高開發(fā)效率。STM32CubeMX幾乎覆蓋了STM32 全系列芯片。 在CubeMX上,通過傻瓜

    2024年02月08日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包