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

【單片機學習筆記】Windows+Vscode+STM32F4+freeRTOS+FatFs gcc環(huán)境搭建

這篇具有很好參考價值的文章主要介紹了【單片機學習筆記】Windows+Vscode+STM32F4+freeRTOS+FatFs gcc環(huán)境搭建。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

為摒棄在接受keil郵件,研究了下gun編譯,以STM32F407為例,簡單記錄

1. 軟件包準備

  • Git
    選擇對應版本直接安裝即可https://git-scm.com/download/win
  • make
  • gcc
    ?【單片機學習筆記】Windows+Vscode+STM32F4+freeRTOS+FatFs gcc環(huán)境搭建,STM32,單片機,單片機,學習,筆記
    1)將上述軟件包放置于C盤根目錄
    【單片機學習筆記】Windows+Vscode+STM32F4+freeRTOS+FatFs gcc環(huán)境搭建,STM32,單片機,單片機,學習,筆記
    2)添加環(huán)境變量
    【單片機學習筆記】Windows+Vscode+STM32F4+freeRTOS+FatFs gcc環(huán)境搭建,STM32,單片機,單片機,學習,筆記

3)cmd命令行測試環(huán)境
分別輸入

make -v
gcc -v

【單片機學習筆記】Windows+Vscode+STM32F4+freeRTOS+FatFs gcc環(huán)境搭建,STM32,單片機,單片機,學習,筆記
【單片機學習筆記】Windows+Vscode+STM32F4+freeRTOS+FatFs gcc環(huán)境搭建,STM32,單片機,單片機,學習,筆記

2. 編寫makefile

# ------------------------------------------------
#
# @file Makefile (based on gcc)
# @author urien
# @version v1.0.0
#
# ChangeLog :
#   2023-10-20
# ------------------------------------------------

######################################
# target
######################################
TARGET = update


######################################
# building variables
######################################
# debug build?
DEBUG = 1
# optimization
OPT = -Og


#######################################
# paths
#######################################
# Build path
BUILD_DIR = build

######################################
# source
######################################
# C sources
C_DIRS += ../Libraries/FreeRTOS
C_DIRS += ../Libraries/FreeRTOS/portable/GCC/ARM_CM4F
C_DIRS += ../Libraries/CMSIS/Device/ST/STM32F4xx/Source
C_DIRS += ../Libraries/STM32F4xx_StdPeriph_Driver/src
C_DIRS += ../User/app
C_DIRS += ../User/bsp
C_DIRS += ../User/mid
C_DIRS += ../User/misc
C_DIRS += ../User/gui/app
C_DIRS += ../User/gui/lib
C_DIRS += ../User/usb
C_DIRS += ../Libraries/FATFS/source
C_DIRS += ../Libraries/STM32_USB_HOST_Library/Core/src
C_DIRS += ../Libraries/STM32_USB_HOST_Library/Class/MSC/src
C_DIRS += ../Libraries/PDF 
SRC_OBJS_DIRS += $(foreach DIR, $(C_DIRS), $(wildcard $(DIR)/*.c))
C_SOURCES = $(SRC_OBJS_DIRS) \
../Libraries/FreeRTOS/portable/MemMang/heap_4.c \
../Libraries/STM32_USB_OTG_Driver/src/usb_core.c \
../Libraries/STM32_USB_OTG_Driver/src/usb_hcd.c \
../Libraries/STM32_USB_OTG_Driver/src/usb_hcd_int.c \

# Core/Src/main.c \
# Core/Src/fr


# ASM sources
ASM_SOURCES =  \
startup_stm32f407xx.s


#######################################
# binaries
#######################################
PREFIX = arm-none-eabi-
# The gcc compiler bin path can be either defined in make command via GCC_PATH variable (> make GCC_PATH=xxx)
# either it can be added to the PATH environment variable.
ifdef GCC_PATH
CC = $(GCC_PATH)/$(PREFIX)gcc
AS = $(GCC_PATH)/$(PREFIX)gcc -x assembler-with-cpp
CP = $(GCC_PATH)/$(PREFIX)objcopy
SZ = $(GCC_PATH)/$(PREFIX)size
else
CC = $(PREFIX)gcc
AS = $(PREFIX)gcc -x assembler-with-cpp
CP = $(PREFIX)objcopy
SZ = $(PREFIX)size
endif
HEX = $(CP) -O ihex
BIN = $(CP) -O binary -S
 
#######################################
# CFLAGS
#######################################
# cpu
CPU = -mcpu=cortex-m4

# fpu
FPU = -mfpu=fpv4-sp-d16

# float-abi
FLOAT-ABI = -mfloat-abi=hard

# mcu
MCU = $(CPU) -mthumb $(FPU) $(FLOAT-ABI)

# macros for gcc
# AS defines
AS_DEFS = 

# C defines
C_DEFS =  \
-DSTM32F407xx \
-DSTM32F40_41xxx \
-DUSE_STDPERIPH_DRIVER \
-DUSE_USB_OTG_FS \
-DUSER_VECT_TAB_ADDRESS \
# -D__FPU_PRESENT \
# -D__FPU_USED \

# AS includes
AS_INCLUDES =  

# C includes

C_INCS += ../Libraries/CMSIS/Include
C_INCS += ../Libraries/CMSIS/Core/Include
C_INCS += ../Libraries/CMSIS/Device/ST/STM32F4xx/Include
C_INCS += ../Libraries/STM32F4xx_StdPeriph_Driver/inc
C_INCS += ../Libraries/FreeRTOS/include
C_INCS += ../Libraries/FreeRTOS/GCC/ARM_CM4F
C_INCS += ../Libraries/FreeRTOS/portable/GCC/ARM_CM4F
C_INCS += ../Libraries/PDF
C_INCS += ../User/app
C_INCS += ../User/bsp
C_INCS += ../User/mid
C_INCS += ../User/misc
C_INCS += ../User/gui/app
C_INCS += ../User/gui/lib
C_INCS += ../User/usb
C_INCS += ../Libraries/STM32_USB_OTG_Driver/inc
C_INCS += ../Libraries/STM32_USB_HOST_Library/Class/MSC/inc
C_INCS += ../Libraries/STM32_USB_HOST_Library/Core/inc
C_INCS += ../Libraries/FATFS/source
INCS_OBJS_DIR = $(foreach DIR2, $(C_INCS), $(wildcard $(DIR2)/*.h))
INCS_OBJS_PATH = $(sort $(dir $(INCS_OBJS_DIR)))
C_INCLUDES = $(addprefix -I,$(INCS_OBJS_PATH)) \


# compile gcc flags
ASFLAGS = $(MCU) $(AS_DEFS) $(AS_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections

CFLAGS += $(MCU) $(C_DEFS) $(C_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections

ifeq ($(DEBUG), 1)
CFLAGS += -g -gdwarf-2
endif


# Generate dependency information
CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)"


#######################################
# LDFLAGS
#######################################
# link script
LDSCRIPT = STM32F407VGTx_FLASH.ld

# libraries
LIBS = -lc -lm -lnosys 
LIBDIR = 
# LDFLAGS += -lc -lrdimon -u _printf_float
# LDFLAGS += -specs=nano.specs
LDFLAGS += $(MCU) -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections

# default action: build all
all: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin


#######################################
# build the application
#######################################
# list of objects
OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o)))
vpath %.c $(sort $(dir $(C_SOURCES)))
# list of ASM program objects
OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES:.s=.o)))
vpath %.s $(sort $(dir $(ASM_SOURCES)))

$(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR) 
	$(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@

$(BUILD_DIR)/%.o: %.s Makefile | $(BUILD_DIR)
	$(AS) -c $(CFLAGS) $< -o $@

$(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) Makefile
	$(CC) $(OBJECTS) $(LDFLAGS) -o $@
	$(SZ) $@

$(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
	$(HEX) $< $@
	
$(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
	$(BIN) $< $@	
	
$(BUILD_DIR):
	mkdir $@		

#######################################
# clean up
#######################################
clean:
	-rm -fR $(BUILD_DIR)
  
#######################################
# dependencies
#######################################
-include $(wildcard $(BUILD_DIR)/*.d)

#######################################
# download .hex/.bin by jlink
#######################################
#Your JLink installation directory
PATH_WINPC = 'C:/Program Files (x86)/SEGGER/JLink/'
#PATH_LINUX = /opt/SEGGER/JLink_V640b/JLinkExe
JK_DPATH = $(PATH_WINPC)
#Jlink script store directory
JKS_DIR = .
#Chip type
CHIP_TYPE = STM32F407VG
flash:
	@$(JK_DPATH)JLink.exe -device $(CHIP_TYPE) -if SWD -speed 4000 -autoconnect 1 -CommanderScript $(JKS_DIR)/flash.jlink
	@echo "Download Completed!"

debug:
	@$(JK_DPATH)JLinkGDBServer.exe -select USB -device $(CHIP_TYPE) -if SWD -speed auto -noir -LocalhostOnly

# *** EOF ***

3. __CC_ARM轉__GUNC__注意

啟動文件及LD文件
通過CubeMx工具生成即可
目錄路徑表示問題
// __CC_ARM環(huán)境
#define DBG_PATH_DIR '\\'		   // 目錄結構
// __GUNC__環(huán)境
#define DBG_PATH_DIR '/'		   // 目錄結構
字節(jié)對齊及指定位置存儲問題
// __CC_ARM環(huán)境
__align(32) unsigned char ucaMemPool[MEM_MAX_SIZE]; // 內存池(32字節(jié)對齊)
// __GUNC__環(huán)境
#pragma pack(32)  // 內存池(32字節(jié)對齊)
unsigned char ucaMemPool[MEM_MAX_SIZE];
#pragma pack()

// __CC_ARM環(huán)境
static uint8_t ucHeap[ configTOTAL_HEAP_SIZE ] __attribute__((at(0X10000000)));	
// __GUNC__環(huán)境
static uint8_t ucHeap[configTOTAL_HEAP_SIZE] __attribute__ ((section(".ccmram")));
/**
其中.ccmram在LD中定義,如果沒有則需要自定義
*/
  .ccmram :
  {
    . = ALIGN(4);
    _sccmram = .;       /* create a global symbol at ccmram start */
    *(.ccmram)
    *(.ccmram*)
    
    . = ALIGN(4);
    _eccmram = .;       /* create a global symbol at ccmram end */
  } >CCMRAM AT> FLASH
FreeRTOS兼容問題

【單片機學習筆記】Windows+Vscode+STM32F4+freeRTOS+FatFs gcc環(huán)境搭建,STM32,單片機,單片機,學習,筆記

底層接口RVDS替換為GCC

const功能接口注冊問題
// __CC_ARM環(huán)境
#define REGISTER_CMD(cmd, handler, desc)             \
	const char _register_##cmd##_cmd[] = #cmd;       \
	const char _register_##cmd##_desc[] = #desc;     \
	CMD_USED cmd_t _register_##cmd SECTION("CMDS") = \
		{                                            \
			_register_##cmd##_cmd,                   \
			_register_##cmd##_desc,                  \
			(unsigned int)CMD_HASH,                  \
			(cmd_handler)&handler};
void cmd_get_time(void *param)
{
	CALENDAR_T struCal;
	if_rtc_get(&struCal);
	__printf("%d-%d-%d %d:%d:%d %d\r\n", struCal.year, struCal.month, struCal.day,
			 struCal.hour, struCal.minute, struCal.second, struCal.week);
}
REGISTER_CMD(get_time, cmd_get_time, get_time);

// __GUNC__環(huán)境需要實現(xiàn)功能注冊必須建表。
// 屏蔽原先接口
#define REGISTER_CMD(...)
// 新建關聯(lián)表
cmd_t cmd_table[] =
	{
		{"set_time", "set_time[ymdhmsw]", 0, cmd_set_time},
		{"get_time", "get_time", 0, cmd_get_time},
		{"get_sensor", "get_sensor", 0, cmd_get_sensor},
		{"set_tp", "set_tp[tp1 tp2]", 0, cmd_set_target},
		...
		{0, 0, 0, 0},
};
USB_OTG問題

移植是需要刪除一下文件:

usbh_msc_fatfs.c
usb_conf_template.h
特殊函數(shù)替換

__CC_ARM環(huán)境

// THUMB指令不支持匯編內聯(lián)
// 采用如下方法實現(xiàn)執(zhí)行匯編指令WFI
__asm void WFI_SET(void)
{
	WFI;
}
// 關閉所有中斷(但是不包括fault和NMI中斷)
__asm void INTX_DISABLE(void)
{
	CPSID I
		BX LR
}
// 開啟所有中斷
__asm void INTX_ENABLE(void)
{
	CPSIE I
		BX LR
}
// 設置棧頂?shù)刂?/span>
// addr:棧頂?shù)刂?/span>
__asm void MSR_MSP(u32 addr)
{
	MSR MSP, r0 // set Main Stack value
				 BX r14
}

__GUNC__環(huán)境

/**
 * @brief       執(zhí)行: WFI指令(執(zhí)行完該指令進入低功耗狀態(tài), 等待中斷喚醒)
 * @param       無
 * @retval      無
 */
void sys_wfi_set(void)
{
	__ASM volatile("wfi");
}

/**
 * @brief       關閉所有中斷(但是不包括fault和NMI中斷)
 * @param       無
 * @retval      無
 */
void sys_intx_disable(void)
{
	__ASM volatile("cpsid i");
}

/**
 * @brief       開啟所有中斷
 * @param       無
 * @retval      無
 */
void sys_intx_enable(void)
{
	__ASM volatile("cpsie i");
}

/**
 * @brief       設置棧頂?shù)刂? * @note        左側的紅X, 屬于MDK誤報, 實際是沒問題的
 * @param       addr: 棧頂?shù)刂? * @retval      無
 */
void sys_msr_msp(uint32_t addr)
{
	__set_MSP(addr); /* 設置棧頂?shù)刂?*/
}
IAP相關問題

bootloader工程flash最好也修改限制自身的大小限制

MEMORY
{
  RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K
  CCMRAM (xrw) : ORIGIN = 0x10000000, LENGTH = 64K
  FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 64K
}

bootloader跳轉問題
【單片機學習筆記】Windows+Vscode+STM32F4+freeRTOS+FatFs gcc環(huán)境搭建,STM32,單片機,單片機,學習,筆記

// __GUNC__環(huán)境編譯后得到的hex及bin文件無法滿足以下條件
if ((tmp & 0x2FFE0000) == 0x20000000) // 檢查棧頂?shù)刂肥欠窈戏?
目前沒有找到更好的辦法,做注釋處理。
u32 tmp = 0;
s8 iap_load_app(u32 appxaddr)
{
	//	if ((tmp & 0x2FFE0000) == 0x20000000) // 檢查棧頂?shù)刂肥欠窈戏?
	{
		jump2app = (iapfun) * (vu32 *)(appxaddr + 4); // 用戶代碼區(qū)第二個字為程序開始地址(復位地址)
		__set_MSP(appxaddr);						  /* 設置棧頂?shù)刂?*/
		// MSR_MSP(*(vu32 *)appxaddr);					  // 初始化APP堆棧指針(用戶代碼區(qū)的第一個字用于存放棧頂?shù)刂?
		jump2app(); // 跳轉到APP.
	}
	return 1;
}

application需要修改三處

// 第一處 LD文件
MEMORY
{
  RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K
  CCMRAM (xrw) : ORIGIN = 0x10000000, LENGTH = 64K
  FLASH (rx) : ORIGIN = 0x08010000, LENGTH = 960K
}

// 第二處 makefile文件
// 增加USER_VECT_TAB_ADDRESS宏定義
C_DEFS =  \
-DUSER_VECT_TAB_ADDRESS \
    
// 第三處 system_stm32f4xx.c文件
#if defined(VECT_TAB_SRAM)
#define VECT_TAB_BASE_ADDRESS SRAM_BASE /*!< Vector Table base address field. \
                                             This value must be a multiple of 0x200. */
#define VECT_TAB_OFFSET 0x00000000U     /*!< Vector Table base offset field. \
                                             This value must be a multiple of 0x200. */
#else
#define VECT_TAB_BASE_ADDRESS FLASH_BASE /*!< Vector Table base address field. \
                                              This value must be a multiple of 0x200. */
#define VECT_TAB_OFFSET 0x00010000U      /*!< Vector Table base offset field. \
                                              This value must be a multiple of 0x200. */
#endif                                   /* VECT_TAB_SRAM */
#endif                                   /* USER_VECT_TAB_ADDRESS */
關于下載

下載可以借用sergger - jlink驅動,在makefile文件添加如下:

#######################################
# download .hex/.bin by jlink
#######################################
#Your JLink installation directory
PATH_WINPC = 'C:/Program Files (x86)/SEGGER/JLink/'
#PATH_LINUX = /opt/SEGGER/JLink_V640b/JLinkExe
JK_DPATH = $(PATH_WINPC)
#Jlink script store directory
JKS_DIR = .
#Chip type
CHIP_TYPE = STM32F407VG
flash:
	@$(JK_DPATH)JLink.exe -device $(CHIP_TYPE) -if SWD -speed 4000 -autoconnect 1 -CommanderScript $(JKS_DIR)/flash.jlink
	@echo "Download Completed!"

debug:
	@$(JK_DPATH)JLinkGDBServer.exe -select USB -device $(CHIP_TYPE) -if SWD -speed auto -noir -LocalhostOnly

主要注意兩個地方:

1)驅動的安裝位置

2)JKS_DIR定義的位置,這個直接索引編譯后的hex文件

浮點數(shù)打印及格式化問題
makefile文件中去除-specs=nano.specs
# LDFLAGS += -specs=nano.specs

注意:去除后編譯大小將增加40K代碼空間

關于VSCODE編寫代碼高亮、索引、宏定義關聯(lián)問題

在.vscode文件夾下根據(jù)需要添加目錄索引及相關宏定義即可

【單片機學習筆記】Windows+Vscode+STM32F4+freeRTOS+FatFs gcc環(huán)境搭建,STM32,單片機,單片機,學習,筆記

4. 關于二次開發(fā)

二次開發(fā)新建的文件,存放于user對應的目錄下即可,無需修改makefile文件。文章來源地址http://www.zghlxwxcb.cn/news/detail-727915.html

4. 編譯、下載、清除

urien@urien MINGW64 /d/work/prj_sealer/05軟件/biolink-m4/source/application/Project (branch_sealer_gcc)
$ make -j20
....
 -mfloat-abi=hard -TSTM32F407VGTx_FLASH.ld  -lc -lm -lnosys  -Wl,-Map=build/update.map,--cref -Wl,--gc-sections -o build/update.elf
arm-none-eabi-size build/update.elf
   text    data     bss     dec     hex filename
 243772   60912  113784  418468   662a4 build/update.elf
arm-none-eabi-objcopy -O ihex build/update.elf build/update.hex
arm-none-eabi-objcopy -O binary -S build/update.elf build/update.bin

urien@urien MINGW64 /d/work/prj_sealer/05軟件/biolink-m4/source/application/Project (branch_sealer_gcc)
$
urien@urien MINGW64 /d/work/prj_sealer/05軟件/biolink-m4/source/application/Project (branch_sealer_gcc)
$ make flash
...
Script processing completed.

Download Completed!

urien@urien MINGW64 /d/work/prj_sealer/05軟件/biolink-m4/source/application/Project (branch_sealer_gcc)
$
urien@urien MINGW64 /d/work/prj_sealer/05軟件/biolink-m4/source/application/Project (branch_sealer_gcc)
$ make clean
rm -fR build

到了這里,關于【單片機學習筆記】Windows+Vscode+STM32F4+freeRTOS+FatFs gcc環(huán)境搭建的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • STM32單片機學習3--STM32控制鍵盤

    STM32單片機學習3--STM32控制鍵盤

    單片機型號:STM32F103C8T6 開發(fā)環(huán)境:Keil5 4種輸入模式 上拉輸入模式:在默認狀態(tài)下(GPIO引腳無輸入),讀取得的GPIO引腳數(shù)據(jù)為1,高電平(與Vdd相連的為上拉電阻); 下拉輸入模式:在默認狀態(tài)下(GPIO引腳無輸入),讀取得的GPIO引腳數(shù)據(jù)為0,低電平(與Vss相連的為下拉電

    2024年02月10日
    瀏覽(19)
  • STM32單片機學習4--STM32控制八段碼

    STM32單片機學習4--STM32控制八段碼

    數(shù)碼管:實際上是多個LED按照一定順序排列,并加上遮罩所構成的元件。 八段碼一般會引出9個引腳,其中7個引腳顯示數(shù)字(或某些字母),1個顯示小數(shù)點,1個作為片選端。 根據(jù)連接方式的不同,數(shù)碼管分為 共陽 和 共陰 。 共陽在這端輸出低電平時點亮,高電平時會熄滅

    2024年01月23日
    瀏覽(27)
  • 【32單片機學習】(11)STM32啟動過程詳解

    【32單片機學習】(11)STM32啟動過程詳解

    目錄 前言 一、系統(tǒng)架構 二、啟動配置 三、啟動流程 1.首先復位MCU,獲取棧頂指針MSP和PC指針的內容 2.根據(jù)PC的值找到復位中斷處理函數(shù)Reset_Handler 1.進入中斷處理函數(shù)Reset_Handler 2.進入SystemInit函數(shù) 3._main函數(shù) 3.進入main函數(shù) 總結 ?????????通過查閱官方手冊和對實際代碼進行

    2024年02月08日
    瀏覽(25)
  • 單片機 嵌入式開發(fā)軟件介紹對比與推薦(Keil、IAR、VSCode、Clion、STM32CubeIDE)

    單片機 嵌入式開發(fā)軟件介紹對比與推薦(Keil、IAR、VSCode、Clion、STM32CubeIDE)

    單片機 嵌入式開發(fā)軟件介紹對比與推薦(Keil、IAR、VSCode、Clion、STM32CubeIDE) KEI官網(wǎng):www.keil.com ????????Keil與MDK(Microcontroller Development Kit)是同一個軟件開發(fā)工具套件的不同名稱。 ????????Keil是一家德國公司,而MDK是他們開發(fā)的一款集成開發(fā)環(huán)境(IDE),通常稱為Keil

    2024年02月06日
    瀏覽(91)
  • 單片機STM32看門狗詳解(嵌入式學習)

    單片機STM32看門狗詳解(嵌入式學習)

    單片機STM32的看門狗(Watchdog)是一種硬件定時器,用于監(jiān)控系統(tǒng)的運行狀態(tài)并在出現(xiàn)故障或死鎖時采取措施以恢復正常操作。看門狗的主要功能是定期檢查系統(tǒng)是否正常運行,并在系統(tǒng)出現(xiàn)問題時觸發(fā)復位操作。 STM32系列單片機通常配備了內置的看門狗定時器(通常稱為獨立

    2024年02月13日
    瀏覽(32)
  • 洋桃電子STM32F407單片機入門教程筆記九:低功耗模式

    洋桃電子STM32F407單片機入門教程筆記九:低功耗模式

    ??此文檔作為對洋桃電子STM32F407單片機視頻的整理,B站鏈接: 第28集)低功耗模式_嗶哩嗶哩_bilibili ????????在之前的程序里應用程序在while(1)主循環(huán)中反復執(zhí)行,ARM內核以100%的功率工作。這樣的設計簡單穩(wěn)定,內核全速運行的功耗也只有幾十毫安,對于外接電源的設備

    2024年01月23日
    瀏覽(21)
  • 洋桃電子STM32F407單片機入門教程筆記一:RCC時鐘設置

    洋桃電子STM32F407單片機入門教程筆記一:RCC時鐘設置

    此文檔作為對洋桃電子STM32F407單片機視頻的整理,B站鏈接:2023更新 STM32入門F4= STM32F407單片機入門教程=WIFI連接阿里云物聯(lián)網(wǎng)+CubeMX+HAL庫+TFT彩屏+杜洋主講_嗶哩嗶哩_bilibili 由于單片機內部的時鐘結構都是相互關聯(lián)的,一個時鐘源出發(fā)可以供給多個功能,類似于樹根、樹桿、樹

    2024年02月04日
    瀏覽(21)
  • stm32畢設分享 單片機 圖像分類 智能識別機器人 - 物聯(lián)網(wǎng) 深度學習 AI

    stm32畢設分享 單片機 圖像分類 智能識別機器人 - 物聯(lián)網(wǎng) 深度學習 AI

    ?? 這兩年開始畢業(yè)設計和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設題目缺少創(chuàng)新和亮點,往往達不到畢業(yè)答辯的要求,這兩年不斷有學弟學妹告訴學長自己做的項目系統(tǒng)達不到老師的要求。 為了大家能夠順利以及最少的精力通過畢設,學長分享優(yōu)質畢業(yè)設計項目,今天

    2024年01月16日
    瀏覽(26)
  • GD32單片機和STM32單片機的對比分析

    GD32單片機和STM32單片機都是基于Arm Cortex-M3/M4內核的32位通用微控制器,廣泛應用于各種嵌入式系統(tǒng)和物聯(lián)網(wǎng)領域。兩者之間有很多相似之處,但也有一些不同之處,本文將從以下幾個方面對比分析兩者的特點、優(yōu)勢和開發(fā)成本。 GD32單片機采用的是二代的M3/M4內核,而STM32單片

    2024年02月16日
    瀏覽(27)
  • 78、基于STM32單片機學習型搬運機器人四自由度機械臂機械手遙感控制設計

    78、基于STM32單片機學習型搬運機器人四自由度機械臂機械手遙感控制設計

    畢設幫助、開題指導、技術解答(有償)見文末。 目錄 摘要 一、硬件方案 二、設計功能 三、實物圖 四、原理圖 五、PCB圖? 六、程序源碼 七、資料包括? 在當今大規(guī)模制造業(yè)中,企業(yè)為提高生產效率,保障產品質量,普遍重視生產過程的自動化程度,工業(yè)機器人作為自動

    2024年02月09日
    瀏覽(26)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領取紅包

二維碼2

領紅包