目前的AM32的APP固件包含了keil工程,但是uboot还没看到,对于习惯使用keil的新用户,调试起来会有些不习惯,本文将简单描述怎么新建一个keil的uboot工程,以AT32F421为例。

一、新建目录

新建一个目录Keil_Projects

二、新建工程

三、添加文件

这个启动文件要用AM32\Mcu\f421\Startup\mdk里面的文件,这个才是给keil编译使用的

否则会如下报错

.\Objects\AT32F421_Uboot_PA2.sct(7): error: L6236E: No section matches selector - no section to be FIRST/LAST.

添加完后是这个样子的

四、修改编译参数

1、Device

2、Target

3、Output

4、Listing

5、User

6、C/C++

7、ASM

8、Linker


五、修改代码

static inline void jump_to_application(void)
{__disable_irq();bl_timer_disable();const uint32_t app_address = MCU_FLASH_START + FIRMWARE_RELATIVE_START;const uint32_t *app_data = (const uint32_t *)app_address;const uint32_t stack_top = app_data[0];const uint32_t JumpAddress = app_data[1];// setup sp, msp and jump
#ifdef KEIL__asm volatile(
#elseasm volatile(
#endif"mov sp, %0	\n""msr msp, %0	\n""bx	%1	\n": : "r"(stack_top), "r"(JumpAddress) :);
}

五、准备完成,可以编译了

六、工程文件

不想搞附件了,直接粘上工程文件文本,需要的话拷贝保存

1、AT32F421_Uboot.uvprojx

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd"><SchemaVersion>2.1</SchemaVersion><Header>### uVision Project, (C) Keil Software</Header><Targets><Target><TargetName>AT32_F421_PA2</TargetName><ToolsetNumber>0x4</ToolsetNumber><ToolsetName>ARM-ADS</ToolsetName><pCCUsed>6190000::V6.19::ARMCLANG</pCCUsed><uAC6>1</uAC6><TargetOption><TargetCommonOption><Device>-AT32F421K8U7</Device><Vendor>ArteryTek</Vendor><PackID>ArteryTek.AT32F421_DFP.2.1.8</PackID><Cpu>IRAM(0x20000000,0x4000) IROM(0x08000000,0x10000) CPUTYPE("Cortex-M4") CLOCK(12000000) ELITTLE</Cpu><FlashUtilSpec></FlashUtilSpec><StartupFile></StartupFile><FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0AT32F421_64 -FS08000000 -FL010000 -FP0($$Device:-AT32F421K8U7$Flash\AT32F421_64.FLM))</FlashDriverDll><DeviceId>0</DeviceId><RegisterFile>$$Device:-AT32F421K8U7$Device\Include\at32f421.h</RegisterFile><MemoryEnv></MemoryEnv><Cmp></Cmp><Asm></Asm><Linker></Linker><OHString></OHString><InfinionOptionDll></InfinionOptionDll><SLE66CMisc></SLE66CMisc><SLE66AMisc></SLE66AMisc><SLE66LinkerMisc></SLE66LinkerMisc><SFDFile>$$Device:-AT32F421K8U7$SVD\AT32F421xx_v2.svd</SFDFile><bCustSvd>0</bCustSvd><UseEnv>0</UseEnv><BinPath></BinPath><IncludePath></IncludePath><LibPath></LibPath><RegisterFilePath></RegisterFilePath><DBRegisterFilePath></DBRegisterFilePath><TargetStatus><Error>0</Error><ExitCodeStop>0</ExitCodeStop><ButtonStop>0</ButtonStop><NotGenerated>0</NotGenerated><InvalidFlash>1</InvalidFlash></TargetStatus><OutputDirectory>.\Objects\</OutputDirectory><OutputName>AT32F421_Uboot_PA2</OutputName><CreateExecutable>1</CreateExecutable><CreateLib>0</CreateLib><CreateHexFile>1</CreateHexFile><DebugInformation>1</DebugInformation><BrowseInformation>1</BrowseInformation><ListingPath>.\Listings\</ListingPath><HexFormatSelection>1</HexFormatSelection><Merge32K>0</Merge32K><CreateBatchFile>0</CreateBatchFile><BeforeCompile><RunUserProg1>0</RunUserProg1><RunUserProg2>0</RunUserProg2><UserProg1Name></UserProg1Name><UserProg2Name></UserProg2Name><UserProg1Dos16Mode>0</UserProg1Dos16Mode><UserProg2Dos16Mode>0</UserProg2Dos16Mode><nStopU1X>0</nStopU1X><nStopU2X>0</nStopU2X></BeforeCompile><BeforeMake><RunUserProg1>0</RunUserProg1><RunUserProg2>0</RunUserProg2><UserProg1Name></UserProg1Name><UserProg2Name></UserProg2Name><UserProg1Dos16Mode>0</UserProg1Dos16Mode><UserProg2Dos16Mode>0</UserProg2Dos16Mode><nStopB1X>0</nStopB1X><nStopB2X>0</nStopB2X></BeforeMake><AfterMake><RunUserProg1>0</RunUserProg1><RunUserProg2>0</RunUserProg2><UserProg1Name></UserProg1Name><UserProg2Name></UserProg2Name><UserProg1Dos16Mode>0</UserProg1Dos16Mode><UserProg2Dos16Mode>0</UserProg2Dos16Mode><nStopA1X>0</nStopA1X><nStopA2X>0</nStopA2X></AfterMake><SelectedForBatchBuild>0</SelectedForBatchBuild><SVCSIdString></SVCSIdString></TargetCommonOption><CommonProperty><UseCPPCompiler>0</UseCPPCompiler><RVCTCodeConst>0</RVCTCodeConst><RVCTZI>0</RVCTZI><RVCTOtherData>0</RVCTOtherData><ModuleSelection>0</ModuleSelection><IncludeInBuild>1</IncludeInBuild><AlwaysBuild>0</AlwaysBuild><GenerateAssemblyFile>0</GenerateAssemblyFile><AssembleAssemblyFile>0</AssembleAssemblyFile><PublicsOnly>0</PublicsOnly><StopOnExitCode>3</StopOnExitCode><CustomArgument></CustomArgument><IncludeLibraryModules></IncludeLibraryModules><ComprImg>1</ComprImg></CommonProperty><DllOption><SimDllName>SARMCM3.DLL</SimDllName><SimDllArguments> -REMAP -MPU</SimDllArguments><SimDlgDll>DCM.DLL</SimDlgDll><SimDlgDllArguments>-pCM4</SimDlgDllArguments><TargetDllName>SARMCM3.DLL</TargetDllName><TargetDllArguments> -MPU</TargetDllArguments><TargetDlgDll>TCM.DLL</TargetDlgDll><TargetDlgDllArguments>-pCM4</TargetDlgDllArguments></DllOption><DebugOption><OPTHX><HexSelection>1</HexSelection><HexRangeLowAddress>0</HexRangeLowAddress><HexRangeHighAddress>0</HexRangeHighAddress><HexOffset>0</HexOffset><Oh166RecLen>16</Oh166RecLen></OPTHX></DebugOption><Utilities><Flash1><UseTargetDll>1</UseTargetDll><UseExternalTool>0</UseExternalTool><RunIndependent>0</RunIndependent><UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging><Capability>1</Capability><DriverSelection>4096</DriverSelection></Flash1><bUseTDR>1</bUseTDR><Flash2>BIN\UL2CM3.DLL</Flash2><Flash3>"" ()</Flash3><Flash4></Flash4><pFcarmOut></pFcarmOut><pFcarmGrp></pFcarmGrp><pFcArmRoot></pFcArmRoot><FcArmLst>0</FcArmLst></Utilities><TargetArmAds><ArmAdsMisc><GenerateListings>0</GenerateListings><asHll>1</asHll><asAsm>1</asAsm><asMacX>1</asMacX><asSyms>1</asSyms><asFals>1</asFals><asDbgD>1</asDbgD><asForm>1</asForm><ldLst>0</ldLst><ldmm>1</ldmm><ldXref>1</ldXref><BigEnd>0</BigEnd><AdsALst>1</AdsALst><AdsACrf>1</AdsACrf><AdsANop>0</AdsANop><AdsANot>0</AdsANot><AdsLLst>1</AdsLLst><AdsLmap>1</AdsLmap><AdsLcgr>1</AdsLcgr><AdsLsym>1</AdsLsym><AdsLszi>1</AdsLszi><AdsLtoi>1</AdsLtoi><AdsLsun>1</AdsLsun><AdsLven>1</AdsLven><AdsLsxf>1</AdsLsxf><RvctClst>0</RvctClst><GenPPlst>0</GenPPlst><AdsCpuType>"Cortex-M4"</AdsCpuType><RvctDeviceName></RvctDeviceName><mOS>0</mOS><uocRom>0</uocRom><uocRam>0</uocRam><hadIROM>1</hadIROM><hadIRAM>1</hadIRAM><hadXRAM>0</hadXRAM><uocXRam>0</uocXRam><RvdsVP>0</RvdsVP><RvdsMve>0</RvdsMve><RvdsCdeCp>0</RvdsCdeCp><nBranchProt>0</nBranchProt><hadIRAM2>0</hadIRAM2><hadIROM2>0</hadIROM2><StupSel>8</StupSel><useUlib>1</useUlib><EndSel>0</EndSel><uLtcg>0</uLtcg><nSecure>0</nSecure><RoSelD>3</RoSelD><RwSelD>3</RwSelD><CodeSel>0</CodeSel><OptFeed>0</OptFeed><NoZi1>0</NoZi1><NoZi2>0</NoZi2><NoZi3>0</NoZi3><NoZi4>0</NoZi4><NoZi5>0</NoZi5><Ro1Chk>0</Ro1Chk><Ro2Chk>0</Ro2Chk><Ro3Chk>0</Ro3Chk><Ir1Chk>1</Ir1Chk><Ir2Chk>0</Ir2Chk><Ra1Chk>0</Ra1Chk><Ra2Chk>0</Ra2Chk><Ra3Chk>0</Ra3Chk><Im1Chk>1</Im1Chk><Im2Chk>0</Im2Chk><OnChipMemories><Ocm1><Type>0</Type><StartAddress>0x0</StartAddress><Size>0x0</Size></Ocm1><Ocm2><Type>0</Type><StartAddress>0x0</StartAddress><Size>0x0</Size></Ocm2><Ocm3><Type>0</Type><StartAddress>0x0</StartAddress><Size>0x0</Size></Ocm3><Ocm4><Type>0</Type><StartAddress>0x0</StartAddress><Size>0x0</Size></Ocm4><Ocm5><Type>0</Type><StartAddress>0x0</StartAddress><Size>0x0</Size></Ocm5><Ocm6><Type>0</Type><StartAddress>0x0</StartAddress><Size>0x0</Size></Ocm6><IRAM><Type>0</Type><StartAddress>0x20000000</StartAddress><Size>0x4000</Size></IRAM><IROM><Type>1</Type><StartAddress>0x8000000</StartAddress><Size>0x10000</Size></IROM><XRAM><Type>0</Type><StartAddress>0x0</StartAddress><Size>0x0</Size></XRAM><OCR_RVCT1><Type>1</Type><StartAddress>0x0</StartAddress><Size>0x0</Size></OCR_RVCT1><OCR_RVCT2><Type>1</Type><StartAddress>0x0</StartAddress><Size>0x0</Size></OCR_RVCT2><OCR_RVCT3><Type>1</Type><StartAddress>0x0</StartAddress><Size>0x0</Size></OCR_RVCT3><OCR_RVCT4><Type>1</Type><StartAddress>0x8000000</StartAddress><Size>0x1000</Size></OCR_RVCT4><OCR_RVCT5><Type>1</Type><StartAddress>0x0</StartAddress><Size>0x0</Size></OCR_RVCT5><OCR_RVCT6><Type>0</Type><StartAddress>0x0</StartAddress><Size>0x0</Size></OCR_RVCT6><OCR_RVCT7><Type>0</Type><StartAddress>0x0</StartAddress><Size>0x0</Size></OCR_RVCT7><OCR_RVCT8><Type>0</Type><StartAddress>0x0</StartAddress><Size>0x0</Size></OCR_RVCT8><OCR_RVCT9><Type>0</Type><StartAddress>0x20000000</StartAddress><Size>0x4000</Size></OCR_RVCT9><OCR_RVCT10><Type>0</Type><StartAddress>0x0</StartAddress><Size>0x0</Size></OCR_RVCT10></OnChipMemories><RvctStartVector></RvctStartVector></ArmAdsMisc><Cads><interw>1</interw><Optim>7</Optim><oTime>0</oTime><SplitLS>0</SplitLS><OneElfS>1</OneElfS><Strict>0</Strict><EnumInt>0</EnumInt><PlainCh>0</PlainCh><Ropi>0</Ropi><Rwpi>0</Rwpi><wLevel>3</wLevel><uThumb>0</uThumb><uSurpInc>0</uSurpInc><uC99>1</uC99><uGnu>1</uGnu><useXO>0</useXO><v6Lang>3</v6Lang><v6LangP>5</v6LangP><vShortEn>1</vShortEn><vShortWch>1</vShortWch><v6Lto>0</v6Lto><v6WtE>0</v6WtE><v6Rtti>0</v6Rtti><VariousControls><MiscControls></MiscControls><Define>AT32F421K8U7,USE_STDPERIPH_DRIVER, USE_PA2,KEIL</Define><Undefine></Undefine><IncludePath>..\Inc;..\mcu\f421\Inc;..\Mcu\f421\Drivers\drivers\inc;..\Mcu\f421\Drivers\CMSIS\cm4\device_support;..\Mcu\f421\Drivers\CMSIS\cm4\core_support</IncludePath></VariousControls></Cads><Aads><interw>1</interw><Ropi>0</Ropi><Rwpi>0</Rwpi><thumb>0</thumb><SplitLS>0</SplitLS><SwStkChk>0</SwStkChk><NoWarn>0</NoWarn><uSurpInc>0</uSurpInc><useXO>0</useXO><ClangAsOpt>1</ClangAsOpt><VariousControls><MiscControls></MiscControls><Define></Define><Undefine></Undefine><IncludePath></IncludePath></VariousControls></Aads><LDads><umfTarg>1</umfTarg><Ropi>0</Ropi><Rwpi>0</Rwpi><noStLib>0</noStLib><RepFail>1</RepFail><useFile>0</useFile><TextAddressRange>0x08000000</TextAddressRange><DataAddressRange>0x20000000</DataAddressRange><pXoBase></pXoBase><ScatterFile></ScatterFile><IncludeLibs></IncludeLibs><IncludeLibsPath></IncludeLibsPath><Misc></Misc><LinkerInputFile></LinkerInputFile><DisabledWarnings></DisabledWarnings></LDads></TargetArmAds></TargetOption><Groups><Group><GroupName>Src</GroupName><Files><File><FileName>main.c</FileName><FileType>1</FileType><FilePath>..\bootloader\main.c</FilePath></File></Files></Group><Group><GroupName>Drivers</GroupName><Files><File><FileName>at32f421_adc.c</FileName><FileType>1</FileType><FilePath>..\Mcu\f421\Drivers\drivers\src\at32f421_adc.c</FilePath></File><File><FileName>at32f421_cmp.c</FileName><FileType>1</FileType><FilePath>..\Mcu\f421\Drivers\drivers\src\at32f421_cmp.c</FilePath></File><File><FileName>at32f421_crc.c</FileName><FileType>1</FileType><FilePath>..\Mcu\f421\Drivers\drivers\src\at32f421_crc.c</FilePath></File><File><FileName>at32f421_crm.c</FileName><FileType>1</FileType><FilePath>..\Mcu\f421\Drivers\drivers\src\at32f421_crm.c</FilePath></File><File><FileName>at32f421_debug.c</FileName><FileType>1</FileType><FilePath>..\Mcu\f421\Drivers\drivers\src\at32f421_debug.c</FilePath></File><File><FileName>at32f421_dma.c</FileName><FileType>1</FileType><FilePath>..\Mcu\f421\Drivers\drivers\src\at32f421_dma.c</FilePath></File><File><FileName>at32f421_ertc.c</FileName><FileType>1</FileType><FilePath>..\Mcu\f421\Drivers\drivers\src\at32f421_ertc.c</FilePath></File><File><FileName>at32f421_exint.c</FileName><FileType>1</FileType><FilePath>..\Mcu\f421\Drivers\drivers\src\at32f421_exint.c</FilePath></File><File><FileName>at32f421_flash.c</FileName><FileType>1</FileType><FilePath>..\Mcu\f421\Drivers\drivers\src\at32f421_flash.c</FilePath></File><File><FileName>at32f421_gpio.c</FileName><FileType>1</FileType><FilePath>..\Mcu\f421\Drivers\drivers\src\at32f421_gpio.c</FilePath></File><File><FileName>at32f421_i2c.c</FileName><FileType>1</FileType><FilePath>..\Mcu\f421\Drivers\drivers\src\at32f421_i2c.c</FilePath></File><File><FileName>at32f421_misc.c</FileName><FileType>1</FileType><FilePath>..\Mcu\f421\Drivers\drivers\src\at32f421_misc.c</FilePath></File><File><FileName>at32f421_pwc.c</FileName><FileType>1</FileType><FilePath>..\Mcu\f421\Drivers\drivers\src\at32f421_pwc.c</FilePath></File><File><FileName>at32f421_scfg.c</FileName><FileType>1</FileType><FilePath>..\Mcu\f421\Drivers\drivers\src\at32f421_scfg.c</FilePath></File><File><FileName>at32f421_spi.c</FileName><FileType>1</FileType><FilePath>..\Mcu\f421\Drivers\drivers\src\at32f421_spi.c</FilePath></File><File><FileName>at32f421_tmr.c</FileName><FileType>1</FileType><FilePath>..\Mcu\f421\Drivers\drivers\src\at32f421_tmr.c</FilePath></File><File><FileName>at32f421_usart.c</FileName><FileType>1</FileType><FilePath>..\Mcu\f421\Drivers\drivers\src\at32f421_usart.c</FilePath></File><File><FileName>at32f421_wdt.c</FileName><FileType>1</FileType><FilePath>..\Mcu\f421\Drivers\drivers\src\at32f421_wdt.c</FilePath></File><File><FileName>at32f421_wwdt.c</FileName><FileType>1</FileType><FilePath>..\Mcu\f421\Drivers\drivers\src\at32f421_wwdt.c</FilePath></File></Files></Group><Group><GroupName>F421</GroupName><Files><File><FileName>eeprom.c</FileName><FileType>1</FileType><FilePath>..\Mcu\f421\Src\eeprom.c</FilePath></File></Files></Group><Group><GroupName>Startup</GroupName><Files><File><FileName>startup_at32f421.s</FileName><FileType>2</FileType><FilePath>..\Mcu\f421\Startup\mdk\startup_at32f421.s</FilePath></File></Files></Group><Group><GroupName>CMSIS</GroupName></Group></Groups></Target></Targets><RTE><apis/><components/><files/></RTE><LayerInfo><Layers><Layer><LayName>AT32F421_Uboot</LayName><LayPrjMark>1</LayPrjMark></Layer></Layers></LayerInfo></Project>

2、AT32F421_Uboot.uvoptx

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd"><SchemaVersion>1.0</SchemaVersion><Header>### uVision Project, (C) Keil Software</Header><Extensions><cExt>*.c</cExt><aExt>*.s*; *.src; *.a*</aExt><oExt>*.obj; *.o</oExt><lExt>*.lib</lExt><tExt>*.txt; *.h; *.inc; *.md</tExt><pExt>*.plm</pExt><CppX>*.cpp; *.cc; *.cxx</CppX><nMigrate>0</nMigrate></Extensions><DaveTm><dwLowDateTime>0</dwLowDateTime><dwHighDateTime>0</dwHighDateTime></DaveTm><Target><TargetName>AT32_F421_PA2</TargetName><ToolsetNumber>0x4</ToolsetNumber><ToolsetName>ARM-ADS</ToolsetName><TargetOption><CLKADS>12000000</CLKADS><OPTTT><gFlags>1</gFlags><BeepAtEnd>1</BeepAtEnd><RunSim>0</RunSim><RunTarget>1</RunTarget><RunAbUc>0</RunAbUc></OPTTT><OPTHX><HexSelection>1</HexSelection><FlashByte>65535</FlashByte><HexRangeLowAddress>0</HexRangeLowAddress><HexRangeHighAddress>0</HexRangeHighAddress><HexOffset>0</HexOffset></OPTHX><OPTLEX><PageWidth>79</PageWidth><PageLength>66</PageLength><TabStop>8</TabStop><ListingPath>.\Listings\</ListingPath></OPTLEX><ListingPage><CreateCListing>1</CreateCListing><CreateAListing>1</CreateAListing><CreateLListing>1</CreateLListing><CreateIListing>0</CreateIListing><AsmCond>1</AsmCond><AsmSymb>1</AsmSymb><AsmXref>0</AsmXref><CCond>1</CCond><CCode>0</CCode><CListInc>0</CListInc><CSymb>0</CSymb><LinkerCodeListing>0</LinkerCodeListing></ListingPage><OPTXL><LMap>1</LMap><LComments>1</LComments><LGenerateSymbols>1</LGenerateSymbols><LLibSym>1</LLibSym><LLines>1</LLines><LLocSym>1</LLocSym><LPubSym>1</LPubSym><LXref>0</LXref><LExpSel>0</LExpSel></OPTXL><OPTFL><tvExp>1</tvExp><tvExpOptDlg>0</tvExpOptDlg><IsCurrentTarget>1</IsCurrentTarget></OPTFL><CpuCode>255</CpuCode><DebugOpt><uSim>0</uSim><uTrg>1</uTrg><sLdApp>1</sLdApp><sGomain>1</sGomain><sRbreak>1</sRbreak><sRwatch>1</sRwatch><sRmem>1</sRmem><sRfunc>1</sRfunc><sRbox>1</sRbox><tLdApp>1</tLdApp><tGomain>1</tGomain><tRbreak>1</tRbreak><tRwatch>1</tRwatch><tRmem>1</tRmem><tRfunc>0</tRfunc><tRbox>1</tRbox><tRtrace>1</tRtrace><sRSysVw>1</sRSysVw><tRSysVw>1</tRSysVw><sRunDeb>0</sRunDeb><sLrtime>0</sLrtime><bEvRecOn>1</bEvRecOn><bSchkAxf>0</bSchkAxf><bTchkAxf>0</bTchkAxf><nTsel>0</nTsel><sDll></sDll><sDllPa></sDllPa><sDlgDll></sDlgDll><sDlgPa></sDlgPa><sIfile></sIfile><tDll></tDll><tDllPa></tDllPa><tDlgDll></tDlgDll><tDlgPa></tDlgPa><tIfile></tIfile><pMon>BIN\UL2CM3.DLL</pMon></DebugOpt><TargetDriverDllRegistry><SetRegEntry><Number>0</Number><Key>UL2CM3</Key><Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0AT32F421_64 -FS08000000 -FL010000 -FP0($$Device:-AT32F421K8U7$Flash\AT32F421_64.FLM))</Name></SetRegEntry></TargetDriverDllRegistry><Breakpoint/><Tracepoint><THDelay>0</THDelay></Tracepoint><DebugFlag><trace>0</trace><periodic>1</periodic><aLwin>0</aLwin><aCover>0</aCover><aSer1>0</aSer1><aSer2>0</aSer2><aPa>0</aPa><viewmode>0</viewmode><vrSel>0</vrSel><aSym>0</aSym><aTbox>0</aTbox><AscS1>0</AscS1><AscS2>0</AscS2><AscS3>0</AscS3><aSer3>0</aSer3><eProf>0</eProf><aLa>0</aLa><aPa1>0</aPa1><AscS4>0</AscS4><aSer4>0</aSer4><StkLoc>0</StkLoc><TrcWin>0</TrcWin><newCpu>0</newCpu><uProt>0</uProt></DebugFlag><LintExecutable></LintExecutable><LintConfigFile></LintConfigFile><bLintAuto>0</bLintAuto><bAutoGenD>0</bAutoGenD><LntExFlags>0</LntExFlags><pMisraName></pMisraName><pszMrule></pszMrule><pSingCmds></pSingCmds><pMultCmds></pMultCmds><pMisraNamep></pMisraNamep><pszMrulep></pszMrulep><pSingCmdsp></pSingCmdsp><pMultCmdsp></pMultCmdsp></TargetOption></Target><Group><GroupName>Src</GroupName><tvExp>1</tvExp><tvExpOptDlg>0</tvExpOptDlg><cbSel>0</cbSel><RteFlg>0</RteFlg><File><GroupNumber>1</GroupNumber><FileNumber>1</FileNumber><FileType>1</FileType><tvExp>0</tvExp><tvExpOptDlg>0</tvExpOptDlg><bDave2>0</bDave2><PathWithFileName>..\bootloader\main.c</PathWithFileName><FilenameWithoutPath>main.c</FilenameWithoutPath><RteFlg>0</RteFlg><bShared>0</bShared></File></Group><Group><GroupName>Drivers</GroupName><tvExp>1</tvExp><tvExpOptDlg>0</tvExpOptDlg><cbSel>0</cbSel><RteFlg>0</RteFlg><File><GroupNumber>2</GroupNumber><FileNumber>2</FileNumber><FileType>1</FileType><tvExp>0</tvExp><tvExpOptDlg>0</tvExpOptDlg><bDave2>0</bDave2><PathWithFileName>..\Mcu\f421\Drivers\drivers\src\at32f421_adc.c</PathWithFileName><FilenameWithoutPath>at32f421_adc.c</FilenameWithoutPath><RteFlg>0</RteFlg><bShared>0</bShared></File><File><GroupNumber>2</GroupNumber><FileNumber>3</FileNumber><FileType>1</FileType><tvExp>0</tvExp><tvExpOptDlg>0</tvExpOptDlg><bDave2>0</bDave2><PathWithFileName>..\Mcu\f421\Drivers\drivers\src\at32f421_cmp.c</PathWithFileName><FilenameWithoutPath>at32f421_cmp.c</FilenameWithoutPath><RteFlg>0</RteFlg><bShared>0</bShared></File><File><GroupNumber>2</GroupNumber><FileNumber>4</FileNumber><FileType>1</FileType><tvExp>0</tvExp><tvExpOptDlg>0</tvExpOptDlg><bDave2>0</bDave2><PathWithFileName>..\Mcu\f421\Drivers\drivers\src\at32f421_crc.c</PathWithFileName><FilenameWithoutPath>at32f421_crc.c</FilenameWithoutPath><RteFlg>0</RteFlg><bShared>0</bShared></File><File><GroupNumber>2</GroupNumber><FileNumber>5</FileNumber><FileType>1</FileType><tvExp>0</tvExp><tvExpOptDlg>0</tvExpOptDlg><bDave2>0</bDave2><PathWithFileName>..\Mcu\f421\Drivers\drivers\src\at32f421_crm.c</PathWithFileName><FilenameWithoutPath>at32f421_crm.c</FilenameWithoutPath><RteFlg>0</RteFlg><bShared>0</bShared></File><File><GroupNumber>2</GroupNumber><FileNumber>6</FileNumber><FileType>1</FileType><tvExp>0</tvExp><tvExpOptDlg>0</tvExpOptDlg><bDave2>0</bDave2><PathWithFileName>..\Mcu\f421\Drivers\drivers\src\at32f421_debug.c</PathWithFileName><FilenameWithoutPath>at32f421_debug.c</FilenameWithoutPath><RteFlg>0</RteFlg><bShared>0</bShared></File><File><GroupNumber>2</GroupNumber><FileNumber>7</FileNumber><FileType>1</FileType><tvExp>0</tvExp><tvExpOptDlg>0</tvExpOptDlg><bDave2>0</bDave2><PathWithFileName>..\Mcu\f421\Drivers\drivers\src\at32f421_dma.c</PathWithFileName><FilenameWithoutPath>at32f421_dma.c</FilenameWithoutPath><RteFlg>0</RteFlg><bShared>0</bShared></File><File><GroupNumber>2</GroupNumber><FileNumber>8</FileNumber><FileType>1</FileType><tvExp>0</tvExp><tvExpOptDlg>0</tvExpOptDlg><bDave2>0</bDave2><PathWithFileName>..\Mcu\f421\Drivers\drivers\src\at32f421_ertc.c</PathWithFileName><FilenameWithoutPath>at32f421_ertc.c</FilenameWithoutPath><RteFlg>0</RteFlg><bShared>0</bShared></File><File><GroupNumber>2</GroupNumber><FileNumber>9</FileNumber><FileType>1</FileType><tvExp>0</tvExp><tvExpOptDlg>0</tvExpOptDlg><bDave2>0</bDave2><PathWithFileName>..\Mcu\f421\Drivers\drivers\src\at32f421_exint.c</PathWithFileName><FilenameWithoutPath>at32f421_exint.c</FilenameWithoutPath><RteFlg>0</RteFlg><bShared>0</bShared></File><File><GroupNumber>2</GroupNumber><FileNumber>10</FileNumber><FileType>1</FileType><tvExp>0</tvExp><tvExpOptDlg>0</tvExpOptDlg><bDave2>0</bDave2><PathWithFileName>..\Mcu\f421\Drivers\drivers\src\at32f421_flash.c</PathWithFileName><FilenameWithoutPath>at32f421_flash.c</FilenameWithoutPath><RteFlg>0</RteFlg><bShared>0</bShared></File><File><GroupNumber>2</GroupNumber><FileNumber>11</FileNumber><FileType>1</FileType><tvExp>0</tvExp><tvExpOptDlg>0</tvExpOptDlg><bDave2>0</bDave2><PathWithFileName>..\Mcu\f421\Drivers\drivers\src\at32f421_gpio.c</PathWithFileName><FilenameWithoutPath>at32f421_gpio.c</FilenameWithoutPath><RteFlg>0</RteFlg><bShared>0</bShared></File><File><GroupNumber>2</GroupNumber><FileNumber>12</FileNumber><FileType>1</FileType><tvExp>0</tvExp><tvExpOptDlg>0</tvExpOptDlg><bDave2>0</bDave2><PathWithFileName>..\Mcu\f421\Drivers\drivers\src\at32f421_i2c.c</PathWithFileName><FilenameWithoutPath>at32f421_i2c.c</FilenameWithoutPath><RteFlg>0</RteFlg><bShared>0</bShared></File><File><GroupNumber>2</GroupNumber><FileNumber>13</FileNumber><FileType>1</FileType><tvExp>0</tvExp><tvExpOptDlg>0</tvExpOptDlg><bDave2>0</bDave2><PathWithFileName>..\Mcu\f421\Drivers\drivers\src\at32f421_misc.c</PathWithFileName><FilenameWithoutPath>at32f421_misc.c</FilenameWithoutPath><RteFlg>0</RteFlg><bShared>0</bShared></File><File><GroupNumber>2</GroupNumber><FileNumber>14</FileNumber><FileType>1</FileType><tvExp>0</tvExp><tvExpOptDlg>0</tvExpOptDlg><bDave2>0</bDave2><PathWithFileName>..\Mcu\f421\Drivers\drivers\src\at32f421_pwc.c</PathWithFileName><FilenameWithoutPath>at32f421_pwc.c</FilenameWithoutPath><RteFlg>0</RteFlg><bShared>0</bShared></File><File><GroupNumber>2</GroupNumber><FileNumber>15</FileNumber><FileType>1</FileType><tvExp>0</tvExp><tvExpOptDlg>0</tvExpOptDlg><bDave2>0</bDave2><PathWithFileName>..\Mcu\f421\Drivers\drivers\src\at32f421_scfg.c</PathWithFileName><FilenameWithoutPath>at32f421_scfg.c</FilenameWithoutPath><RteFlg>0</RteFlg><bShared>0</bShared></File><File><GroupNumber>2</GroupNumber><FileNumber>16</FileNumber><FileType>1</FileType><tvExp>0</tvExp><tvExpOptDlg>0</tvExpOptDlg><bDave2>0</bDave2><PathWithFileName>..\Mcu\f421\Drivers\drivers\src\at32f421_spi.c</PathWithFileName><FilenameWithoutPath>at32f421_spi.c</FilenameWithoutPath><RteFlg>0</RteFlg><bShared>0</bShared></File><File><GroupNumber>2</GroupNumber><FileNumber>17</FileNumber><FileType>1</FileType><tvExp>0</tvExp><tvExpOptDlg>0</tvExpOptDlg><bDave2>0</bDave2><PathWithFileName>..\Mcu\f421\Drivers\drivers\src\at32f421_tmr.c</PathWithFileName><FilenameWithoutPath>at32f421_tmr.c</FilenameWithoutPath><RteFlg>0</RteFlg><bShared>0</bShared></File><File><GroupNumber>2</GroupNumber><FileNumber>18</FileNumber><FileType>1</FileType><tvExp>0</tvExp><tvExpOptDlg>0</tvExpOptDlg><bDave2>0</bDave2><PathWithFileName>..\Mcu\f421\Drivers\drivers\src\at32f421_usart.c</PathWithFileName><FilenameWithoutPath>at32f421_usart.c</FilenameWithoutPath><RteFlg>0</RteFlg><bShared>0</bShared></File><File><GroupNumber>2</GroupNumber><FileNumber>19</FileNumber><FileType>1</FileType><tvExp>0</tvExp><tvExpOptDlg>0</tvExpOptDlg><bDave2>0</bDave2><PathWithFileName>..\Mcu\f421\Drivers\drivers\src\at32f421_wdt.c</PathWithFileName><FilenameWithoutPath>at32f421_wdt.c</FilenameWithoutPath><RteFlg>0</RteFlg><bShared>0</bShared></File><File><GroupNumber>2</GroupNumber><FileNumber>20</FileNumber><FileType>1</FileType><tvExp>0</tvExp><tvExpOptDlg>0</tvExpOptDlg><bDave2>0</bDave2><PathWithFileName>..\Mcu\f421\Drivers\drivers\src\at32f421_wwdt.c</PathWithFileName><FilenameWithoutPath>at32f421_wwdt.c</FilenameWithoutPath><RteFlg>0</RteFlg><bShared>0</bShared></File></Group><Group><GroupName>F421</GroupName><tvExp>1</tvExp><tvExpOptDlg>0</tvExpOptDlg><cbSel>0</cbSel><RteFlg>0</RteFlg><File><GroupNumber>3</GroupNumber><FileNumber>21</FileNumber><FileType>1</FileType><tvExp>0</tvExp><tvExpOptDlg>0</tvExpOptDlg><bDave2>0</bDave2><PathWithFileName>..\Mcu\f421\Src\eeprom.c</PathWithFileName><FilenameWithoutPath>eeprom.c</FilenameWithoutPath><RteFlg>0</RteFlg><bShared>0</bShared></File></Group><Group><GroupName>Startup</GroupName><tvExp>1</tvExp><tvExpOptDlg>0</tvExpOptDlg><cbSel>0</cbSel><RteFlg>0</RteFlg><File><GroupNumber>4</GroupNumber><FileNumber>22</FileNumber><FileType>2</FileType><tvExp>0</tvExp><tvExpOptDlg>0</tvExpOptDlg><bDave2>0</bDave2><PathWithFileName>..\Mcu\f421\Startup\mdk\startup_at32f421.s</PathWithFileName><FilenameWithoutPath>startup_at32f421.s</FilenameWithoutPath><RteFlg>0</RteFlg><bShared>0</bShared></File></Group><Group><GroupName>CMSIS</GroupName><tvExp>0</tvExp><tvExpOptDlg>0</tvExpOptDlg><cbSel>0</cbSel><RteFlg>0</RteFlg></Group></ProjectOpt>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/93265.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/93265.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/93265.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【大文件上传】分片上传+断点续传+Worker线程计算Hash

/*** 文件分片上传管理器* 提供文件分片、哈希计算、并发上传和断点续传功能*/ class FileChunkUploader {/*** 构造函数* param {File} file - 要上传的文件对象* param {Object} options - 配置选项* param {number} [options.chunkSize5MB] - 每个分片的大小&#xff08;字节…

-bash: ./restart.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录

这是典型的Windows换行符&#xff08;CRLF&#xff09;导致的脚本不能在Linux/Unix环境下正常执行的问题。Linux 期望的是 LF (\n)&#xff0c;而 Windows 是 CRLF (\r\n)&#xff0c;所以脚本文件的第一行解释器路径后多了一个不可见的 ^M&#xff08;回车符&#xff09;&…

芯伯乐1MHz高频低功耗运放芯片MCP6001/2/4系列,微安级功耗精密信号处理

前言在工业控制、通信设备、家用电器等领域&#xff0c;信号处理是核心环节之一&#xff0c;其中运算放大器&#xff08;运放&#xff09;是实现信号处理的核心器件&#xff0c;其选型参数直接决定了信号链路的性能和输出信号的质量&#xff0c;是确保信号正常、精确输出的关键…

智能的数学原理

智能的数学原理可以分成几个层次来看——从最底层的数学基础&#xff0c;到支撑“智能”表现的数学模型&#xff0c;再到连接数学与现实认知的理论框架。 分成 五个核心板块 来梳理&#xff1a;1. 信息与表示的数学 智能的第一步是“能表示信息”&#xff0c;这涉及&#xff1a…

FPGA即插即用Verilog驱动系列——SPI发送模块

实现功能&#xff1a;按字节以spi模式3发送数据&#xff0c;如果要stm32接收&#xff0c;请在cubemx中将对应的spi接口设置为模式3&#xff0c;详情见代码开头注释// spi_byte_master.v // 经过优化的SPI主设备模块&#xff0c;每次使能发送一个字节。 // 它实现了SPI模式3 (CP…

C++ 排序指南

在 C 中&#xff0c;std::sort 是一个非常强大且常用的函数&#xff0c;用于对容器或数组中的元素进行排序。它定义在 <algorithm> 头文件中。 std::sort 的基本语法 std::sort 的基本语法有以下几种形式&#xff1a;默认升序排序&#xff1a; std::sort(first, last);fi…

RS232串行线是什么?

RS232串行线是什么&#xff1f;RS232串行线是一种用于串行通信的标准化接口&#xff0c;广泛应用于早期计算机、工业设备、仪器仪表等领域的短距离数据传输。以下是其核心要点解析&#xff1a;1. 基本定义 全称&#xff1a;RS232&#xff08;Recommended Standard 232&#xff…

k8s-scheduler 解析

学习文档 官网的k8s上关于scheduler的文档基本可以分为这两部分 介绍 scheduler 的基本概念 介绍 scheduler 的配置 KubeSchedulerConfiguration 的参数 介绍 scheduler 的命令行参数 调度框架解析 Scheduling-framework 解析 kube-scheduler 选择 node 通过下面这两步…

前端简历1v1修改: 优化项目经验

今天有人找我优化前端简历&#xff0c;分享一下如何优化项目经验描述。这是修改前的版本&#xff1a;项目为Web前端开发&#xff0c;但描述为APP应用&#xff0c;包含某某功能。起初我感到困惑&#xff0c;因为前端技术栈使用Vue&#xff0c;为何项目类型是APP&#xff1f;后来…

K8S企业级应用与DaemonSet实战解析

目录 一、概述 二、YAML文件详解 三、企业应用案例 3.1 环境准备 3.2 扩缩容 3.3 滚动更新 3.4 回滚 四、自定义更新策略 4.1类型 4.2 设置方式 4.3 配置案例 一、 DaemonSet 概述 DaemonSet 工作原理 Daemonset 典型的应用场景 DaemonSet 与 Deployment 的区别…

Celery在Django中的应用

Celery在Django中的应用一、项目配置二、异步任务2.1 普通用法2.1.1 通过delay2.1.2 通过apply_async2.2 高级用法2.2.1 任务回调&#xff08;Callback&#xff09;2.2.2 任务链&#xff08;Chaining&#xff09;2.2.3 任务组&#xff08;Group&#xff09;2.2.4 任务和弦&…

DeepSeek生成的高精度大数计算器

# 高精度计算器&#xff08;精确显示版&#xff09;1. **精确显示优化**&#xff1a;- 新增print_mpfr()函数专门处理MPFR数值的打印- 自动移除多余的尾随零和小数点- 确保所有浮点结果都以完整十进制形式显示&#xff0c;不使用科学计数法2. **浮点精度修复**&#xff1a;- 所…

08--深入解析C++ list:高效操作与实现原理

1. list介绍1.1. list概述template < class T, class Alloc allocator<T> > class list;Lists are sequence containers that allow constant time insert and erase operations anywhere within the sequence, and iteration in both directions.概述&#xff1…

GraphQL从入门到精通完整指南

目录 什么是GraphQLGraphQL核心概念GraphQL Schema定义语言查询(Queries)变更(Mutations)订阅(Subscriptions)Schema设计最佳实践服务端实现客户端使用高级特性性能优化实战项目 什么是GraphQL GraphQL是由Facebook开发的一种API查询语言和运行时。它为API提供了完整且易于理…

使用 Dockerfile 与 Docker Compose 结合+Docker-compose.yml 文件详解

使用 Dockerfile 与 Docker Compose 结合的完整流程 Dockerfile 用于定义单个容器的构建过程&#xff0c;而 Docker Compose 则用于编排多个容器。以下是结合使用两者的完整方法&#xff1a; 1. 创建 Dockerfile 在项目目录中创建 Dockerfile 定义应用镜像的构建过程&#xff1…

15 ABP Framework 开发工具

ABP Framework 开发工具 概述 该页面详细介绍了 ABP Framework 提供的开发工具和命令行界面&#xff08;CLI&#xff09;&#xff0c;用于创建、管理和定制 ABP 项目。ABP CLI 是主要开发工具&#xff0c;支持项目脚手架、模块添加、数据库迁移管理及常见开发任务自动化。 ABP …

力扣top100(day02-01)--链表01

160. 相交链表 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) {* val x;* next null;* }* }*/ public class Solution {/*** 查找两个链表的相交节点* param headA 第一个…

LLM 中 语音编码与文本embeding的本质区别

直接使用语音编码,是什么形式,和文本的区别 直接使用语音编码的形式 语音编码是将模拟语音信号转换为数字信号的技术,其核心是对语音的声学特征进行数字化表征,直接承载语音的物理声学信息。其形式可分为以下几类: 1. 基于波形的编码(保留原始波形特征) 脉冲编码调制…

模型选择与调优

一、模型选择与调优在机器学习中&#xff0c;模型的选择和调优是一个重要的步骤&#xff0c;它直接影响到最终模型的性能1、交叉验证在任何有监督机器学习项目的模型构建阶段&#xff0c;我们训练模型的目的是从标记的示例中学习所有权重和偏差的最佳值如果我们使用相同的标记示…

vue+Django农产品推荐与价格预测系统、双推荐+机器学习预测+知识图谱

vueflask农产品推荐与价格预测系统、双推荐机器学习价格预测知识图谱文章结尾部分有CSDN官方提供的学长 联系方式名片 文章结尾部分有CSDN官方提供的学长 联系方式名片 关注B站&#xff0c;有好处&#xff01;编号: D010 技术架构: vueflaskmysqlneo4j 核心技术&#xff1a; 基…