Initiales Beispiel: LED Task -> LED blink
This commit is contained in:
parent
6a213db935
commit
67cbe479b3
11
.cproject
11
.cproject
@ -23,6 +23,7 @@
|
|||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.129626474" name="Board" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" useByScannerDiscovery="false" value="genericBoard" valueType="string"/>
|
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.129626474" name="Board" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" useByScannerDiscovery="false" value="genericBoard" valueType="string"/>
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.101793935" name="Defaults" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" useByScannerDiscovery="false" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.6 || Debug || true || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.option.toolchain.value.workspace || STM32G071KBTx || 0 || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Core/Inc | ../Drivers/STM32G0xx_HAL_Driver/Inc | ../Drivers/CMSIS/Device/ST/STM32G0xx/Include | ../Drivers/CMSIS/Include || || || STM32G071xx | USE_FULL_LL_DRIVER | USE_FULL_ASSERT=1U | HSE_VALUE=8000000 | HSE_STARTUP_TIMEOUT=100 | LSE_STARTUP_TIMEOUT=5000 | LSE_VALUE=32768 | EXTERNAL_CLOCK_VALUE=48000 | HSI_VALUE=16000000 | LSI_VALUE=32000 | VDD_VALUE=3300 | PREFETCH_ENABLE=1 | INSTRUCTION_CACHE_ENABLE=1 | DATA_CACHE_ENABLE=1 || || Drivers | Core/Startup | Core || || || ${workspace_loc:/${ProjName}/STM32G071KBTX_FLASH.ld} || true || NonSecure || || secure_nsclib.o || || None || || || " valueType="string"/>
|
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.101793935" name="Defaults" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" useByScannerDiscovery="false" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.6 || Debug || true || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.option.toolchain.value.workspace || STM32G071KBTx || 0 || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Core/Inc | ../Drivers/STM32G0xx_HAL_Driver/Inc | ../Drivers/CMSIS/Device/ST/STM32G0xx/Include | ../Drivers/CMSIS/Include || || || STM32G071xx | USE_FULL_LL_DRIVER | USE_FULL_ASSERT=1U | HSE_VALUE=8000000 | HSE_STARTUP_TIMEOUT=100 | LSE_STARTUP_TIMEOUT=5000 | LSE_VALUE=32768 | EXTERNAL_CLOCK_VALUE=48000 | HSI_VALUE=16000000 | LSI_VALUE=32000 | VDD_VALUE=3300 | PREFETCH_ENABLE=1 | INSTRUCTION_CACHE_ENABLE=1 | DATA_CACHE_ENABLE=1 || || Drivers | Core/Startup | Core || || || ${workspace_loc:/${ProjName}/STM32G071KBTX_FLASH.ld} || true || NonSecure || || secure_nsclib.o || || None || || || " valueType="string"/>
|
||||||
<option id="com.st.stm32cube.ide.mcu.debug.option.cpuclock.292017578" name="Cpu clock frequence" superClass="com.st.stm32cube.ide.mcu.debug.option.cpuclock" useByScannerDiscovery="false" value="64" valueType="string"/>
|
<option id="com.st.stm32cube.ide.mcu.debug.option.cpuclock.292017578" name="Cpu clock frequence" superClass="com.st.stm32cube.ide.mcu.debug.option.cpuclock" useByScannerDiscovery="false" value="64" valueType="string"/>
|
||||||
|
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.toolchain.1234256217" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.toolchain" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.base.gnu-tools-for-stm32.12.3.rel1" valueType="string"/>
|
||||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.1157079916" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
|
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.1157079916" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
|
||||||
<builder buildPath="${workspace_loc:/ThreadX_Test}/Debug" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.1646162694" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
|
<builder buildPath="${workspace_loc:/ThreadX_Test}/Debug" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.1646162694" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.2147270356" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">
|
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.2147270356" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">
|
||||||
@ -57,10 +58,12 @@
|
|||||||
<listOptionValue builtIn="false" value="../Drivers/STM32G0xx_HAL_Driver/Inc"/>
|
<listOptionValue builtIn="false" value="../Drivers/STM32G0xx_HAL_Driver/Inc"/>
|
||||||
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32G0xx/Include"/>
|
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32G0xx/Include"/>
|
||||||
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/>
|
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/>
|
||||||
|
<listOptionValue builtIn="false" value="../ThreadX/common/inc"/>
|
||||||
|
<listOptionValue builtIn="false" value="../ThreadX/ports/cortex_m0/gnu/inc"/>
|
||||||
</option>
|
</option>
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.cyclomaticcomplexity.1700060825" name="Cyclomatic Complexity (-fcyclomatic-complexity)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.cyclomaticcomplexity" useByScannerDiscovery="false" value="false" valueType="boolean"/>
|
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.cyclomaticcomplexity.1700060825" name="Cyclomatic Complexity (-fcyclomatic-complexity)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.cyclomaticcomplexity" useByScannerDiscovery="false" value="true" valueType="boolean"/>
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.warnings.extra.1523863827" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.warnings.extra" value="true" valueType="boolean"/>
|
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.warnings.extra.1523863827" name="Enable extra warning flags (-Wextra)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.warnings.extra" useByScannerDiscovery="false" value="true" valueType="boolean"/>
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.languagestandard.1711000866" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.languagestandard" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.languagestandard.value.gnu18" valueType="enumerated"/>
|
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.languagestandard.1711000866" name="Language standard" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.languagestandard" useByScannerDiscovery="true" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.languagestandard.value.gnu18" valueType="enumerated"/>
|
||||||
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.499961050" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
|
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.499961050" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
|
||||||
</tool>
|
</tool>
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1824156859" name="MCU G++ Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler">
|
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1824156859" name="MCU G++ Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler">
|
||||||
@ -110,6 +113,7 @@
|
|||||||
</toolChain>
|
</toolChain>
|
||||||
</folderInfo>
|
</folderInfo>
|
||||||
<sourceEntries>
|
<sourceEntries>
|
||||||
|
<entry excluding="ports/cortex_m0/gnu/example_build|ports_arch|ports/cortex_m0/keil|ports/cortex_m0/iar|ports/cortex_m0/ac6|ports/cortex_m0/ac5|ports/xtensa|ports/win32|ports/rxv3|ports/rxv2|ports/rxv1|ports/risc-v64|ports/risc-v32|ports/linux|ports/cortex_r7|ports/cortex_r5|ports/cortex_r4|ports/cortex_m85|ports/cortex_m7|ports/cortex_m55|ports/cortex_m4|ports/cortex_m33|ports/cortex_m3|ports/cortex_m23|ports/cortex_a9|ports/cortex_a8|ports/cortex_a77|ports/cortex_a76ae|ports/cortex_a76|ports/cortex_a75|ports/cortex_a73|ports/cortex_a72|ports/cortex_a7|ports/cortex_a65ae|ports/cortex_a65|ports/cortex_a5x|ports/cortex_a57|ports/cortex_a55|ports/cortex_a53|ports/cortex_a5|ports/cortex_a35|ports/cortex_a34|ports/cortex_a17|ports/cortex_a15|ports/cortex_a12|ports/c667x|ports/arm9|ports/arm11|ports/arc_hs|ports/arc_em|test|scripts|samples|docs|cmake|utility|ports_smp|ports_module|common_smp|common_modules" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="ThreadX"/>
|
||||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Core"/>
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Core"/>
|
||||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Drivers"/>
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Drivers"/>
|
||||||
</sourceEntries>
|
</sourceEntries>
|
||||||
@ -218,6 +222,7 @@
|
|||||||
</toolChain>
|
</toolChain>
|
||||||
</folderInfo>
|
</folderInfo>
|
||||||
<sourceEntries>
|
<sourceEntries>
|
||||||
|
<entry excluding="ports/cortex_m0/gnu/example_build|ports_arch|ports/cortex_m0/keil|ports/cortex_m0/iar|ports/cortex_m0/ac6|ports/cortex_m0/ac5|ports/xtensa|ports/win32|ports/rxv3|ports/rxv2|ports/rxv1|ports/risc-v64|ports/risc-v32|ports/linux|ports/cortex_r7|ports/cortex_r5|ports/cortex_r4|ports/cortex_m85|ports/cortex_m7|ports/cortex_m55|ports/cortex_m4|ports/cortex_m33|ports/cortex_m3|ports/cortex_m23|ports/cortex_a9|ports/cortex_a8|ports/cortex_a77|ports/cortex_a76ae|ports/cortex_a76|ports/cortex_a75|ports/cortex_a73|ports/cortex_a72|ports/cortex_a7|ports/cortex_a65ae|ports/cortex_a65|ports/cortex_a5x|ports/cortex_a57|ports/cortex_a55|ports/cortex_a53|ports/cortex_a5|ports/cortex_a35|ports/cortex_a34|ports/cortex_a17|ports/cortex_a15|ports/cortex_a12|ports/c667x|ports/arm9|ports/arm11|ports/arc_hs|ports/arc_em|test|scripts|samples|docs|cmake|utility|ports_smp|ports_module|common_smp|common_modules" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="ThreadX"/>
|
||||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Core"/>
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Core"/>
|
||||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Drivers"/>
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Drivers"/>
|
||||||
</sourceEntries>
|
</sourceEntries>
|
||||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +1,2 @@
|
|||||||
Debug/
|
Debug/
|
||||||
|
ThreadX_Test Debug.launch
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
|
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
|
||||||
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
|
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
|
||||||
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
|
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
|
||||||
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="1917027786779964801" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true">
|
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-1274142773133381238" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true">
|
||||||
<language-scope id="org.eclipse.cdt.core.gcc"/>
|
<language-scope id="org.eclipse.cdt.core.gcc"/>
|
||||||
<language-scope id="org.eclipse.cdt.core.g++"/>
|
<language-scope id="org.eclipse.cdt.core.g++"/>
|
||||||
</provider>
|
</provider>
|
||||||
@ -16,7 +16,7 @@
|
|||||||
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
|
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
|
||||||
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
|
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
|
||||||
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
|
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
|
||||||
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="1880214758178947450" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true">
|
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-1200446777899700161" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true">
|
||||||
<language-scope id="org.eclipse.cdt.core.gcc"/>
|
<language-scope id="org.eclipse.cdt.core.gcc"/>
|
||||||
<language-scope id="org.eclipse.cdt.core.g++"/>
|
<language-scope id="org.eclipse.cdt.core.g++"/>
|
||||||
</provider>
|
</provider>
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
|
2F62501ED4689FB349E356AB974DBE57=E28E9ADA8844289BA4C9F2B226092C93
|
||||||
66BE74F758C12D739921AEA421D593D3=1
|
66BE74F758C12D739921AEA421D593D3=1
|
||||||
8DF89ED150041C4CBC7CB9A9CAA90856=EA9A7E9E5AC8D9468AB4F8E784208102
|
8DF89ED150041C4CBC7CB9A9CAA90856=E28E9ADA8844289BA4C9F2B226092C93
|
||||||
DC22A860405A8BF2F2C095E5B6529F12=EA9A7E9E5AC8D9468AB4F8E784208102
|
DC22A860405A8BF2F2C095E5B6529F12=A68C7E7603A475B97C64AD650453EC7C
|
||||||
eclipse.preferences.version=1
|
eclipse.preferences.version=1
|
||||||
|
@ -16,13 +16,12 @@
|
|||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
/* USER CODE END Header */
|
/* USER CODE END Header */
|
||||||
|
|
||||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||||
#ifndef __STM32_ASSERT_H
|
#ifndef __STM32_ASSERT_H
|
||||||
#define __STM32_ASSERT_H
|
#define __STM32_ASSERT_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Exported types ------------------------------------------------------------*/
|
/* Exported types ------------------------------------------------------------*/
|
||||||
@ -38,11 +37,11 @@
|
|||||||
* If expr is true, it returns no value.
|
* If expr is true, it returns no value.
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
|
#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
|
||||||
/* Exported functions ------------------------------------------------------- */
|
/* Exported functions ------------------------------------------------------- */
|
||||||
void assert_failed(uint8_t* file, uint32_t line);
|
void assert_failed(uint8_t *file, uint32_t line);
|
||||||
#else
|
#else
|
||||||
#define assert_param(expr) ((void)0U)
|
#define assert_param(expr) ((void)0U)
|
||||||
#endif /* USE_FULL_ASSERT */
|
#endif /* USE_FULL_ASSERT */
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -49,8 +49,6 @@
|
|||||||
void NMI_Handler(void);
|
void NMI_Handler(void);
|
||||||
void HardFault_Handler(void);
|
void HardFault_Handler(void);
|
||||||
void SVC_Handler(void);
|
void SVC_Handler(void);
|
||||||
void PendSV_Handler(void);
|
|
||||||
void SysTick_Handler(void);
|
|
||||||
/* USER CODE BEGIN EFP */
|
/* USER CODE BEGIN EFP */
|
||||||
|
|
||||||
/* USER CODE END EFP */
|
/* USER CODE END EFP */
|
||||||
|
313
Core/Inc/tx_user.h
Normal file
313
Core/Inc/tx_user.h
Normal file
@ -0,0 +1,313 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
* Copyright (c) 2024 Microsoft Corporation
|
||||||
|
*
|
||||||
|
* This program and the accompanying materials are made available under the
|
||||||
|
* terms of the MIT License which is available at
|
||||||
|
* https://opensource.org/licenses/MIT.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
/**************************************************************************/
|
||||||
|
/** */
|
||||||
|
/** ThreadX Component */
|
||||||
|
/** */
|
||||||
|
/** User Specific */
|
||||||
|
/** */
|
||||||
|
/**************************************************************************/
|
||||||
|
/**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* PORT SPECIFIC C INFORMATION RELEASE */
|
||||||
|
/* */
|
||||||
|
/* tx_user.h PORTABLE C */
|
||||||
|
/* 6.3.0 */
|
||||||
|
/* */
|
||||||
|
/* AUTHOR */
|
||||||
|
/* */
|
||||||
|
/* William E. Lamie, Microsoft Corporation */
|
||||||
|
/* */
|
||||||
|
/* DESCRIPTION */
|
||||||
|
/* */
|
||||||
|
/* This file contains user defines for configuring ThreadX in specific */
|
||||||
|
/* ways. This file will have an effect only if the application and */
|
||||||
|
/* ThreadX library are built with TX_INCLUDE_USER_DEFINE_FILE defined. */
|
||||||
|
/* Note that all the defines in this file may also be made on the */
|
||||||
|
/* command line when building ThreadX library and application objects. */
|
||||||
|
/* */
|
||||||
|
/* RELEASE HISTORY */
|
||||||
|
/* */
|
||||||
|
/* DATE NAME DESCRIPTION */
|
||||||
|
/* */
|
||||||
|
/* 05-19-2020 William E. Lamie Initial Version 6.0 */
|
||||||
|
/* 09-30-2020 Yuxin Zhou Modified comment(s), */
|
||||||
|
/* resulting in version 6.1 */
|
||||||
|
/* 03-02-2021 Scott Larson Modified comment(s), */
|
||||||
|
/* added option to remove */
|
||||||
|
/* FileX pointer, */
|
||||||
|
/* resulting in version 6.1.5 */
|
||||||
|
/* 06-02-2021 Scott Larson Added options for multiple */
|
||||||
|
/* block pool search & delay, */
|
||||||
|
/* resulting in version 6.1.7 */
|
||||||
|
/* 10-15-2021 Yuxin Zhou Modified comment(s), added */
|
||||||
|
/* user-configurable symbol */
|
||||||
|
/* TX_TIMER_TICKS_PER_SECOND */
|
||||||
|
/* resulting in version 6.1.9 */
|
||||||
|
/* 04-25-2022 Wenhui Xie Modified comment(s), */
|
||||||
|
/* optimized the definition of */
|
||||||
|
/* TX_TIMER_TICKS_PER_SECOND, */
|
||||||
|
/* resulting in version 6.1.11 */
|
||||||
|
/* 10-31-2023 Xiuwen Cai Modified comment(s), */
|
||||||
|
/* added option for random */
|
||||||
|
/* number stack filling, */
|
||||||
|
/* resulting in version 6.3.0 */
|
||||||
|
/* */
|
||||||
|
/**************************************************************************/
|
||||||
|
|
||||||
|
#ifndef TX_USER_H
|
||||||
|
#define TX_USER_H
|
||||||
|
|
||||||
|
|
||||||
|
/* Define various build options for the ThreadX port. The application should either make changes
|
||||||
|
here by commenting or un-commenting the conditional compilation defined OR supply the defines
|
||||||
|
though the compiler's equivalent of the -D option.
|
||||||
|
|
||||||
|
For maximum speed, the following should be defined:
|
||||||
|
|
||||||
|
TX_MAX_PRIORITIES 32
|
||||||
|
TX_DISABLE_PREEMPTION_THRESHOLD
|
||||||
|
TX_DISABLE_REDUNDANT_CLEARING
|
||||||
|
TX_DISABLE_NOTIFY_CALLBACKS
|
||||||
|
TX_NOT_INTERRUPTABLE
|
||||||
|
TX_TIMER_PROCESS_IN_ISR
|
||||||
|
TX_REACTIVATE_INLINE
|
||||||
|
TX_DISABLE_STACK_FILLING
|
||||||
|
TX_INLINE_THREAD_RESUME_SUSPEND
|
||||||
|
|
||||||
|
For minimum size, the following should be defined:
|
||||||
|
|
||||||
|
TX_MAX_PRIORITIES 32
|
||||||
|
TX_DISABLE_PREEMPTION_THRESHOLD
|
||||||
|
TX_DISABLE_REDUNDANT_CLEARING
|
||||||
|
TX_DISABLE_NOTIFY_CALLBACKS
|
||||||
|
TX_NO_FILEX_POINTER
|
||||||
|
TX_NOT_INTERRUPTABLE
|
||||||
|
TX_TIMER_PROCESS_IN_ISR
|
||||||
|
|
||||||
|
Of course, many of these defines reduce functionality and/or change the behavior of the
|
||||||
|
system in ways that may not be worth the trade-off. For example, the TX_TIMER_PROCESS_IN_ISR
|
||||||
|
results in faster and smaller code, however, it increases the amount of processing in the ISR.
|
||||||
|
In addition, some services that are available in timers are not available from ISRs and will
|
||||||
|
therefore return an error if this option is used. This may or may not be desirable for a
|
||||||
|
given application. */
|
||||||
|
|
||||||
|
|
||||||
|
/* Override various options with default values already assigned in tx_port.h. Please also refer
|
||||||
|
to tx_port.h for descriptions on each of these options. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define TX_MAX_PRIORITIES 32
|
||||||
|
#define TX_MINIMUM_STACK ????
|
||||||
|
#define TX_THREAD_USER_EXTENSION ????
|
||||||
|
#define TX_TIMER_THREAD_STACK_SIZE ????
|
||||||
|
#define TX_TIMER_THREAD_PRIORITY ????
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Define the common timer tick reference for use by other middleware components. The default
|
||||||
|
value is 10ms (i.e. 100 ticks, defined in tx_api.h), but may be replaced by a port-specific
|
||||||
|
version in tx_port.h or here.
|
||||||
|
Note: the actual hardware timer value may need to be changed (usually in tx_initialize_low_level). */
|
||||||
|
|
||||||
|
#define TX_TIMER_TICKS_PER_SECOND (1000UL)
|
||||||
|
|
||||||
|
/* Determine if there is a FileX pointer in the thread control block.
|
||||||
|
By default, the pointer is there for legacy/backwards compatibility.
|
||||||
|
The pointer must also be there for applications using FileX.
|
||||||
|
Define this to save space in the thread control block.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define TX_NO_FILEX_POINTER
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Determine if timer expirations (application timers, timeouts, and tx_thread_sleep calls
|
||||||
|
should be processed within the a system timer thread or directly in the timer ISR.
|
||||||
|
By default, the timer thread is used. When the following is defined, the timer expiration
|
||||||
|
processing is done directly from the timer ISR, thereby eliminating the timer thread control
|
||||||
|
block, stack, and context switching to activate it. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define TX_TIMER_PROCESS_IN_ISR
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Determine if in-line timer reactivation should be used within the timer expiration processing.
|
||||||
|
By default, this is disabled and a function call is used. When the following is defined,
|
||||||
|
reactivating is performed in-line resulting in faster timer processing but slightly larger
|
||||||
|
code size. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define TX_REACTIVATE_INLINE
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Determine is stack filling is enabled. By default, ThreadX stack filling is enabled,
|
||||||
|
which places an 0xEF pattern in each byte of each thread's stack. This is used by
|
||||||
|
debuggers with ThreadX-awareness and by the ThreadX run-time stack checking feature. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define TX_DISABLE_STACK_FILLING
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Determine whether or not stack checking is enabled. By default, ThreadX stack checking is
|
||||||
|
disabled. When the following is defined, ThreadX thread stack checking is enabled. If stack
|
||||||
|
checking is enabled (TX_ENABLE_STACK_CHECKING is defined), the TX_DISABLE_STACK_FILLING
|
||||||
|
define is negated, thereby forcing the stack fill which is necessary for the stack checking
|
||||||
|
logic. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define TX_ENABLE_STACK_CHECKING
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Determine if random number is used for stack filling. By default, ThreadX uses a fixed
|
||||||
|
pattern for stack filling. When the following is defined, ThreadX uses a random number
|
||||||
|
for stack filling. This is effective only when TX_ENABLE_STACK_CHECKING is defined. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define TX_ENABLE_RANDOM_NUMBER_STACK_FILLING
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Determine if preemption-threshold should be disabled. By default, preemption-threshold is
|
||||||
|
enabled. If the application does not use preemption-threshold, it may be disabled to reduce
|
||||||
|
code size and improve performance. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define TX_DISABLE_PREEMPTION_THRESHOLD
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Determine if global ThreadX variables should be cleared. If the compiler startup code clears
|
||||||
|
the .bss section prior to ThreadX running, the define can be used to eliminate unnecessary
|
||||||
|
clearing of ThreadX global variables. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define TX_DISABLE_REDUNDANT_CLEARING
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Determine if no timer processing is required. This option will help eliminate the timer
|
||||||
|
processing when not needed. The user will also have to comment out the call to
|
||||||
|
tx_timer_interrupt, which is typically made from assembly language in
|
||||||
|
tx_initialize_low_level. Note: if TX_NO_TIMER is used, the define TX_TIMER_PROCESS_IN_ISR
|
||||||
|
must also be used and tx_timer_initialize must be removed from ThreadX library. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define TX_NO_TIMER
|
||||||
|
#ifndef TX_TIMER_PROCESS_IN_ISR
|
||||||
|
#define TX_TIMER_PROCESS_IN_ISR
|
||||||
|
#endif
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Determine if the notify callback option should be disabled. By default, notify callbacks are
|
||||||
|
enabled. If the application does not use notify callbacks, they may be disabled to reduce
|
||||||
|
code size and improve performance. */
|
||||||
|
|
||||||
|
#define TX_DISABLE_NOTIFY_CALLBACKS
|
||||||
|
|
||||||
|
|
||||||
|
/* Determine if the tx_thread_resume and tx_thread_suspend services should have their internal
|
||||||
|
code in-line. This results in a larger image, but improves the performance of the thread
|
||||||
|
resume and suspend services. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define TX_INLINE_THREAD_RESUME_SUSPEND
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Determine if the internal ThreadX code is non-interruptable. This results in smaller code
|
||||||
|
size and less processing overhead, but increases the interrupt lockout time. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define TX_NOT_INTERRUPTABLE
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Determine if the trace event logging code should be enabled. This causes slight increases in
|
||||||
|
code size and overhead, but provides the ability to generate system trace information which
|
||||||
|
is available for viewing in TraceX. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define TX_ENABLE_EVENT_TRACE
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Determine if block pool performance gathering is required by the application. When the following is
|
||||||
|
defined, ThreadX gathers various block pool performance information. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define TX_BLOCK_POOL_ENABLE_PERFORMANCE_INFO
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Determine if byte pool performance gathering is required by the application. When the following is
|
||||||
|
defined, ThreadX gathers various byte pool performance information. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define TX_BYTE_POOL_ENABLE_PERFORMANCE_INFO
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Determine if event flags performance gathering is required by the application. When the following is
|
||||||
|
defined, ThreadX gathers various event flags performance information. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define TX_EVENT_FLAGS_ENABLE_PERFORMANCE_INFO
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Determine if mutex performance gathering is required by the application. When the following is
|
||||||
|
defined, ThreadX gathers various mutex performance information. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define TX_MUTEX_ENABLE_PERFORMANCE_INFO
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Determine if queue performance gathering is required by the application. When the following is
|
||||||
|
defined, ThreadX gathers various queue performance information. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define TX_QUEUE_ENABLE_PERFORMANCE_INFO
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Determine if semaphore performance gathering is required by the application. When the following is
|
||||||
|
defined, ThreadX gathers various semaphore performance information. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define TX_SEMAPHORE_ENABLE_PERFORMANCE_INFO
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Determine if thread performance gathering is required by the application. When the following is
|
||||||
|
defined, ThreadX gathers various thread performance information. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define TX_THREAD_ENABLE_PERFORMANCE_INFO
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Determine if timer performance gathering is required by the application. When the following is
|
||||||
|
defined, ThreadX gathers various timer performance information. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define TX_TIMER_ENABLE_PERFORMANCE_INFO
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Override options for byte pool searches of multiple blocks. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define TX_BYTE_POOL_MULTIPLE_BLOCK_SEARCH 20
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Override options for byte pool search delay to avoid thrashing. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define TX_BYTE_POOL_DELAY_VALUE 3
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
22
Core/Src/LED.c
Normal file
22
Core/Src/LED.c
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
/*
|
||||||
|
* LED.c
|
||||||
|
*
|
||||||
|
* Created on: Apr 19, 2024
|
||||||
|
* Author: Carst
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include "stm32g0xx_ll_gpio.h"
|
||||||
|
#include "tx_api.h"
|
||||||
|
|
||||||
|
void LED(ULONG thread_input)
|
||||||
|
{
|
||||||
|
(void)thread_input;
|
||||||
|
|
||||||
|
while(true)
|
||||||
|
{
|
||||||
|
tx_thread_sleep(500U);
|
||||||
|
|
||||||
|
LL_GPIO_TogglePin(GPIOA, LL_GPIO_PIN_10);
|
||||||
|
}
|
||||||
|
}
|
@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
/* Private includes ----------------------------------------------------------*/
|
/* Private includes ----------------------------------------------------------*/
|
||||||
/* USER CODE BEGIN Includes */
|
/* USER CODE BEGIN Includes */
|
||||||
|
#include "tx_api.h"
|
||||||
/* USER CODE END Includes */
|
/* USER CODE END Includes */
|
||||||
|
|
||||||
/* Private typedef -----------------------------------------------------------*/
|
/* Private typedef -----------------------------------------------------------*/
|
||||||
@ -100,6 +100,7 @@ void SystemClock_Config(void)
|
|||||||
/* Set APB1 prescaler*/
|
/* Set APB1 prescaler*/
|
||||||
LL_RCC_SetAPB1Prescaler(LL_RCC_APB1_DIV_1);
|
LL_RCC_SetAPB1Prescaler(LL_RCC_APB1_DIV_1);
|
||||||
LL_Init1msTick(64000000);
|
LL_Init1msTick(64000000);
|
||||||
|
LL_SYSTICK_EnableIT();
|
||||||
/* Update CMSIS variable (which can be updated also through SystemCoreClockUpdate function) */
|
/* Update CMSIS variable (which can be updated also through SystemCoreClockUpdate function) */
|
||||||
LL_SetSystemCoreClock(64000000);
|
LL_SetSystemCoreClock(64000000);
|
||||||
}
|
}
|
||||||
@ -141,7 +142,19 @@ __NO_RETURN int main(void)
|
|||||||
SystemClock_Config();
|
SystemClock_Config();
|
||||||
MX_GPIO_Init();
|
MX_GPIO_Init();
|
||||||
|
|
||||||
|
tx_kernel_enter();
|
||||||
|
|
||||||
|
__BKPT(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
extern void LED(ULONG thread_input);
|
||||||
|
TX_THREAD tx_LED;
|
||||||
|
ULONG stack_LED[64];
|
||||||
|
|
||||||
|
void tx_application_define(void *first_unused_memory)
|
||||||
|
{
|
||||||
|
(void)first_unused_memory;
|
||||||
|
tx_thread_create(&tx_LED, "LED", LED, 0UL, stack_LED, sizeof(stack_LED), 1U, 1U, TX_NO_TIME_SLICE, TX_AUTO_START);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* USER CODE END 4 */
|
/* USER CODE END 4 */
|
||||||
|
@ -106,33 +106,6 @@ void SVC_Handler(void)
|
|||||||
/* USER CODE END SVC_IRQn 1 */
|
/* USER CODE END SVC_IRQn 1 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function handles Pendable request for system service.
|
|
||||||
*/
|
|
||||||
void PendSV_Handler(void)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN PendSV_IRQn 0 */
|
|
||||||
|
|
||||||
/* USER CODE END PendSV_IRQn 0 */
|
|
||||||
/* USER CODE BEGIN PendSV_IRQn 1 */
|
|
||||||
|
|
||||||
/* USER CODE END PendSV_IRQn 1 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function handles System tick timer.
|
|
||||||
*/
|
|
||||||
void SysTick_Handler(void)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN SysTick_IRQn 0 */
|
|
||||||
|
|
||||||
/* USER CODE END SysTick_IRQn 0 */
|
|
||||||
|
|
||||||
/* USER CODE BEGIN SysTick_IRQn 1 */
|
|
||||||
|
|
||||||
/* USER CODE END SysTick_IRQn 1 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
/* STM32G0xx Peripheral Interrupt Handlers */
|
/* STM32G0xx Peripheral Interrupt Handlers */
|
||||||
/* Add here the Interrupt Handlers for the used peripherals. */
|
/* Add here the Interrupt Handlers for the used peripherals. */
|
||||||
|
@ -192,7 +192,7 @@ g_pfnVectors:
|
|||||||
|
|
||||||
.weak HardFault_Handler
|
.weak HardFault_Handler
|
||||||
.thumb_set HardFault_Handler,Default_Handler
|
.thumb_set HardFault_Handler,Default_Handler
|
||||||
|
/*
|
||||||
.weak SVC_Handler
|
.weak SVC_Handler
|
||||||
.thumb_set SVC_Handler,Default_Handler
|
.thumb_set SVC_Handler,Default_Handler
|
||||||
|
|
||||||
@ -201,7 +201,7 @@ g_pfnVectors:
|
|||||||
|
|
||||||
.weak SysTick_Handler
|
.weak SysTick_Handler
|
||||||
.thumb_set SysTick_Handler,Default_Handler
|
.thumb_set SysTick_Handler,Default_Handler
|
||||||
|
*/
|
||||||
.weak WWDG_IRQHandler
|
.weak WWDG_IRQHandler
|
||||||
.thumb_set WWDG_IRQHandler,Default_Handler
|
.thumb_set WWDG_IRQHandler,Default_Handler
|
||||||
|
|
||||||
|
185
Core/Startup/tx_initialize_low_level.S
Normal file
185
Core/Startup/tx_initialize_low_level.S
Normal file
@ -0,0 +1,185 @@
|
|||||||
|
@/***************************************************************************
|
||||||
|
@ * Copyright (c) 2024 Microsoft Corporation
|
||||||
|
@ *
|
||||||
|
@ * This program and the accompanying materials are made available under the
|
||||||
|
@ * terms of the MIT License which is available at
|
||||||
|
@ * https://opensource.org/licenses/MIT.
|
||||||
|
@ *
|
||||||
|
@ * SPDX-License-Identifier: MIT
|
||||||
|
@ **************************************************************************/
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@/**************************************************************************/
|
||||||
|
@/**************************************************************************/
|
||||||
|
@/** */
|
||||||
|
@/** ThreadX Component */
|
||||||
|
@/** */
|
||||||
|
@/** Initialize */
|
||||||
|
@/** */
|
||||||
|
@/**************************************************************************/
|
||||||
|
@/**************************************************************************/
|
||||||
|
@
|
||||||
|
@#define TX_SOURCE_CODE
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@/* Include necessary system files. */
|
||||||
|
@
|
||||||
|
@#include "tx_api.h"
|
||||||
|
@#include "tx_initialize.h"
|
||||||
|
@#include "tx_thread.h"
|
||||||
|
@#include "tx_timer.h"
|
||||||
|
@
|
||||||
|
@
|
||||||
|
.global _tx_thread_system_stack_ptr
|
||||||
|
.global _tx_initialize_unused_memory
|
||||||
|
.global __RAM_segment_used_end__
|
||||||
|
.global _tx_thread_context_save
|
||||||
|
.global _tx_thread_context_restore
|
||||||
|
.global _tx_timer_interrupt
|
||||||
|
.global _vectors
|
||||||
|
@
|
||||||
|
.text
|
||||||
|
.align 4
|
||||||
|
.syntax unified
|
||||||
|
@/**************************************************************************/
|
||||||
|
@/* */
|
||||||
|
@/* FUNCTION RELEASE */
|
||||||
|
@/* */
|
||||||
|
@/* _tx_initialize_low_level Cortex-M0/GNU */
|
||||||
|
@/* 6.1 */
|
||||||
|
@/* AUTHOR */
|
||||||
|
@/* */
|
||||||
|
@/* William E. Lamie, Microsoft Corporation */
|
||||||
|
@/* */
|
||||||
|
@/* DESCRIPTION */
|
||||||
|
@/* */
|
||||||
|
@/* This function is responsible for any low-level processor */
|
||||||
|
@/* initialization, including setting up interrupt vectors, setting */
|
||||||
|
@/* up a periodic timer interrupt source, saving the system stack */
|
||||||
|
@/* pointer for use in ISR processing later, and finding the first */
|
||||||
|
@/* available RAM memory address for tx_application_define. */
|
||||||
|
@/* */
|
||||||
|
@/* INPUT */
|
||||||
|
@/* */
|
||||||
|
@/* None */
|
||||||
|
@/* */
|
||||||
|
@/* OUTPUT */
|
||||||
|
@/* */
|
||||||
|
@/* None */
|
||||||
|
@/* */
|
||||||
|
@/* CALLS */
|
||||||
|
@/* */
|
||||||
|
@/* None */
|
||||||
|
@/* */
|
||||||
|
@/* CALLED BY */
|
||||||
|
@/* */
|
||||||
|
@/* _tx_initialize_kernel_enter ThreadX entry function */
|
||||||
|
@/* */
|
||||||
|
@/* RELEASE HISTORY */
|
||||||
|
@/* */
|
||||||
|
@/* DATE NAME DESCRIPTION */
|
||||||
|
@/* */
|
||||||
|
@/* 05-19-2020 William E. Lamie Initial Version 6.0 */
|
||||||
|
@/* 09-30-2020 Scott Larson Modified comment(s), and */
|
||||||
|
@/* commented out code for */
|
||||||
|
@/* enabling DWT, */
|
||||||
|
@/* resulting in version 6.1 */
|
||||||
|
@/* */
|
||||||
|
@/**************************************************************************/
|
||||||
|
@VOID _tx_initialize_low_level(VOID)
|
||||||
|
@{
|
||||||
|
.global _tx_initialize_low_level
|
||||||
|
.thumb_func
|
||||||
|
_tx_initialize_low_level:
|
||||||
|
@
|
||||||
|
@ /* Disable interrupts during ThreadX initialization. */
|
||||||
|
@
|
||||||
|
CPSID i
|
||||||
|
/* Configure handler priorities. */
|
||||||
|
|
||||||
|
LDR r1, =0x00000000 // Rsrv, UsgF, BusF, MemM
|
||||||
|
LDR r0, =0xE000E000 // Build address of NVIC registers
|
||||||
|
LDR r2, =0xD18 //
|
||||||
|
ADD r0, r0, r2 //
|
||||||
|
STR r1, [r0] // Setup System Handlers 4-7 Priority Registers
|
||||||
|
LDR r1, =0xFF000000 // SVCl, Rsrv, Rsrv, Rsrv
|
||||||
|
LDR r0, =0xE000E000 // Build address of NVIC registers
|
||||||
|
LDR r2, =0xD1C //
|
||||||
|
ADD r0, r0, r2 //
|
||||||
|
STR r1, [r0] // Setup System Handlers 8-11 Priority Registers
|
||||||
|
// Note: SVC must be lowest priority, which is 0xFF
|
||||||
|
LDR r1, =0x40FF0000 // SysT, PnSV, Rsrv, DbgM
|
||||||
|
LDR r0, =0xE000E000 // Build address of NVIC registers
|
||||||
|
LDR r2, =0xD20 //
|
||||||
|
ADD r0, r0, r2 //
|
||||||
|
STR r1, [r0] // Setup System Handlers 12-15 Priority Registers
|
||||||
|
// Note: PnSV must be lowest priority, which is 0xFF
|
||||||
|
|
||||||
|
/* Return to caller. */
|
||||||
|
BX lr
|
||||||
|
// }
|
||||||
|
|
||||||
|
/* Define shells for each of the unused vectors. */
|
||||||
|
.global __tx_BadHandler
|
||||||
|
.thumb_func
|
||||||
|
__tx_BadHandler:
|
||||||
|
B __tx_BadHandler
|
||||||
|
|
||||||
|
/* added to catch the hardfault */
|
||||||
|
.global __tx_HardfaultHandler
|
||||||
|
.thumb_func
|
||||||
|
__tx_HardfaultHandler:
|
||||||
|
B __tx_HardfaultHandler
|
||||||
|
|
||||||
|
/* Generic interrupt handler template */
|
||||||
|
.global __tx_IntHandler
|
||||||
|
.thumb_func
|
||||||
|
__tx_IntHandler:
|
||||||
|
// VOID InterruptHandler (VOID)
|
||||||
|
// {
|
||||||
|
PUSH {r0, lr}
|
||||||
|
#ifdef TX_ENABLE_EXECUTION_CHANGE_NOTIFY
|
||||||
|
BL _tx_execution_isr_enter // Call the ISR enter function
|
||||||
|
#endif
|
||||||
|
/* Do interrupt handler work here */
|
||||||
|
/* BL <your C Function>.... */
|
||||||
|
#ifdef TX_ENABLE_EXECUTION_CHANGE_NOTIFY
|
||||||
|
BL _tx_execution_isr_exit // Call the ISR exit function
|
||||||
|
#endif
|
||||||
|
POP {r0, r1}
|
||||||
|
MOV lr, r1
|
||||||
|
BX lr
|
||||||
|
// }
|
||||||
|
|
||||||
|
/* System Tick timer interrupt handler */
|
||||||
|
.global __tx_SysTickHandler
|
||||||
|
.global SysTick_Handler
|
||||||
|
.thumb_func
|
||||||
|
__tx_SysTickHandler:
|
||||||
|
.thumb_func
|
||||||
|
SysTick_Handler:
|
||||||
|
// VOID SysTick_Handler (VOID)
|
||||||
|
// {
|
||||||
|
PUSH {r0, lr}
|
||||||
|
#if (defined(TX_ENABLE_EXECUTION_CHANGE_NOTIFY) || defined(TX_EXECUTION_PROFILE_ENABLE))
|
||||||
|
BL _tx_execution_isr_enter // Call the ISR enter function
|
||||||
|
#endif
|
||||||
|
BL _tx_timer_interrupt
|
||||||
|
#if (defined(TX_ENABLE_EXECUTION_CHANGE_NOTIFY) || defined(TX_EXECUTION_PROFILE_ENABLE))
|
||||||
|
BL _tx_execution_isr_exit // Call the ISR exit function
|
||||||
|
#endif
|
||||||
|
POP {r0, r1}
|
||||||
|
MOV lr, r1
|
||||||
|
BX lr
|
||||||
|
// }
|
||||||
|
|
||||||
|
/* NMI, DBG handlers */
|
||||||
|
.global __tx_NMIHandler
|
||||||
|
.thumb_func
|
||||||
|
__tx_NMIHandler:
|
||||||
|
B __tx_NMIHandler
|
||||||
|
|
||||||
|
.global __tx_DBGHandler
|
||||||
|
.thumb_func
|
||||||
|
__tx_DBGHandler:
|
||||||
|
B __tx_DBGHandler
|
@ -60,7 +60,7 @@ SECTIONS
|
|||||||
} >FLASH
|
} >FLASH
|
||||||
|
|
||||||
/* The program code and other data into "FLASH" Rom type memory */
|
/* The program code and other data into "FLASH" Rom type memory */
|
||||||
.text :
|
.text (READONLY) :
|
||||||
{
|
{
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
*(.text) /* .text sections (code) */
|
*(.text) /* .text sections (code) */
|
||||||
@ -77,7 +77,7 @@ SECTIONS
|
|||||||
} >FLASH
|
} >FLASH
|
||||||
|
|
||||||
/* Constant data into "FLASH" Rom type memory */
|
/* Constant data into "FLASH" Rom type memory */
|
||||||
.rodata :
|
.rodata (READONLY) :
|
||||||
{
|
{
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
*(.rodata) /* .rodata sections (constants, strings, etc.) */
|
*(.rodata) /* .rodata sections (constants, strings, etc.) */
|
||||||
@ -85,13 +85,13 @@ SECTIONS
|
|||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
} >FLASH
|
} >FLASH
|
||||||
|
|
||||||
.ARM.extab : {
|
.ARM.extab (READONLY) : {
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
*(.ARM.extab* .gnu.linkonce.armextab.*)
|
*(.ARM.extab* .gnu.linkonce.armextab.*)
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
} >FLASH
|
} >FLASH
|
||||||
|
|
||||||
.ARM : {
|
.ARM (READONLY) : {
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
__exidx_start = .;
|
__exidx_start = .;
|
||||||
*(.ARM.exidx*)
|
*(.ARM.exidx*)
|
||||||
@ -99,7 +99,7 @@ SECTIONS
|
|||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
} >FLASH
|
} >FLASH
|
||||||
|
|
||||||
.preinit_array :
|
.preinit_array (READONLY) :
|
||||||
{
|
{
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
PROVIDE_HIDDEN (__preinit_array_start = .);
|
PROVIDE_HIDDEN (__preinit_array_start = .);
|
||||||
@ -108,7 +108,7 @@ SECTIONS
|
|||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
} >FLASH
|
} >FLASH
|
||||||
|
|
||||||
.init_array :
|
.init_array (READONLY) :
|
||||||
{
|
{
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
PROVIDE_HIDDEN (__init_array_start = .);
|
PROVIDE_HIDDEN (__init_array_start = .);
|
||||||
@ -118,7 +118,7 @@ SECTIONS
|
|||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
} >FLASH
|
} >FLASH
|
||||||
|
|
||||||
.fini_array :
|
.fini_array (READONLY) :
|
||||||
{
|
{
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
PROVIDE_HIDDEN (__fini_array_start = .);
|
PROVIDE_HIDDEN (__fini_array_start = .);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#MicroXplorer Configuration settings - do not modify
|
#MicroXplorer Configuration settings - do not modify
|
||||||
CAD.formats=
|
CAD.formats=[]
|
||||||
CAD.pinconfig=
|
CAD.pinconfig=Dual
|
||||||
CAD.provider=
|
CAD.provider=
|
||||||
File.Version=6
|
File.Version=6
|
||||||
GPIO.groupedBy=Group By Peripherals
|
GPIO.groupedBy=Group By Peripherals
|
||||||
@ -23,14 +23,14 @@ Mcu.PinsNb=6
|
|||||||
Mcu.ThirdPartyNb=0
|
Mcu.ThirdPartyNb=0
|
||||||
Mcu.UserConstants=
|
Mcu.UserConstants=
|
||||||
Mcu.UserName=STM32G071KBTx
|
Mcu.UserName=STM32G071KBTx
|
||||||
MxCube.Version=6.10.0
|
MxCube.Version=6.11.0
|
||||||
MxDb.Version=DB.6.0.100
|
MxDb.Version=DB.6.0.110
|
||||||
NVIC.ForceEnableDMAVector=true
|
NVIC.ForceEnableDMAVector=true
|
||||||
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||||
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||||
NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:false\:false\:false\:false
|
||||||
NVIC.SVC_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true
|
NVIC.SVC_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true
|
||||||
NVIC.SysTick_IRQn=true\:3\:0\:false\:false\:true\:false\:true\:false
|
NVIC.SysTick_IRQn=true\:3\:0\:false\:false\:false\:false\:true\:false
|
||||||
PA10.Locked=true
|
PA10.Locked=true
|
||||||
PA10.Signal=GPIO_Output
|
PA10.Signal=GPIO_Output
|
||||||
PA13.Mode=Serial_Wire
|
PA13.Mode=Serial_Wire
|
||||||
@ -71,7 +71,7 @@ ProjectManager.ToolChainLocation=
|
|||||||
ProjectManager.UAScriptAfterPath=
|
ProjectManager.UAScriptAfterPath=
|
||||||
ProjectManager.UAScriptBeforePath=
|
ProjectManager.UAScriptBeforePath=
|
||||||
ProjectManager.UnderRoot=true
|
ProjectManager.UnderRoot=true
|
||||||
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-LL-false,2-MX_GPIO_Init-GPIO-false-LL-true
|
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-LL-true,2-MX_GPIO_Init-GPIO-false-LL-true
|
||||||
RCC.ADCFreq_Value=64000000
|
RCC.ADCFreq_Value=64000000
|
||||||
RCC.AHBFreq_Value=64000000
|
RCC.AHBFreq_Value=64000000
|
||||||
RCC.APBFreq_Value=64000000
|
RCC.APBFreq_Value=64000000
|
||||||
|
Loading…
x
Reference in New Issue
Block a user