]> begriffs open source - cmsis-driver-validation/blob - Boards/Keil/MCBSTM32F200/CMSIS_DV_API/main.c
add all files from internal repository
[cmsis-driver-validation] / Boards / Keil / MCBSTM32F200 / CMSIS_DV_API / main.c
1 /*----------------------------------------------------------------------------
2  * Name:    main.c
3  * Purpose: 
4  *----------------------------------------------------------------------------*/
5
6 #include "stm32f2xx_hal.h"              // Keil::Device:STM32Cube HAL:Common
7 #include "cmsis_dv.h"                   // ARM.API::CMSIS Driver Validation:Framework
8
9 #ifdef RTE_CMSIS_RTOS_RTX
10 extern uint32_t os_time;
11
12 uint32_t HAL_GetTick(void) { 
13   return os_time; 
14 }
15 #endif
16
17 #ifdef RTE_CMSIS_RTOS2
18 /**
19   * Override default HAL_GetTick function
20   */
21 uint32_t HAL_GetTick (void) {
22   static uint32_t ticks = 0U;
23          uint32_t i;
24
25   if (osKernelGetState () == osKernelRunning) {
26     return ((uint32_t)osKernelGetTickCount ());
27   }
28
29   /* If Kernel is not running wait approximately 1 ms then increment 
30      and return auxiliary tick counter value */
31   for (i = (SystemCoreClock >> 14U); i > 0U; i--) {
32     __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP();
33     __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP();
34   }
35   return ++ticks;
36 }
37 #endif
38
39 /*----------------------------------------------------------------------------
40  * SystemClock_Config: System Clock Configuration
41  *----------------------------------------------------------------------------*/
42 void SystemClock_Config(void);
43 void SystemClock_Config(void) {
44   RCC_OscInitTypeDef RCC_OscInitStruct;
45   RCC_ClkInitTypeDef RCC_ClkInitStruct;
46
47   /* Enable HSE Oscillator and activate PLL with HSE as source */
48   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
49   RCC_OscInitStruct.HSEState = RCC_HSE_ON;
50   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
51   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
52   RCC_OscInitStruct.PLL.PLLM = 25;
53   RCC_OscInitStruct.PLL.PLLN = 240;
54   RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
55   RCC_OscInitStruct.PLL.PLLQ = 5;
56   HAL_RCC_OscConfig(&RCC_OscInitStruct);
57
58   /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2
59      clocks dividers */
60   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK |
61                                 RCC_CLOCKTYPE_PCLK1  | RCC_CLOCKTYPE_PCLK2;
62   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
63   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
64   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
65   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
66   HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_3);
67 }
68
69 /**
70   * @brief  Main program
71   * @param  None
72   * @retval None
73   */
74 int main(void)
75 {
76
77 #if defined(RTE_CMSIS_RTOS) || defined(RTE_CMSIS_RTOS2)
78   osKernelInitialize ();
79 #endif
80
81   HAL_Init();                               /* Initialize the HAL Library     */
82
83   SystemClock_Config();                     /* Configure the System Clock     */
84
85 #if defined(RTE_CMSIS_RTOS2)
86   osThreadNew(cmsis_dv, NULL, NULL);
87 #else
88   cmsis_dv(NULL);
89 #endif
90
91 #if defined(RTE_CMSIS_RTOS) || defined(RTE_CMSIS_RTOS2)
92   osKernelStart ();
93 #endif
94
95   /* Infinite loop */
96   while (1)
97   {
98   }
99 }