Skip to content

Commit

Permalink
Merge pull request #13 from imahjoub/9-add-target-nucleo-l432kc
Browse files Browse the repository at this point in the history
9 add target nucleo l432kc
  • Loading branch information
imahjoub authored Aug 3, 2024
2 parents 3f3125d + 4b404e2 commit 49c40b3
Show file tree
Hide file tree
Showing 8 changed files with 184 additions and 23 deletions.
24 changes: 24 additions & 0 deletions Build/VS/UniversalBareMetal.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,12 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\Src\App\C\OS\OS_Task.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='stm32f446re|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='stm32l432kc|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\Src\Target\Host\Mcal\mcal.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='stm32f446re|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='stm32l432kc|x64'">true</ExcludedFromBuild>
Expand Down Expand Up @@ -90,6 +96,12 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='stm32l432kc|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\Src\Target\stm32l432kc\OS\OS.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='stm32f446re|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='stm32l432kc|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\Src\Target\stm32l432kc\Startup\IntVect.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='stm32f446re|x64'">true</ExcludedFromBuild>
Expand All @@ -110,6 +122,12 @@
<None Include="..\..\Src\Target\stm32l432kc\Make\stm32l432kc.ld" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\Src\App\C\OS\OS_Cfg.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='stm32f446re|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='stm32l432kc|x64'">true</ExcludedFromBuild>
</ClInclude>
<ClInclude Include="..\..\Src\Target\Host\Mcal\mcal.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='stm32f446re|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='stm32l432kc|x64'">true</ExcludedFromBuild>
Expand Down Expand Up @@ -186,6 +204,12 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='stm32l432kc|x64'">true</ExcludedFromBuild>
</ClInclude>
<ClInclude Include="..\..\Src\Target\stm32l432kc\OS\OS.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='stm32f446re|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='stm32l432kc|x64'">true</ExcludedFromBuild>
</ClInclude>
<ClInclude Include="..\..\Src\Util\Cpp\util_noncopyable.h" />
<ClInclude Include="..\..\Src\Util\Cpp\util_time.h" />
<ClInclude Include="..\..\Src\Util\C\UtilTimer.h" />
Expand Down
18 changes: 18 additions & 0 deletions Build/VS/UniversalBareMetal.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,12 @@
<Filter Include="Source Files\Src\Util\C">
<UniqueIdentifier>{a45a3942-f76a-45ff-a692-7bb355eb8e53}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\Src\App\C\OS">
<UniqueIdentifier>{bd12dccf-bd29-4f88-8701-9be712fea8aa}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\Src\Target\stm32l432kc\OS">
<UniqueIdentifier>{da74b66b-3426-400e-a8b0-e21cea469bcc}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\Src\target\stm32f446re\startup\crt0.cpp">
Expand Down Expand Up @@ -118,6 +124,12 @@
<ClCompile Include="..\..\Src\App\C\App.c">
<Filter>Source Files\Src\App\C</Filter>
</ClCompile>
<ClCompile Include="..\..\Src\App\C\OS\OS_Task.c">
<Filter>Source Files\Src\App\C\OS</Filter>
</ClCompile>
<ClCompile Include="..\..\Src\Target\stm32l432kc\OS\OS.c">
<Filter>Source Files\Src\Target\stm32l432kc\OS</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="..\..\Src\Target\stm32l432kc\Make\make_stm32l432kc.gmk">
Expand Down Expand Up @@ -194,5 +206,11 @@
<ClInclude Include="..\..\Src\Util\Cpp\util_time.h">
<Filter>Source Files\Src\Util\Cpp</Filter>
</ClInclude>
<ClInclude Include="..\..\Src\App\C\OS\OS_Cfg.h">
<Filter>Source Files\Src\App\C\OS</Filter>
</ClInclude>
<ClInclude Include="..\..\Src\Target\stm32l432kc\OS\OS.h">
<Filter>Source Files\Src\Target\stm32l432kc\OS</Filter>
</ClInclude>
</ItemGroup>
</Project>
32 changes: 9 additions & 23 deletions Src/App/C/App.c
Original file line number Diff line number Diff line change
@@ -1,39 +1,25 @@
#include <stdint.h>
#include <Mcal/Mcu.h>
#include <Mcal/Reg.h>
#include <Mcal/SysTick.h>
#include <OS/OS.h>
#include <Util/C/UtilTimer.h>

void msDelay(volatile uint32_t count);

// Simple delay function
void msDelay(volatile uint32_t count)
{
while (count--)
{
__asm volatile ("nop"); // No operation (do nothing)
}
}


int main(void)
{
/* Configure the System clock and flash */
SystemInit();
SetSysClock();

/*. Enable GPIO Clock for GPIOB */
RCC_AHB2ENR |= (1U << 1U);
/* Configure systick timer.*/
SysTick_Init();

/*. Configure PB3 as output */
GPIOB_MODER |= (1U << 6U);
GPIOB_MODER &= ~(1U << 7U);
/* Initialize the OS. This calls the task init-functions one time only */
OS_Init();

for(;;)
{
/* Toggle PB3 to turn the LED on and off */
GPIOB_ODR ^= (1U << 3U);
msDelay(1000000U);
}
/* Start the cooperative multitasking scheduler */
OS_Start();

return 0;

}
24 changes: 24 additions & 0 deletions Src/App/C/OS/OS_Cfg.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#ifndef OS_CFG_2023_08_23_H
#define OS_CFG_2023_08_23_H

#if defined(__cplusplus)
extern "C"
{
#endif

extern void Task01_Init(void);

extern void Task01_Func(void);

#define OS_CFG_TASK_LIST_ENTRY(init, func, t0, cycle) { (init), (func), (t0), (cycle) }

#define OS_CFG_TASK_LIST_INIT \
{ \
OS_CFG_TASK_LIST_ENTRY(Task01_Init, Task01_Func, 0U, 17U), \
}

#if defined(__cplusplus)
}
#endif

#endif /* OS_CFG_2023_08_23_H */
40 changes: 40 additions & 0 deletions Src/App/C/OS/OS_Task.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#include <stdint.h>
#include <string.h>

#include <Mcal/Mcu.h>
#include <Mcal/Reg.h>
#include <Util/C/UtilTimer.h>

static uint64_t TaskTimer02;

/************************* TASK1 *********************************/
void Task01_Init(void);
void Task01_Func(void);

void Task01_Init(void)
{
/*. Enable GPIO Clock for GPIOB */
RCC_AHB2ENR |= (1U << 1U);

/*. Configure PB3 as output */
GPIOB_MODER |= (1U << 6U);
GPIOB_MODER &= ~(1U << 7U);

/* Toggle the LED pin */
GPIOB_ODR |= (uint32_t) (1UL << 3U);

/* Set the next timer timeout to be 1s later, */
/* Toggling will be sequentially carried out in the task. */
TaskTimer02 = TimerStart(1000U);
}

void Task01_Func(void)
{
if(TimerTimeout(TaskTimer02))
{
TaskTimer02 = TimerStart(1000U);

/* Toggle the LED pin */
GPIOB_ODR ^= (uint32_t) (1UL << 3U);
}
}
2 changes: 2 additions & 0 deletions Src/Target/stm32l432kc/Make/make_stm32l432kc.gmk
Original file line number Diff line number Diff line change
Expand Up @@ -140,9 +140,11 @@ LDFLAGS = $(CPPFLAGS) \
#------------------------------------------------------------------------------

SRC_FILES = $(PATH_SRC)/App/C/App \
$(PATH_SRC)/App/C/OS/OS_Task \
$(PATH_TARGET)/Mcal/Gpt \
$(PATH_TARGET)/Mcal/Mcu \
$(PATH_TARGET)/Mcal/SysTick \
$(PATH_TARGET)/OS/OS \
$(PATH_TARGET)/Startup/IntVect \
$(PATH_TARGET)/Startup/SysStartup

Expand Down
51 changes: 51 additions & 0 deletions Src/Target/stm32l432kc/OS/OS.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
#include <stddef.h>
#include <stdint.h>

#include <OS/OS.h>
#include <App/C/OS/OS_Cfg.h>
#include <Util/C/UtilTimer.h>

typedef struct TCB
{
void(*pInit)(void);
void(*pFunc)(void);
Gpt_ValueType CallTimeNext;
const unsigned CallCycle;
}
TCB;

static TCB TaskList[] = OS_CFG_TASK_LIST_INIT;


void OS_Init(void)
{
for(size_t i = (size_t) UINT8_C(0);
i < (size_t) (sizeof(TaskList) / sizeof(TaskList[(size_t) UINT8_C(0)]));
++i)
{
/* Call each task's init-function once at OS initialization.*/
TaskList[i].pInit();
}
}

void OS_Start(void)
{
/* Start the cooperative multitasking scheduler (and never return).*/
for(;;)
{
for(size_t i = (size_t) UINT8_C(0);
i < (size_t) (sizeof(TaskList) / sizeof(TaskList[(size_t) UINT8_C(0)]));
++i)
{
if(TimerTimeout(TaskList[i].CallTimeNext))
{
TaskList[i].CallTimeNext = TimerStart(TaskList[i].CallCycle);

TaskList[i].pFunc();

/* Implement an (optional) priority mechanism. */
break;
}
}
}
}
16 changes: 16 additions & 0 deletions Src/Target/stm32l432kc/OS/OS.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#ifndef OS_2023_08_23_H
#define OS_2023_08_23_H

#if defined(__cplusplus)
extern "C"
{
#endif

void OS_Init (void);
void OS_Start(void);

#if defined(__cplusplus)
}
#endif

#endif /* OS_2023_08_23_H */

0 comments on commit 49c40b3

Please sign in to comment.