97色伦色在线综合视频,无玛专区,18videosex性欧美黑色,日韩黄色电影免费在线观看,国产精品伦理一区二区三区,在线视频欧美日韩,亚洲欧美在线中文字幕不卡

怎么建立外貿(mào)網(wǎng)站手機(jī)app開(kāi)發(fā)工具下載

鶴壁市浩天電氣有限公司 2026/01/24 11:10:32
怎么建立外貿(mào)網(wǎng)站,手機(jī)app開(kāi)發(fā)工具下載,新鄉(xiāng)網(wǎng)站開(kāi)發(fā)公司,渠道查官網(wǎng)概述 目前極海官方提供的 IDE 開(kāi)發(fā)環(huán)境有 Keil/IAR/Eclipse。都能很好的完成開(kāi)發(fā)#xff0c;但是 VS Code 配合 CMake 工具是更加“現(xiàn)代”的C/C開(kāi)發(fā)環(huán)境#xff0c;本文提供了在 VS Code 環(huán)境下的開(kāi)發(fā)經(jīng)驗(yàn)#xff0c;以供參考。準(zhǔn)備工作 必需的軟件有#xff1a;cmake: 官網(wǎng)…概述目前極海官方提供的 IDE 開(kāi)發(fā)環(huán)境有 Keil/IAR/Eclipse。都能很好的完成開(kāi)發(fā)但是 VS Code 配合 CMake 工具是更加“現(xiàn)代”的C/C開(kāi)發(fā)環(huán)境本文提供了在 VS Code 環(huán)境下的開(kāi)發(fā)經(jīng)驗(yàn)以供參考。準(zhǔn)備工作必需的軟件有cmake: 官網(wǎng) https://cmake.orgninja: 官網(wǎng) https://ninja-build.orgVS Code官網(wǎng) https://code.visualstudio.comarm-clang 編譯套件keil 自帶~請(qǐng)從上述網(wǎng)站下載所需軟件版本采用最新版即可。此外為了更好的使用 VS Code還需要安裝兩個(gè)擴(kuò)展C/C Extension PackCMake Tools這里不再贅述擴(kuò)展的安裝方法。Note:ninja 的功能也可以由 make 提供。文件組織為便于敘述本文約定了如下的文件組織形式下面一一描述各項(xiàng)內(nèi)容.vscode 文件夾VS Code 的配置文件夾。cmake 文件夾針對(duì)編譯器的必須文件。G32R501_SDK 文件夾G32R501 SDK 庫(kù)直接使用極海官網(wǎng)提供的 SDK 庫(kù)。解壓縮文件時(shí)請(qǐng)確保文件層級(jí)與上文所列一致。projects 文件夾用戶(hù)項(xiàng)目文件夾。子目錄需要滿(mǎn)足以下的目錄結(jié)構(gòu)復(fù)制├─INC---頭文件目錄└─SRC---C文件目錄如果實(shí)際目錄結(jié)構(gòu)與上面的不一致則需要修改 CMakeLists.txt 文件。CMakeLists.txt 文件CMake 構(gòu)建所必需的文件下一節(jié)會(huì)詳細(xì)說(shuō)明。詳細(xì)說(shuō)明CMakeLists.txt 文件CMake 構(gòu)建 C/C 工程是從工程根目錄或者指定的某個(gè)目錄下的 CMakeLists.txt 文件開(kāi)始。CMakeLists.txt 描述了構(gòu)建工程的源代碼編譯選項(xiàng)。CMake 工具根據(jù)這個(gè)文件生成 Makefile 或者 ninja.build 文件。最后由 make 工具或者 ninja 工具執(zhí)行編譯工作。CMakeLists.txt 遵循 CMake 相關(guān)語(yǔ)法具體可以參考官方說(shuō)明或者相應(yīng)教程。這里貼出了 CMakeLists.txt 的內(nèi)容。文中以“#”開(kāi)始的行為注釋行可以參考注釋行理解相關(guān)內(nèi)容。復(fù)制# Geehy, G32R5xxcmake_minimum_required(VERSION 3.20)cmake_policy(SET CMP0123 NEW)project(g32r5xx_fw)set(TARGET_NAME g32r5xx_fw)# 檢查 SDK 目錄set(SDK_ROOT G32R5xx_SDK)get_filename_component(SDK_ROOT_ABS${SDK_ROOT}ABSOLUTE)if(NOT EXISTS${SDK_ROOT_ABS})message(FATAL_ERRORSDK_ROOT: ${SDK_ROOT} is not exists)endif()# 檢查 APP 目錄get_filename_component(APP_ROOT_ABS${APP_ROOT}ABSOLUTE)if(NOT EXISTS${APP_ROOT_ABS})message(FATAL_ERRORAPP_ROOT: ${APP_ROOT} is not exists)endif()# 檢查分散加載文件set(SCATTER_FILE_ABS${SDK_ROOT_ABS}/device_support/g32r501/common/sct/${SCATTER_FILE})if(NOT EXISTS${SCATTER_FILE_ABS})message(FATAL_ERRORSCATTER_FILE: ${SCATTER_FILE_ABS} is not exists)endif()# 打印項(xiàng)目信息message(STATUSLIBRARY_TYPE:${LIBRARY_TYPE})message(STATUS SDK_ROOT:${SDK_ROOT_ABS})message(STATUS APP_ROOT:${APP_ROOT_ABS})message(STATUSSCATTER_FILE:${SCATTER_FILE_ABS})# 編譯選項(xiàng)set(MCPU_FLAGS-mcpucortex-m52cdecp0pacbti -mfloat-abihard -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -mlittle-endian -ffunction-sections)set(CMAKE_C_FLAGS${CMAKE_CXX_FLAGS}${MCPU_FLAGS})set(CMAKE_CXX_FLAGS${CMAKE_CXX_FLAGS}${MCPU_FLAGS})set(CMAKE_EXE_LINKER_FLAGS${CMAKE_EXE_LINKER_FLAGS}--strict --scatter${SCATTER_FILE_ABS}--info summarysizes --map --load_addr_map_info --xref --callgraph --symbols --info sizes --info totals --info unused --info veneers --list project.map)# 源碼file(GLOB APP_SRC${APP_ROOT_ABS}/source/*c)add_executable(${TARGET_NAME}${APP_SRC})set_target_properties(${TARGET_NAME}PROPERTIES SUFFIX.axf)# 宏定義target_compile_definitions(${TARGET_NAME}PRIVATE-DG32R501_EVAL -D__CORE_CPU0__ -D__G32R501XX__ -D__G32R501__ -D__ARM_ARCH_8_1M_MAIN___ -D__ARM_TARGET_COPROC)# include 目錄target_include_directories(${TARGET_NAME}PRIVATE${APP_ROOT}/INC)target_include_directories(${TARGET_NAME}PRIVATE${APP_ROOT}/include)target_include_directories(${TARGET_NAME}PRIVATE${SDK_ROOT_ABS}/device_support/g32r501/common/device/Geehy)target_include_directories(${TARGET_NAME}PRIVATE${SDK_ROOT_ABS}/device_support/g32r501/common/device/CMSIS/Core/Include)target_include_directories(${TARGET_NAME}PRIVATE${SDK_ROOT_ABS}/device_support/g32r501/common/device/Geehy/system_eval/include)target_include_directories(${TARGET_NAME}PRIVATE${SDK_ROOT_ABS}/device_support/g32r501/common/include)target_include_directories(${TARGET_NAME}PRIVATE${SDK_ROOT_ABS}/driverlib/g32r501/driverlib)target_include_directories(${TARGET_NAME}PRIVATE${SDK_ROOT_ABS}/driverlib/g32r501/driverlib/inc)# SDK 源碼file(GLOB_RECURSE CMSIS_SRC${SDK_ROOT_ABS}/device_support/g32r501/common/device/Geehy/*.c)target_sources(${TARGET_NAME}PRIVATE${CMSIS_SRC})file(GLOB DRIVERLIB_SRC${SDK_ROOT_ABS}/driverlib/g32r501/driverlib/*.c)target_sources(${TARGET_NAME}PRIVATE${DRIVERLIB_SRC})target_sources(${TARGET_NAME}PRIVATE${SDK_ROOT_ABS}/device_support/g32r501/common/source/device.c)# devicelib 類(lèi)型項(xiàng)目必須添加的源碼if(${LIBRARY_TYPE}STREQUALdevice_lib)file(GLOB DEVICE_SUPPORT_SRC${SDK_ROOT_ABS}/device_support/g32r501/common/source/*.c)list(APPEND DEVICE_SUPPORT_SRC${SDK_ROOT_ABS}/device_support/g32r501/common/g32r501_globalvariabledefs.c)target_include_directories(${TARGET_NAME}PRIVATE${SDK_ROOT_ABS}/device_support/g32r501/headers/include)target_sources(${TARGET_NAME}PRIVATE${DEVICE_SUPPORT_SRC})endif()# 生成 HEX 文件add_custom_command(TARGET${TARGET_NAME}POST_BUILDCOMMAND${FROMELF_EXECUTABLE}--i32 --output${TARGET_NAME}.hex [ DISCUZ_CODE_50 ]lt;TARGET_FILE:${TARGET_NAME}COMMENTCreating HEX file)# 生成 BIN 文件add_custom_command(TARGET${TARGET_NAME}POST_BUILDCOMMAND${FROMELF_EXECUTABLE}--bin --output${TARGET_NAME}.bin [ DISCUZ_CODE_50 ]lt;TARGET_FILE:${TARGET_NAME}COMMENTCreating HEX file)工程構(gòu)建使用 CMake 搭建的開(kāi)發(fā)C/C工程編譯前需要先進(jìn)行配置configure再進(jìn)行編譯。配置執(zhí)行類(lèi)似下面的命令行可以配置一個(gè)工程復(fù)制cmake-DCMAKE_BUILD_TYPE:STRINGDebug-DCMAKE_EXPORT_COMPILE_COMMANDS:BOOLTRUE-DCMAKE_TOOLCHAIN_FILE:STRINGcmake/g32r501.cmake-DLIBRARY_TYPE:STRINGdevice_lib-DSCATTER_FILE:STRINGg32r501xe_cbus_flash.sct-DAPP_ROOT:STRINGprojects/app1-B_build-GNinja參數(shù)說(shuō)明CMAKE_EXPORT_COMPILE_COMMANDS:BOOLTRUE 可選參數(shù)用于生成 compile_commands.json 文件便于 VS Code 開(kāi)發(fā)使用。CMAKE_TOOLCHAIN_FILE:STRINGcmake/g32r501.cmake 必選參數(shù)指定 MCU 是 g32r501。CMAKE_BUILD_TYPE:STRINGDebug 構(gòu)建類(lèi)型可選的值有DebugReleaseRelWithDebInfo 和 MinSizeRel具體參考 cmake 文檔。LIBRARY_TYPE:STRINGdevice_lib SDK 庫(kù)類(lèi)型可選值有device_libdriver_lib。SCATTER_FILE:STRINGg32r501xe_cbus_flash.sct 分散加載文件的文件名參考 G32R501_SDK*device_supportg32r501commonsct 目錄。APP_ROOT:STRINGprojects/app1 用戶(hù)項(xiàng)目目錄打開(kāi)命令行窗口切換到工程根目錄。執(zhí)行上述命令前請(qǐng)先定義一個(gè)環(huán)境變量ARMCLANG_PATH值是 armclang.exe 所在目錄復(fù)制setARMCLANG_PATHC:UsersUSER_NAMEAppDataLocalKeil_v5ARMARMCLANGin其中 C:UsersUSER_NAMEAppDataLocalKeil_v5ARMARMCLANGin 就是我的電腦上 ARM-CLANG 編譯器的目錄請(qǐng)?zhí)鎿Q成實(shí)際值。編譯在命令行里執(zhí)行如下命令就可以編譯整個(gè)工程復(fù)制ninja-C _build編譯的固件會(huì)在 _build 文件夾下g32r5xx_fw.hex 和 g32r5xx_fw.bin。在 VS Code 里編輯和編譯“一個(gè)小手術(shù)”為了能讓 VS Code 更好的工作我們?cè)诖蜷_(kāi) VS Code 前先弄好 VS Code 的配置。在 .vsode 下用文本編輯器創(chuàng)建 settings.json 文件并寫(xiě)入如下內(nèi)容文件中cmake.configureArgs部分內(nèi)容與前文所述的“配置”部分大致相同作用也就很明顯了。這些參數(shù)控制著 VS Code 更好的為我們工作。經(jīng)過(guò)前面的步驟就可以啟動(dòng) VS Code 打開(kāi)工程所在根目錄就可以在 VS Code 里愉快地編碼了。更便捷地使用 VS CodeVS Code 提供了“任務(wù)”機(jī)制能讓我們更好的進(jìn)行開(kāi)發(fā)。這里列舉作者認(rèn)為非常有助于提高效率的一個(gè)功能實(shí)現(xiàn)“一鍵下載”。點(diǎn)擊 VS Code 菜單【終端】→ 【配置任務(wù)...】在彈出的下拉列表里選擇【使用模板創(chuàng)建 tasks.json 文件】→ 【Others 運(yùn)行任意外部命令的示例】。操作完成后會(huì)在 .vscode 目錄下生成一個(gè) tasks.json 文件并打開(kāi)。編輯這個(gè)文件tasks.json 文件里 tasks列表定義了若干可執(zhí)行的命令及響應(yīng)的命令參數(shù)。上述示例中名為 “Flash(MDK)” 的任務(wù)實(shí)際調(diào)用 keil 進(jìn)行燒錄“Flash(JLINK)”任務(wù)是調(diào)用 JLink 進(jìn)行燒錄。開(kāi)發(fā)人員可以照例編排其他任務(wù)以提高開(kāi)發(fā)效率。附錄CMakeLists.txt 一些語(yǔ)法變量復(fù)制set(TARGET_NAME g32r5xx_fw)上面的 set 語(yǔ)句定義了一個(gè)名為 TARGET_NAME 的變量賦值g32r5xx_fw。需要使用變量的值需要用 ${} 包含變量名如${TARGET_NAME}。顯示/打印信息復(fù)制message(FATAL_ERRORSCATTER_FILE ${SCATTER_FILE} is not exists)message(STATUSTOP_DIR:${TOP_DIR})message 可以在配置過(guò)程中顯示/打印一些信息。如果是 FATAL_ERROR 類(lèi)型的信息表明發(fā)生嚴(yán)重錯(cuò)誤配置構(gòu)建過(guò)程立即結(jié)束配置失敗。獲取文件夾下的源文件列表復(fù)制file(GLOB APP_SRC ${APP_ROOT}/SRC/*.c)file(GLOB_RECURSE APP_SRC ${APP_ROOT}/SRC/*.c)第一句獲取 ${APP_ROOT}/SRC 目錄下全部的 C 代碼文件。第二句獲取 ${APP_ROOT}/SRC 目錄及其子目錄下全部的 C 代碼文件遞歸。如果只是個(gè)別文件可以這樣寫(xiě)復(fù)制set(APP_SRC${APP_ROOT}/SRC/a.c${APP_ROOT}/SRC/b.c${APP_ROOT}/SRC/c.c)一些內(nèi)置的變量cmake 有一些有用的內(nèi)置變量CMAKE_SOURCE_DIR指向頂級(jí) CMakeLists.txt 文件所在的目錄也稱(chēng)為源目錄。CMAKE_BINARY_DIR指向構(gòu)建目錄即 CMake 構(gòu)建的輸出目錄。CMAKE_CURRENT_LIST_DIR: 當(dāng)前 CMakeLists.txt 所在目錄。CMAKE_BUILD_TYPE指定構(gòu)建類(lèi)型如 Debug、Release、RelWithDebInfo 和 MinSizeRel。/// 全文完。---------------------作者wangqy_ic鏈接https://bbs.21ic.com/forum.php?modviewthreadtid3456794來(lái)源21ic.com此文章已獲得原創(chuàng)/原創(chuàng)獎(jiǎng)標(biāo)簽著作權(quán)歸21ic所有任何人未經(jīng)允許禁止轉(zhuǎn)載。
版權(quán)聲明: 本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)聯(lián)系我們進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

學(xué)習(xí)php網(wǎng)站開(kāi)發(fā)用自己照片做衣服 杯子的是哪個(gè)網(wǎng)站

學(xué)習(xí)php網(wǎng)站開(kāi)發(fā),用自己照片做衣服 杯子的是哪個(gè)網(wǎng)站,網(wǎng)站的網(wǎng)絡(luò)推廣,前端做微網(wǎng)站構(gòu)建數(shù)字化時(shí)代的質(zhì)量通行證 一、引言#xff1a;兼容性測(cè)試的時(shí)代意義 在移動(dòng)互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、跨平臺(tái)應(yīng)用爆發(fā)的今

2026/01/23 07:58:01

怎樣做同城配送網(wǎng)站網(wǎng)絡(luò)加速器免費(fèi)

怎樣做同城配送網(wǎng)站,網(wǎng)絡(luò)加速器免費(fèi),閔行網(wǎng)絡(luò)推廣公司,泰州注冊(cè)公司你是否曾在B站海量視頻中迷失方向#xff1f;面對(duì)眾多UP主#xff0c;如何快速識(shí)別優(yōu)質(zhì)內(nèi)容創(chuàng)作者#xff1f;BiliScope作

2026/01/23 10:34:01

手機(jī)網(wǎng)站開(kāi)發(fā)需求 百度云盤(pán)活動(dòng)推廣軟文范例

手機(jī)網(wǎng)站開(kāi)發(fā)需求 百度云盤(pán),活動(dòng)推廣軟文范例,深圳 建設(shè)銀行國(guó)際互聯(lián)網(wǎng)站,網(wǎng)站建設(shè) 域名在5G基站密集部署、低軌衛(wèi)星互聯(lián)網(wǎng)加速落地、智能汽車(chē)邁向全域感知的時(shí)代#xff0c;通信設(shè)備的終極考驗(yàn)往往發(fā)生

2026/01/23 01:42:01

效果圖網(wǎng)站名字網(wǎng)上商城下載

效果圖網(wǎng)站名字,網(wǎng)上商城下載,免費(fèi)動(dòng)態(tài)素材網(wǎng)站,手機(jī)免費(fèi)建設(shè)網(wǎng)站制作在數(shù)字營(yíng)銷(xiāo)的背景下#xff0c;理解長(zhǎng)尾關(guān)鍵詞的應(yīng)用與探索至關(guān)重要。這些關(guān)鍵詞通常由三個(gè)或更多單詞構(gòu)成#xff0c;精準(zhǔn)地捕捉用戶(hù)需

2026/01/23 02:51:01