1 /*----------------------------------------------------------------------------
3 *----------------------------------------------------------------------------*/
5 #include "stm32f2xx_hal.h" // Keil::Device:STM32Cube HAL:Common
6 #include "cmsis_dv.h" // ARM.API::CMSIS Driver Validation:Framework
8 #ifdef RTE_CMSIS_RTOS_RTX
9 extern uint32_t os_time;
11 uint32_t HAL_GetTick(void) {
16 #ifdef RTE_CMSIS_RTOS2
18 * Override default HAL_GetTick function
20 uint32_t HAL_GetTick (void) {
21 static uint32_t ticks = 0U;
24 if (osKernelGetState () == osKernelRunning) {
25 return ((uint32_t)osKernelGetTickCount ());
28 /* If Kernel is not running wait approximately 1 ms then increment
29 and return auxiliary tick counter value */
30 for (i = (SystemCoreClock >> 14U); i > 0U; i--) {
31 __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP();
32 __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP();
38 /*----------------------------------------------------------------------------
39 * SystemClock_Config: System Clock Configuration
40 *----------------------------------------------------------------------------*/
41 void SystemClock_Config(void);
42 void SystemClock_Config(void) {
43 RCC_OscInitTypeDef RCC_OscInitStruct;
44 RCC_ClkInitTypeDef RCC_ClkInitStruct;
46 /* Enable HSE Oscillator and activate PLL with HSE as source */
47 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
48 RCC_OscInitStruct.HSEState = RCC_HSE_ON;
49 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
50 RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
51 RCC_OscInitStruct.PLL.PLLM = 25;
52 RCC_OscInitStruct.PLL.PLLN = 240;
53 RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
54 RCC_OscInitStruct.PLL.PLLQ = 5;
55 HAL_RCC_OscConfig(&RCC_OscInitStruct);
57 /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2
59 RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK |
60 RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
61 RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
62 RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
63 RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
64 RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
65 HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_3);
76 HAL_Init(); // Initialize the HAL Library
78 SystemClock_Config(); // Configure the System Clock
80 osKernelInitialize (); // Initialize CMSIS-RTOS2
81 osThreadNew (cmsis_dv, NULL, NULL); // Create validation main thread
82 osKernelStart (); // Start thread execution