Added FreeRTOS
This commit is contained in:
parent
22a382e475
commit
35635fe2ea
|
|
@ -40,7 +40,7 @@
|
||||||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
; </h>
|
; </h>
|
||||||
|
|
||||||
Stack_Size EQU 0x00002000
|
Stack_Size EQU 0x00000200
|
||||||
|
|
||||||
AREA STACK, NOINIT, READWRITE, ALIGN = 3
|
AREA STACK, NOINIT, READWRITE, ALIGN = 3
|
||||||
Stack_Mem SPACE Stack_Size
|
Stack_Mem SPACE Stack_Size
|
||||||
|
|
@ -51,7 +51,7 @@ __initial_sp
|
||||||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
; </h>
|
; </h>
|
||||||
|
|
||||||
Heap_Size EQU 0x00002000
|
Heap_Size EQU 0x00000200
|
||||||
|
|
||||||
AREA HEAP, NOINIT, READWRITE, ALIGN = 3
|
AREA HEAP, NOINIT, READWRITE, ALIGN = 3
|
||||||
__heap_base
|
__heap_base
|
||||||
|
|
@ -166,6 +166,7 @@ Reset_Handler PROC
|
||||||
EXPORT Reset_Handler [WEAK]
|
EXPORT Reset_Handler [WEAK]
|
||||||
IMPORT __main
|
IMPORT __main
|
||||||
IMPORT SystemInit
|
IMPORT SystemInit
|
||||||
|
IMPORT prvGetRegistersFromStack
|
||||||
LDR R0, =SystemInit
|
LDR R0, =SystemInit
|
||||||
BLX R0
|
BLX R0
|
||||||
LDR R0, =__main
|
LDR R0, =__main
|
||||||
|
|
@ -178,10 +179,25 @@ NMI_Handler PROC
|
||||||
B .
|
B .
|
||||||
ENDP
|
ENDP
|
||||||
|
|
||||||
HardFault_Handler PROC
|
HardFault_Handler\
|
||||||
EXPORT HardFault_Handler [WEAK]
|
PROC
|
||||||
B .
|
EXPORT HardFault_Handler [WEAK]
|
||||||
ENDP
|
|
||||||
|
movs r1, #4
|
||||||
|
mov r2, lr
|
||||||
|
tst r1, r2
|
||||||
|
bne lable
|
||||||
|
mrs r0, msp
|
||||||
|
nop
|
||||||
|
b lable1
|
||||||
|
lable
|
||||||
|
mrs r0, psp
|
||||||
|
lable1
|
||||||
|
ldr r1, [r0, #24]
|
||||||
|
ldr r2, =prvGetRegistersFromStack
|
||||||
|
bx r2
|
||||||
|
|
||||||
|
ENDP
|
||||||
|
|
||||||
MemManage_Handler PROC
|
MemManage_Handler PROC
|
||||||
EXPORT MemManage_Handler [WEAK]
|
EXPORT MemManage_Handler [WEAK]
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ extern uint32_t SystemCoreClock;
|
||||||
/* Constants that describe the hardware and memory usage. */
|
/* Constants that describe the hardware and memory usage. */
|
||||||
#define configCPU_CLOCK_HZ (SystemCoreClock)
|
#define configCPU_CLOCK_HZ (SystemCoreClock)
|
||||||
#define configTICK_RATE_HZ ((TickType_t)1000)
|
#define configTICK_RATE_HZ ((TickType_t)1000)
|
||||||
#define configTOTAL_HEAP_SIZE ((size_t)4096)
|
#define configTOTAL_HEAP_SIZE ((size_t)8192)
|
||||||
#define configMINIMAL_STACK_SIZE ((uint16_t)256)
|
#define configMINIMAL_STACK_SIZE ((uint16_t)256)
|
||||||
#define configSUPPORT_DYNAMIC_ALLOCATION 1
|
#define configSUPPORT_DYNAMIC_ALLOCATION 1
|
||||||
#define configSUPPORT_STATIC_ALLOCATION 0
|
#define configSUPPORT_STATIC_ALLOCATION 0
|
||||||
|
|
@ -82,15 +82,15 @@ extern uint32_t SystemCoreClock;
|
||||||
#define configUSE_CO_ROUTINES 0
|
#define configUSE_CO_ROUTINES 0
|
||||||
|
|
||||||
/* Constants provided for debugging and optimisation assistance. */
|
/* Constants provided for debugging and optimisation assistance. */
|
||||||
#define configCHECK_FOR_STACK_OVERFLOW 0
|
#define configCHECK_FOR_STACK_OVERFLOW 1
|
||||||
#define configQUEUE_REGISTRY_SIZE 0
|
#define configQUEUE_REGISTRY_SIZE 0
|
||||||
#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); }
|
#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); }
|
||||||
|
|
||||||
/* Constants that define which hook (callback) functions should be used. */
|
/* Constants that define which hook (callback) functions should be used. */
|
||||||
#define configUSE_IDLE_HOOK 0
|
#define configUSE_IDLE_HOOK 0
|
||||||
#define configUSE_TICK_HOOK 0
|
#define configUSE_TICK_HOOK 1
|
||||||
#define configUSE_DAEMON_TASK_STARTUP_HOOK 0
|
#define configUSE_DAEMON_TASK_STARTUP_HOOK 0
|
||||||
#define configUSE_MALLOC_FAILED_HOOK 0
|
#define configUSE_MALLOC_FAILED_HOOK 1
|
||||||
|
|
||||||
/* Port specific configuration. */
|
/* Port specific configuration. */
|
||||||
#define configENABLE_MPU 0
|
#define configENABLE_MPU 0
|
||||||
|
|
@ -106,7 +106,7 @@ extern uint32_t SystemCoreClock;
|
||||||
#define configPRIO_BITS __NVIC_PRIO_BITS
|
#define configPRIO_BITS __NVIC_PRIO_BITS
|
||||||
#else
|
#else
|
||||||
/* 7 priority levels */
|
/* 7 priority levels */
|
||||||
#define configPRIO_BITS 3
|
#define configPRIO_BITS 4
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* The lowest interrupt priority that can be used in a call to a "set priority" function. */
|
/* The lowest interrupt priority that can be used in a call to a "set priority" function. */
|
||||||
|
|
|
||||||
|
|
@ -20,8 +20,8 @@
|
||||||
#define RTE_RTOS_FreeRTOS_CONFIG /* RTOS FreeRTOS Config for FreeRTOS API */
|
#define RTE_RTOS_FreeRTOS_CONFIG /* RTOS FreeRTOS Config for FreeRTOS API */
|
||||||
/* ARM.FreeRTOS::RTOS:Core:Cortex-M:10.5.1 */
|
/* ARM.FreeRTOS::RTOS:Core:Cortex-M:10.5.1 */
|
||||||
#define RTE_RTOS_FreeRTOS_CORE /* RTOS FreeRTOS Core */
|
#define RTE_RTOS_FreeRTOS_CORE /* RTOS FreeRTOS Core */
|
||||||
/* ARM.FreeRTOS::RTOS:Heap:Heap_4:10.5.1 */
|
/* ARM.FreeRTOS::RTOS:Heap:Heap_2:10.5.1 */
|
||||||
#define RTE_RTOS_FreeRTOS_HEAP_4 /* RTOS FreeRTOS Heap 4 */
|
#define RTE_RTOS_FreeRTOS_HEAP_2 /* RTOS FreeRTOS Heap 2 */
|
||||||
/* GigaDevice::Device:GD32F10x_StdPeripherals:EXTI:2.0.2 */
|
/* GigaDevice::Device:GD32F10x_StdPeripherals:EXTI:2.0.2 */
|
||||||
#define RTE_DEVICE_STDPERIPHERALS_EXTI
|
#define RTE_DEVICE_STDPERIPHERALS_EXTI
|
||||||
/* GigaDevice::Device:GD32F10x_StdPeripherals:GPIO:2.0.2 */
|
/* GigaDevice::Device:GD32F10x_StdPeripherals:GPIO:2.0.2 */
|
||||||
|
|
|
||||||
|
|
@ -153,24 +153,7 @@
|
||||||
<Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F10x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F107VC$Flash\GD32F10x_CL.FLM))</Name>
|
<Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F10x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F107VC$Flash\GD32F10x_CL.FLM))</Name>
|
||||||
</SetRegEntry>
|
</SetRegEntry>
|
||||||
</TargetDriverDllRegistry>
|
</TargetDriverDllRegistry>
|
||||||
<Breakpoint>
|
<Breakpoint/>
|
||||||
<Bp>
|
|
||||||
<Number>0</Number>
|
|
||||||
<Type>0</Type>
|
|
||||||
<LineNumber>0</LineNumber>
|
|
||||||
<EnabledFlag>1</EnabledFlag>
|
|
||||||
<Address>134218370</Address>
|
|
||||||
<ByteObject>0</ByteObject>
|
|
||||||
<HtxType>0</HtxType>
|
|
||||||
<ManyObjects>0</ManyObjects>
|
|
||||||
<SizeOfObject>0</SizeOfObject>
|
|
||||||
<BreakByAccess>0</BreakByAccess>
|
|
||||||
<BreakIfRCount>1</BreakIfRCount>
|
|
||||||
<Filename></Filename>
|
|
||||||
<ExecCommand></ExecCommand>
|
|
||||||
<Expression>0x08000282</Expression>
|
|
||||||
</Bp>
|
|
||||||
</Breakpoint>
|
|
||||||
<MemoryWindow1>
|
<MemoryWindow1>
|
||||||
<Mm>
|
<Mm>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
|
|
@ -180,7 +163,7 @@
|
||||||
</Mm>
|
</Mm>
|
||||||
</MemoryWindow1>
|
</MemoryWindow1>
|
||||||
<ScvdPack>
|
<ScvdPack>
|
||||||
<Filename>C:\Users\User\AppData\Local\Arm\Packs\ARM\CMSIS-FreeRTOS\10.5.1\CMSIS\RTOS2\FreeRTOS\FreeRTOS.scvd</Filename>
|
<Filename>E:\Arm\Packs\ARM\CMSIS-FreeRTOS\10.5.1\CMSIS\RTOS2\FreeRTOS\FreeRTOS.scvd</Filename>
|
||||||
<Type>ARM.CMSIS-FreeRTOS.10.5.1</Type>
|
<Type>ARM.CMSIS-FreeRTOS.10.5.1</Type>
|
||||||
<SubType>1</SubType>
|
<SubType>1</SubType>
|
||||||
</ScvdPack>
|
</ScvdPack>
|
||||||
|
|
@ -231,7 +214,7 @@
|
||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>Source Group 1</GroupName>
|
<GroupName>Source Group 1</GroupName>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>1</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
|
|
|
||||||
|
|
@ -317,28 +317,28 @@
|
||||||
<interw>1</interw>
|
<interw>1</interw>
|
||||||
<Optim>1</Optim>
|
<Optim>1</Optim>
|
||||||
<oTime>0</oTime>
|
<oTime>0</oTime>
|
||||||
<SplitLS>0</SplitLS>
|
<SplitLS>1</SplitLS>
|
||||||
<OneElfS>1</OneElfS>
|
<OneElfS>1</OneElfS>
|
||||||
<Strict>0</Strict>
|
<Strict>0</Strict>
|
||||||
<EnumInt>0</EnumInt>
|
<EnumInt>0</EnumInt>
|
||||||
<PlainCh>0</PlainCh>
|
<PlainCh>0</PlainCh>
|
||||||
<Ropi>0</Ropi>
|
<Ropi>0</Ropi>
|
||||||
<Rwpi>0</Rwpi>
|
<Rwpi>0</Rwpi>
|
||||||
<wLevel>4</wLevel>
|
<wLevel>3</wLevel>
|
||||||
<uThumb>0</uThumb>
|
<uThumb>0</uThumb>
|
||||||
<uSurpInc>0</uSurpInc>
|
<uSurpInc>0</uSurpInc>
|
||||||
<uC99>0</uC99>
|
<uC99>1</uC99>
|
||||||
<uGnu>1</uGnu>
|
<uGnu>1</uGnu>
|
||||||
<useXO>0</useXO>
|
<useXO>0</useXO>
|
||||||
<v6Lang>5</v6Lang>
|
<v6Lang>5</v6Lang>
|
||||||
<v6LangP>3</v6LangP>
|
<v6LangP>5</v6LangP>
|
||||||
<vShortEn>1</vShortEn>
|
<vShortEn>1</vShortEn>
|
||||||
<vShortWch>1</vShortWch>
|
<vShortWch>1</vShortWch>
|
||||||
<v6Lto>0</v6Lto>
|
<v6Lto>1</v6Lto>
|
||||||
<v6WtE>0</v6WtE>
|
<v6WtE>0</v6WtE>
|
||||||
<v6Rtti>0</v6Rtti>
|
<v6Rtti>0</v6Rtti>
|
||||||
<VariousControls>
|
<VariousControls>
|
||||||
<MiscControls></MiscControls>
|
<MiscControls>-D DEBUG</MiscControls>
|
||||||
<Define></Define>
|
<Define></Define>
|
||||||
<Undefine></Undefine>
|
<Undefine></Undefine>
|
||||||
<IncludePath></IncludePath>
|
<IncludePath></IncludePath>
|
||||||
|
|
@ -406,6 +406,75 @@
|
||||||
</Group>
|
</Group>
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>::FreeRTOS</GroupName>
|
<GroupName>::FreeRTOS</GroupName>
|
||||||
|
<GroupOption>
|
||||||
|
<CommonProperty>
|
||||||
|
<UseCPPCompiler>0</UseCPPCompiler>
|
||||||
|
<RVCTCodeConst>0</RVCTCodeConst>
|
||||||
|
<RVCTZI>0</RVCTZI>
|
||||||
|
<RVCTOtherData>0</RVCTOtherData>
|
||||||
|
<ModuleSelection>0</ModuleSelection>
|
||||||
|
<IncludeInBuild>0</IncludeInBuild>
|
||||||
|
<AlwaysBuild>2</AlwaysBuild>
|
||||||
|
<GenerateAssemblyFile>2</GenerateAssemblyFile>
|
||||||
|
<AssembleAssemblyFile>2</AssembleAssemblyFile>
|
||||||
|
<PublicsOnly>2</PublicsOnly>
|
||||||
|
<StopOnExitCode>11</StopOnExitCode>
|
||||||
|
<CustomArgument></CustomArgument>
|
||||||
|
<IncludeLibraryModules></IncludeLibraryModules>
|
||||||
|
<ComprImg>1</ComprImg>
|
||||||
|
</CommonProperty>
|
||||||
|
<GroupArmAds>
|
||||||
|
<Cads>
|
||||||
|
<interw>2</interw>
|
||||||
|
<Optim>0</Optim>
|
||||||
|
<oTime>2</oTime>
|
||||||
|
<SplitLS>2</SplitLS>
|
||||||
|
<OneElfS>2</OneElfS>
|
||||||
|
<Strict>2</Strict>
|
||||||
|
<EnumInt>2</EnumInt>
|
||||||
|
<PlainCh>2</PlainCh>
|
||||||
|
<Ropi>2</Ropi>
|
||||||
|
<Rwpi>2</Rwpi>
|
||||||
|
<wLevel>0</wLevel>
|
||||||
|
<uThumb>2</uThumb>
|
||||||
|
<uSurpInc>2</uSurpInc>
|
||||||
|
<uC99>2</uC99>
|
||||||
|
<uGnu>2</uGnu>
|
||||||
|
<useXO>2</useXO>
|
||||||
|
<v6Lang>0</v6Lang>
|
||||||
|
<v6LangP>0</v6LangP>
|
||||||
|
<vShortEn>2</vShortEn>
|
||||||
|
<vShortWch>2</vShortWch>
|
||||||
|
<v6Lto>2</v6Lto>
|
||||||
|
<v6WtE>2</v6WtE>
|
||||||
|
<v6Rtti>2</v6Rtti>
|
||||||
|
<VariousControls>
|
||||||
|
<MiscControls></MiscControls>
|
||||||
|
<Define></Define>
|
||||||
|
<Undefine></Undefine>
|
||||||
|
<IncludePath></IncludePath>
|
||||||
|
</VariousControls>
|
||||||
|
</Cads>
|
||||||
|
<Aads>
|
||||||
|
<interw>2</interw>
|
||||||
|
<Ropi>2</Ropi>
|
||||||
|
<Rwpi>2</Rwpi>
|
||||||
|
<thumb>2</thumb>
|
||||||
|
<SplitLS>2</SplitLS>
|
||||||
|
<SwStkChk>2</SwStkChk>
|
||||||
|
<NoWarn>2</NoWarn>
|
||||||
|
<uSurpInc>2</uSurpInc>
|
||||||
|
<useXO>2</useXO>
|
||||||
|
<ClangAsOpt>0</ClangAsOpt>
|
||||||
|
<VariousControls>
|
||||||
|
<MiscControls></MiscControls>
|
||||||
|
<Define></Define>
|
||||||
|
<Undefine></Undefine>
|
||||||
|
<IncludePath></IncludePath>
|
||||||
|
</VariousControls>
|
||||||
|
</Aads>
|
||||||
|
</GroupArmAds>
|
||||||
|
</GroupOption>
|
||||||
</Group>
|
</Group>
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>::RTOS</GroupName>
|
<GroupName>::RTOS</GroupName>
|
||||||
|
|
@ -429,7 +498,7 @@
|
||||||
<targetInfo name="Target 1"/>
|
<targetInfo name="Target 1"/>
|
||||||
</targetInfos>
|
</targetInfos>
|
||||||
</component>
|
</component>
|
||||||
<component Cbundle="FreeRTOS" Cclass="RTOS" Cgroup="Heap" Cvariant="Heap_4" Cvendor="ARM" Cversion="10.5.1" condition="FreeRTOS Heap">
|
<component Cbundle="FreeRTOS" Cclass="RTOS" Cgroup="Heap" Cvariant="Heap_2" Cvendor="ARM" Cversion="10.5.1" condition="FreeRTOS Heap">
|
||||||
<package name="CMSIS-FreeRTOS" schemaVersion="1.7.7" url="https://www.keil.com/pack/" vendor="ARM" version="10.5.1"/>
|
<package name="CMSIS-FreeRTOS" schemaVersion="1.7.7" url="https://www.keil.com/pack/" vendor="ARM" version="10.5.1"/>
|
||||||
<targetInfos>
|
<targetInfos>
|
||||||
<targetInfo name="Target 1"/>
|
<targetInfo name="Target 1"/>
|
||||||
|
|
@ -444,25 +513,25 @@
|
||||||
<component Cclass="FreeRTOS" Cgroup="FreeRTOS+ TCP" Csub="Buffer Allocation" Cvariant="Buffer Allocation 1" Cvendor="AWS" Cversion="2.3.2-LTS-Patch-2" condition="freertos_plus_tcp_lts_buffer_allocation_1 Condition">
|
<component Cclass="FreeRTOS" Cgroup="FreeRTOS+ TCP" Csub="Buffer Allocation" Cvariant="Buffer Allocation 1" Cvendor="AWS" Cversion="2.3.2-LTS-Patch-2" condition="freertos_plus_tcp_lts_buffer_allocation_1 Condition">
|
||||||
<package name="FreeRTOS-Plus-TCP" schemaVersion="1.7.2" url="https://freertos-cmsis-packs.s3.us-west-2.amazonaws.com/" vendor="AWS" version="4.0.1"/>
|
<package name="FreeRTOS-Plus-TCP" schemaVersion="1.7.2" url="https://freertos-cmsis-packs.s3.us-west-2.amazonaws.com/" vendor="AWS" version="4.0.1"/>
|
||||||
<targetInfos>
|
<targetInfos>
|
||||||
<targetInfo name="Target 1"/>
|
<targetInfo excluded="1" name="Target 1" versionMatchMode=""/>
|
||||||
</targetInfos>
|
</targetInfos>
|
||||||
</component>
|
</component>
|
||||||
<component Cclass="FreeRTOS" Cgroup="FreeRTOS+ TCP" Csub="Compiler Port" Cvariant="Keil" Cvendor="AWS" Cversion="2.3.2-LTS-Patch-2" condition="freertos_plus_tcp_lts_keil_compiler Condition">
|
<component Cclass="FreeRTOS" Cgroup="FreeRTOS+ TCP" Csub="Compiler Port" Cvariant="Keil" Cvendor="AWS" Cversion="2.3.2-LTS-Patch-2" condition="freertos_plus_tcp_lts_keil_compiler Condition">
|
||||||
<package name="FreeRTOS-Plus-TCP" schemaVersion="1.7.2" url="https://freertos-cmsis-packs.s3.us-west-2.amazonaws.com/" vendor="AWS" version="4.0.1"/>
|
<package name="FreeRTOS-Plus-TCP" schemaVersion="1.7.2" url="https://freertos-cmsis-packs.s3.us-west-2.amazonaws.com/" vendor="AWS" version="4.0.1"/>
|
||||||
<targetInfos>
|
<targetInfos>
|
||||||
<targetInfo name="Target 1"/>
|
<targetInfo excluded="1" name="Target 1" versionMatchMode=""/>
|
||||||
</targetInfos>
|
</targetInfos>
|
||||||
</component>
|
</component>
|
||||||
<component Cclass="FreeRTOS" Cgroup="FreeRTOS+ TCP" Csub="Core Library" Cvendor="AWS" Cversion="2.3.2-LTS-Patch-2" condition="freertos_plus_tcp_lts_library Condition">
|
<component Cclass="FreeRTOS" Cgroup="FreeRTOS+ TCP" Csub="Core Library" Cvendor="AWS" Cversion="2.3.2-LTS-Patch-2" condition="freertos_plus_tcp_lts_library Condition">
|
||||||
<package name="FreeRTOS-Plus-TCP" schemaVersion="1.7.2" url="https://freertos-cmsis-packs.s3.us-west-2.amazonaws.com/" vendor="AWS" version="4.0.1"/>
|
<package name="FreeRTOS-Plus-TCP" schemaVersion="1.7.2" url="https://freertos-cmsis-packs.s3.us-west-2.amazonaws.com/" vendor="AWS" version="4.0.1"/>
|
||||||
<targetInfos>
|
<targetInfos>
|
||||||
<targetInfo name="Target 1"/>
|
<targetInfo excluded="1" name="Target 1" versionMatchMode=""/>
|
||||||
</targetInfos>
|
</targetInfos>
|
||||||
</component>
|
</component>
|
||||||
<component Cclass="FreeRTOS" Cgroup="FreeRTOS+ TCP" Csub="Network Interface" Cvariant="STM32Fxx" Cvendor="AWS" Cversion="2.3.2-LTS-Patch-2" condition="freertos_plus_tcp_lts_stm32fxx_network_interface_port Condition">
|
<component Cclass="FreeRTOS" Cgroup="FreeRTOS+ TCP" Csub="Network Interface" Cvariant="STM32Fxx" Cvendor="AWS" Cversion="2.3.2-LTS-Patch-2" condition="freertos_plus_tcp_lts_stm32fxx_network_interface_port Condition">
|
||||||
<package name="FreeRTOS-Plus-TCP" schemaVersion="1.7.2" url="https://freertos-cmsis-packs.s3.us-west-2.amazonaws.com/" vendor="AWS" version="4.0.1"/>
|
<package name="FreeRTOS-Plus-TCP" schemaVersion="1.7.2" url="https://freertos-cmsis-packs.s3.us-west-2.amazonaws.com/" vendor="AWS" version="4.0.1"/>
|
||||||
<targetInfos>
|
<targetInfos>
|
||||||
<targetInfo name="Target 1"/>
|
<targetInfo excluded="1" name="Target 1" versionMatchMode=""/>
|
||||||
</targetInfos>
|
</targetInfos>
|
||||||
</component>
|
</component>
|
||||||
<component Cclass="Device" Cgroup="EVAL" Csub="GD32F107C" Cvendor="GigaDevice" Cversion="2.0.2" condition="GD32F10x STDPERIPHERALS EVAL">
|
<component Cclass="Device" Cgroup="EVAL" Csub="GD32F107C" Cvendor="GigaDevice" Cversion="2.0.2" condition="GD32F10x STDPERIPHERALS EVAL">
|
||||||
|
|
|
||||||
191
main.c
191
main.c
|
|
@ -1,24 +1,177 @@
|
||||||
#include "FreeRTOS.h"
|
#include "FreeRTOS.h"
|
||||||
#include "FreeRTOSConfig.h"
|
#include "task.h"
|
||||||
#include "gd32f107c_eval.h"
|
#include "gd32f107c_eval.h"
|
||||||
#include "gd32f10x_gpio.h"
|
#include "gd32f10x_gpio.h"
|
||||||
#include "stdio.h"
|
#include "stdio.h"
|
||||||
#define BUTTON_USER GPIO_PIN_14
|
#define BUTTON_USER GPIO_PIN_14
|
||||||
#define LED_USER GPIO_PIN_0
|
#define LED2_USER GPIO_PIN_0
|
||||||
char ButtonState = 0;
|
#define LED5_TICK GPIO_PIN_1
|
||||||
|
|
||||||
|
void vTaskHelloWorld( void *pvParameters);
|
||||||
|
void vTaskToggleLed( void *pvParameters);
|
||||||
int stdout_putchar (int ch);
|
int stdout_putchar (int ch);
|
||||||
int stdin_getchar (void);
|
int stdin_getchar (void);
|
||||||
void DelayMS(unsigned char ms);
|
void DelayMS(unsigned char ms);
|
||||||
|
|
||||||
int stdout_putchar (int ch)
|
int stdout_putchar (int ch)
|
||||||
{
|
{
|
||||||
usart_data_transmit(EVAL_COM1, (uint16_t)ch);
|
usart_data_transmit(EVAL_COM1, (uint16_t)ch);
|
||||||
DelayMS(1);
|
while (!usart_flag_get(EVAL_COM1, USART_FLAG_TBE)){}
|
||||||
|
|
||||||
return ch;
|
return ch;
|
||||||
}
|
}
|
||||||
int stdin_getchar (void)
|
int stdin_getchar (void)
|
||||||
{
|
{
|
||||||
return usart_data_receive(EVAL_COM1);
|
return usart_data_receive(EVAL_COM1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*! \brief InitMCU
|
||||||
|
* Initial MCU configuration
|
||||||
|
*/
|
||||||
|
static void InitMCU(void)
|
||||||
|
{
|
||||||
|
SystemInit();
|
||||||
|
//gd_eval_led_init(LED2);
|
||||||
|
//gd_eval_led_on(LED2);
|
||||||
|
rcu_periph_clock_enable(RCU_GPIOC);
|
||||||
|
|
||||||
|
gpio_init(GPIOC, GPIO_MODE_OUT_PP, GPIO_OSPEED_2MHZ, LED2_USER);
|
||||||
|
gpio_bit_set(GPIOC, LED2_USER);
|
||||||
|
|
||||||
|
rcu_periph_clock_enable(RCU_GPIOE);
|
||||||
|
gpio_init(GPIOE, GPIO_MODE_OUT_PP, GPIO_OSPEED_2MHZ, LED5_TICK);
|
||||||
|
gpio_bit_set(GPIOE, LED5_TICK);
|
||||||
|
|
||||||
|
gd_eval_com_init(EVAL_COM1);
|
||||||
|
rcu_periph_clock_enable(RCU_GPIOB);
|
||||||
|
gpio_init(GPIOB, GPIO_MODE_IPU, GPIO_OSPEED_2MHZ, BUTTON_USER);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*! \brief vTaskHelloWorld procedure
|
||||||
|
*
|
||||||
|
* \param Not Used.
|
||||||
|
*/
|
||||||
|
void vTaskHelloWorld( void *pvParameters)
|
||||||
|
{
|
||||||
|
char ButtonState = 0;
|
||||||
|
for( ;; )
|
||||||
|
{
|
||||||
|
ButtonState = !gpio_input_bit_get(GPIOB, BUTTON_USER);
|
||||||
|
if (ButtonState)
|
||||||
|
{
|
||||||
|
printf("Hello world\n");
|
||||||
|
vTaskDelay(500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*! \brief vTaskToggleLed procedure
|
||||||
|
*
|
||||||
|
* \param Not Used.
|
||||||
|
*/
|
||||||
|
void vTaskToggleLed( void *pvParameters)
|
||||||
|
{
|
||||||
|
char toggle = 1;
|
||||||
|
for( ;; )
|
||||||
|
{
|
||||||
|
if (toggle)
|
||||||
|
{
|
||||||
|
gpio_bit_reset(GPIOC, LED2_USER);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gpio_bit_set(GPIOC, LED2_USER);
|
||||||
|
}
|
||||||
|
toggle = !toggle;
|
||||||
|
vTaskDelay(125);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
InitMCU();
|
||||||
|
xTaskCreate(vTaskToggleLed, "ToggleLed", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY+1, NULL);
|
||||||
|
xTaskCreate(vTaskHelloWorld, "HelloWorld", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY+1, NULL);
|
||||||
|
vTaskStartScheduler();
|
||||||
|
while(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* task.h
|
||||||
|
* @code{c}
|
||||||
|
* void vApplicationMallocFailedHook( void )
|
||||||
|
* @endcode
|
||||||
|
*
|
||||||
|
* This hook function is called when allocation failed.
|
||||||
|
*/
|
||||||
|
void vApplicationMallocFailedHook( void )
|
||||||
|
{
|
||||||
|
#if defined (DEBUG)
|
||||||
|
__ASM("BKPT #0\n");
|
||||||
|
#endif
|
||||||
|
NVIC_SystemReset();
|
||||||
|
while(TRUE){}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*! \func vApplicationTickHook( void )
|
||||||
|
* \brief Toggles LED5_TICK to indicate RTOS running well
|
||||||
|
*/
|
||||||
|
void vApplicationTickHook( void )
|
||||||
|
{
|
||||||
|
static uint16_t tickCounter = 0;
|
||||||
|
if(++tickCounter == configTICK_RATE_HZ)
|
||||||
|
{
|
||||||
|
gpio_bit_reset(GPIOE, LED5_TICK);
|
||||||
|
tickCounter = 0;
|
||||||
|
}
|
||||||
|
else if(tickCounter == configTICK_RATE_HZ/2)
|
||||||
|
{
|
||||||
|
gpio_bit_set(GPIOE, LED5_TICK);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName )
|
||||||
|
{
|
||||||
|
#if defined (DEBUG)
|
||||||
|
__ASM("BKPT #0\n");
|
||||||
|
#endif
|
||||||
|
NVIC_SystemReset();
|
||||||
|
while(TRUE){}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
__attribute__((used)) void prvGetRegistersFromStack( uint32_t *pulFaultStackAddress )
|
||||||
|
{
|
||||||
|
/* These are volatile to try and prevent the compiler/linker optimising them
|
||||||
|
away as the variables never actually get used. If the debugger won't show the
|
||||||
|
values of the variables, make them global my moving their declaration outside
|
||||||
|
of this function. */
|
||||||
|
static volatile uint32_t r0;
|
||||||
|
static volatile uint32_t r1;
|
||||||
|
static volatile uint32_t r2;
|
||||||
|
static volatile uint32_t r3;
|
||||||
|
static volatile uint32_t r12;
|
||||||
|
static volatile uint32_t lr; /* Link register. */
|
||||||
|
static volatile uint32_t pc; /* Program counter. */
|
||||||
|
static volatile uint32_t psr;/* Program status register. */
|
||||||
|
|
||||||
|
r0 = pulFaultStackAddress[ 0 ];
|
||||||
|
r1 = pulFaultStackAddress[ 1 ];
|
||||||
|
r2 = pulFaultStackAddress[ 2 ];
|
||||||
|
r3 = pulFaultStackAddress[ 3 ];
|
||||||
|
|
||||||
|
r12 = pulFaultStackAddress[ 4 ];
|
||||||
|
lr = pulFaultStackAddress[ 5 ];
|
||||||
|
pc = pulFaultStackAddress[ 6 ];
|
||||||
|
psr = pulFaultStackAddress[ 7 ];
|
||||||
|
#ifdef DEBUG
|
||||||
|
__asm volatile("BKPT #0\n") ;
|
||||||
|
#endif
|
||||||
|
NVIC_SystemReset();
|
||||||
|
/* When the following line is hit, the variables contain the register values. */
|
||||||
|
for( ;; );
|
||||||
|
}
|
||||||
|
|
||||||
void DelayMS(unsigned char ms)
|
void DelayMS(unsigned char ms)
|
||||||
{
|
{
|
||||||
unsigned long us = 1000*ms;
|
unsigned long us = 1000*ms;
|
||||||
|
|
@ -28,33 +181,3 @@ while (us--)
|
||||||
__NOP();
|
__NOP();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
ButtonState = !gpio_input_bit_get(GPIOB, BUTTON_USER);
|
|
||||||
if (ButtonState)
|
|
||||||
{
|
|
||||||
printf("Hello world\n");
|
|
||||||
DelayMS(250);
|
|
||||||
DelayMS(250);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
int main(void)
|
|
||||||
{
|
|
||||||
|
|
||||||
SystemInit();
|
|
||||||
//gd_eval_led_init(LED2);
|
|
||||||
//gd_eval_led_on(LED2);
|
|
||||||
rcu_periph_clock_enable(RCU_GPIOC);
|
|
||||||
gpio_init(GPIOC, GPIO_MODE_OUT_PP, GPIO_OSPEED_2MHZ, LED_USER);
|
|
||||||
gpio_bit_set(GPIOC, LED_USER);
|
|
||||||
gd_eval_com_init(EVAL_COM1);
|
|
||||||
rcu_periph_clock_enable(RCU_GPIOB);
|
|
||||||
gpio_init(GPIOB, GPIO_MODE_IPU, GPIO_OSPEED_2MHZ, BUTTON_USER);
|
|
||||||
|
|
||||||
|
|
||||||
xPortStartScheduler();
|
|
||||||
while(1);
|
|
||||||
}
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue