--- /dev/null
+/*\r
+ FreeRTOS.org V4.6.1 - Copyright (C) 2003-2007 Richard Barry.\r
+\r
+ This file is part of the FreeRTOS.org distribution.\r
+\r
+ FreeRTOS.org is free software; you can redistribute it and/or modify\r
+ it under the terms of the GNU General Public License as published by\r
+ the Free Software Foundation; either version 2 of the License, or\r
+ (at your option) any later version.\r
+\r
+ FreeRTOS.org is distributed in the hope that it will be useful,\r
+ but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ GNU General Public License for more details.\r
+\r
+ You should have received a copy of the GNU General Public License\r
+ along with FreeRTOS.org; if not, write to the Free Software\r
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
+\r
+ A special exception to the GPL can be applied should you wish to distribute\r
+ a combined work that includes FreeRTOS.org, without being obliged to provide\r
+ the source code for any proprietary components. See the licensing section\r
+ of http://www.FreeRTOS.org for full details of how and when the exception\r
+ can be applied.\r
+\r
+ ***************************************************************************\r
+ See http://www.FreeRTOS.org for documentation, latest information, license\r
+ and contact details. Please ensure to read the configuration and relevant\r
+ port sections of the online documentation.\r
+\r
+ Also see http://www.SafeRTOS.com a version that has been certified for use\r
+ in safety critical systems, plus commercial licensing, development and\r
+ support options.\r
+ ***************************************************************************\r
+*/\r
+\r
+#ifndef FREERTOS_CONFIG_H\r
+#define FREERTOS_CONFIG_H\r
+\r
+/* Library includes. */\r
+#include "stm32f10x_lib.h"\r
+\r
+/*-----------------------------------------------------------\r
+ * Application specific definitions.\r
+ *\r
+ * These definitions should be adjusted for your particular hardware and\r
+ * application requirements.\r
+ *\r
+ * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE\r
+ * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.\r
+ *----------------------------------------------------------*/\r
+\r
+#define configUSE_PREEMPTION 1\r
+#define configUSE_IDLE_HOOK 0\r
+#define configUSE_TICK_HOOK 1\r
+#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 72000000 ) \r
+#define configTICK_RATE_HZ ( ( portTickType ) 1000 )\r
+#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )\r
+#define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 128 )\r
+#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 17 * 1024 ) )\r
+#define configMAX_TASK_NAME_LEN ( 16 )\r
+#define configUSE_TRACE_FACILITY 0\r
+#define configUSE_16_BIT_TICKS 0\r
+#define configIDLE_SHOULD_YIELD 1\r
+#define configUSE_MUTEXES 1\r
+\r
+/* Co-routine definitions. */\r
+#define configUSE_CO_ROUTINES 0\r
+#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )\r
+\r
+/* Set the following definitions to 1 to include the API function, or zero\r
+to exclude the API function. */\r
+\r
+#define INCLUDE_vTaskPrioritySet 1\r
+#define INCLUDE_uxTaskPriorityGet 1\r
+#define INCLUDE_vTaskDelete 1\r
+#define INCLUDE_vTaskCleanUpResources 0\r
+#define INCLUDE_vTaskSuspend 1\r
+#define INCLUDE_vTaskDelayUntil 1\r
+#define INCLUDE_vTaskDelay 1\r
+\r
+/* This is the raw value as per the Cortex-M3 NVIC. Values can be 255\r
+(lowest) to 0 (1?) (highest). */\r
+#define configKERNEL_INTERRUPT_PRIORITY 255\r
+\r
+/* This is the value being used as per the ST library which permits 16\r
+priority values, 0 to 15. This must correspond to the\r
+configKERNEL_INTERRUPT_PRIORITY setting. Here 15 corresponds to the lowest\r
+NVIC value of 255. */\r
+#define configLIBRARY_KERNEL_INTERRUPT_PRIORITY 15\r
+\r
+#endif /* FREERTOS_CONFIG_H */\r
+\r
--- /dev/null
+/*\r
+ FreeRTOS.org V4.6.1 - Copyright (C) 2003-2007 Richard Barry.\r
+\r
+ This file is part of the FreeRTOS.org distribution.\r
+\r
+ FreeRTOS.org is free software; you can redistribute it and/or modify\r
+ it under the terms of the GNU General Public License as published by\r
+ the Free Software Foundation; either version 2 of the License, or\r
+ (at your option) any later version.\r
+\r
+ FreeRTOS.org is distributed in the hope that it will be useful,\r
+ but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ GNU General Public License for more details.\r
+\r
+ You should have received a copy of the GNU General Public License\r
+ along with FreeRTOS.org; if not, write to the Free Software\r
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
+\r
+ A special exception to the GPL can be applied should you wish to distribute\r
+ a combined work that includes FreeRTOS.org, without being obliged to provide\r
+ the source code for any proprietary components. See the licensing section\r
+ of http://www.FreeRTOS.org for full details of how and when the exception\r
+ can be applied.\r
+\r
+ ***************************************************************************\r
+ See http://www.FreeRTOS.org for documentation, latest information, license\r
+ and contact details. Please ensure to read the configuration and relevant\r
+ port sections of the online documentation.\r
+\r
+ Also see http://www.SafeRTOS.com a version that has been certified for use\r
+ in safety critical systems, plus commercial licensing, development and\r
+ support options.\r
+ ***************************************************************************\r
+*/\r
+\r
+/*-----------------------------------------------------------\r
+ * Simple parallel port IO routines.\r
+ *-----------------------------------------------------------*/\r
+\r
+/* FreeRTOS.org includes. */\r
+#include "FreeRTOS.h"\r
+#include "task.h"\r
+#include "partest.h"\r
+\r
+#define partstMAX_OUTPUT_LED ( 2 )\r
+#define partstFIRST_LED GPIO_Pin_8\r
+\r
+static unsigned portSHORT usOutputValue = 0;\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+void vParTestInitialise( void )\r
+{\r
+GPIO_InitTypeDef GPIO_InitStructure;\r
+\r
+ /* Enable LED GPIO clock. */\r
+ RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE );\r
+\r
+ /* Configure LED pins as output push-pull. */\r
+ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 ;\r
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;\r
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;\r
+\r
+ GPIO_Init( GPIOB, &GPIO_InitStructure );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )\r
+{\r
+unsigned portSHORT usBit;\r
+\r
+ vTaskSuspendAll();\r
+ {\r
+ if( uxLED < partstMAX_OUTPUT_LED )\r
+ {\r
+ usBit = partstFIRST_LED << uxLED;\r
+\r
+ if( xValue == pdFALSE )\r
+ {\r
+ usBit ^= ( unsigned portSHORT ) 0xffff;\r
+ usOutputValue &= usBit;\r
+ }\r
+ else\r
+ {\r
+ usOutputValue |= usBit;\r
+ }\r
+\r
+ GPIO_Write( GPIOB, usOutputValue );\r
+ } \r
+ }\r
+ xTaskResumeAll();\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vParTestToggleLED( unsigned portBASE_TYPE uxLED )\r
+{\r
+unsigned portSHORT usBit;\r
+\r
+ vTaskSuspendAll();\r
+ {\r
+ if( uxLED < partstMAX_OUTPUT_LED )\r
+ {\r
+ usBit = partstFIRST_LED << uxLED;\r
+\r
+ if( usOutputValue & usBit )\r
+ {\r
+ usOutputValue &= ~usBit;\r
+ }\r
+ else\r
+ {\r
+ usOutputValue |= usBit;\r
+ }\r
+\r
+ GPIO_Write( GPIOB, usOutputValue );\r
+ }\r
+ }\r
+ xTaskResumeAll();\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
--- /dev/null
+<!-- DWF2XML 0.01.29 - Raisonance Dwarf information extractor -->\r
+<aoffile Header="RTOSDemo" Path="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\RTOSDemo.elf">\r
+ <Def>\r
+ <Col Header="DeclFile" Desc="File"/>\r
+ <Col Header="Type" Desc="Type"/>\r
+ <Col Header="Header" Desc="Name"/>\r
+ </Def>\r
+ <type Header="u16" Icon="1" Type="type" Desc=": unsigned int" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="37" Pointer="No"/>\r
+ <type Header="GPIOSpeed_TypeDef" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_gpio.h" DeclLine="36" Pointer="No"/>\r
+ <type Header="GPIOMode_TypeDef" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_gpio.h" DeclLine="51" Pointer="No"/>\r
+ <type Header="GPIO_InitTypeDef" Icon="1" Type="type" Desc=": struct " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_gpio.h" DeclLine="64" Pointer="No"/>\r
+ <func Header="LED_Set" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" DeclLine="201"/>\r
+ <func Header="LED_Handler_hw" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" DeclLine="93"/>\r
+ <func Header="LED_Handler" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" DeclLine="73"/>\r
+ <func Header="LED_Init" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" DeclLine="46"/>\r
+ <variable Header="dummy_var" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" DeclLine="77" Pointer="No"/>\r
+ <variable Header="Application_Pointer_Mgr" Icon="2" Type="variable" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" DeclLine="429" Pointer="No"/>\r
+ <variable Header="GreenLED_Counter" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" DeclLine="19" Pointer="No"/>\r
+ <variable Header="RedLED_Counter" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" DeclLine="20" Pointer="No"/>\r
+ <variable Header="GreenLED_mode" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" DeclLine="21" Pointer="No"/>\r
+ <variable Header="RedLED_mode" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" DeclLine="22" Pointer="No"/>\r
+ <variable Header="GreenLED_newmode" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" DeclLine="23" Pointer="No"/>\r
+ <variable Header="RedLED_newmode" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" DeclLine="24" Pointer="No"/>\r
+ <variable Header="HalfPeriod_LF" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" DeclLine="25" Pointer="No"/>\r
+ <variable Header="HalfPeriod_HF" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" DeclLine="26" Pointer="No"/>\r
+ <variable Header="Period_LF" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" DeclLine="27" Pointer="No"/>\r
+ <variable Header="Period_HF" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" DeclLine="28" Pointer="No"/>\r
+ <func Header="Reset_Handler" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\crt0_STM32x.c" DeclLine="188"/>\r
+ <variable Header="g_pfnVectors" Icon="2" Type="variable" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\crt0_STM32x.c" DeclLine="110" Pointer="No"/>\r
+ <type Header="s16" Icon="1" Type="type" Desc=": int" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="29" Pointer="No"/>\r
+ <type Header="u32" Icon="1" Type="type" Desc=": unsigned long" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="36" Pointer="No"/>\r
+ <type Header="u16" Icon="1" Type="type" Desc=": unsigned int" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="37" Pointer="No"/>\r
+ <type Header="u8" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="38" Pointer="No"/>\r
+ <type Header="GPIO_TypeDef" Icon="1" Type="type" Desc=": struct " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_map.h" DeclLine="208" Pointer="No"/>\r
+ <type Header="GPIOSpeed_TypeDef" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_gpio.h" DeclLine="36" Pointer="No"/>\r
+ <type Header="GPIOMode_TypeDef" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_gpio.h" DeclLine="51" Pointer="No"/>\r
+ <type Header="GPIO_InitTypeDef" Icon="1" Type="type" Desc=": struct " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_gpio.h" DeclLine="64" Pointer="No"/>\r
+ <type Header="BitAction" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_gpio.h" DeclLine="70" Pointer="No"/>\r
+ <type Header="TIM_TimeBaseInitTypeDef" Icon="1" Type="type" Desc=": struct " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_tim.h" DeclLine="38" Pointer="No"/>\r
+ <type Header="TIM_OCInitTypeDef" Icon="1" Type="type" Desc=": struct " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_tim.h" DeclLine="47" Pointer="No"/>\r
+ <type Header="DataConfigMode_TypeDef" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.h" DeclLine="26" Pointer="No"/>\r
+ <type Header="Rotate_H12_V_Match_TypeDef" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" DeclLine="101" Pointer="No"/>\r
+ <func Header="LCD_DataLinesWrite" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="202"/>\r
+ <func Header="LCD_SetBackLight" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="1053"/>\r
+ <func Header="LCD_SetBackLightOff" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="1076"/>\r
+ <func Header="LCD_SetBackLightOn" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="1092"/>\r
+ <func Header="LCD_GetBackLight" Icon="3" Type="func" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="1110"/>\r
+ <func Header="LCD_SetRotateScreen" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="1129"/>\r
+ <func Header="LCD_GetRotateScreen" Icon="3" Type="func" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="1148"/>\r
+ <func Header="LCD_GetScreenOrientation" Icon="3" Type="func" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="1186"/>\r
+ <func Header="LCD_CtrlLinesWrite" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="255"/>\r
+ <func Header="LCD_SendLCDData" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="707"/>\r
+ <func Header="LCD_SendLCDCmd" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="679"/>\r
+ <func Header="LCD_SetRect_For_Cmd" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="1028"/>\r
+ <func Header="LCD_DrawPixel" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="901"/>\r
+ <func Header="LCD_FillRect" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="777"/>\r
+ <func Header="LCD_DrawRect" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="873"/>\r
+ <func Header="LCD_SetScreenOrientation" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="1166"/>\r
+ <func Header="LCD_DisplayChar" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="1004"/>\r
+ <func Header="LCD_DataLinesConfig" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="167"/>\r
+ <func Header="LCD_ReadLCDData" Icon="3" Type="func" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="734"/>\r
+ <func Header="LCD_RectRead" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="934"/>\r
+ <func Header="LCD_GetPixel" Icon="3" Type="func" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="973"/>\r
+ <func Header="LCD_Handler" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="651"/>\r
+ <func Header="LCD_Init" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="613"/>\r
+ <variable Header="TIM_TimeBaseStructure" Icon="2" Type="variable" Desc=": struct " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="28" Pointer="No"/>\r
+ <variable Header="TIM_OCInitStructure" Icon="2" Type="variable" Desc=": struct " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="29" Pointer="No"/>\r
+ <variable Header="HandlerDivider" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="30" Pointer="No"/>\r
+ <variable Header="AsciiDotsTable" Icon="2" Type="variable" Desc=": unsigned char[1330]" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="42" Pointer="No"/>\r
+ <variable Header="dummy_var" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" DeclLine="77" Pointer="No"/>\r
+ <variable Header="Application_Pointer_Mgr" Icon="2" Type="variable" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" DeclLine="429" Pointer="No"/>\r
+ <variable Header="Current_CCR_BackLightStart" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="32" Pointer="No"/>\r
+ <variable Header="OrientationOffsetX" Icon="2" Type="variable" Desc=": long[4]" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="139" Pointer="No"/>\r
+ <variable Header="OrientationOffsetY" Icon="2" Type="variable" Desc=": long[4]" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" DeclLine="140" Pointer="No"/>\r
+ <type Header="s32" Icon="1" Type="type" Desc=": long" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="28" Pointer="No"/>\r
+ <type Header="s16" Icon="1" Type="type" Desc=": int" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="29" Pointer="No"/>\r
+ <type Header="u32" Icon="1" Type="type" Desc=": unsigned long" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="36" Pointer="No"/>\r
+ <type Header="u16" Icon="1" Type="type" Desc=": unsigned int" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="37" Pointer="No"/>\r
+ <type Header="u8" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="38" Pointer="No"/>\r
+ <type Header="GPIOSpeed_TypeDef" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_gpio.h" DeclLine="36" Pointer="No"/>\r
+ <type Header="GPIOMode_TypeDef" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_gpio.h" DeclLine="51" Pointer="No"/>\r
+ <type Header="GPIO_InitTypeDef" Icon="1" Type="type" Desc=": struct " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_gpio.h" DeclLine="64" Pointer="No"/>\r
+ <type Header="RCC_ClocksTypeDef" Icon="1" Type="type" Desc=": struct " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_rcc.h" DeclLine="37" Pointer="No"/>\r
+ <type Header="tHandler" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\scheduler.h" DeclLine="75" Pointer="No"/>\r
+ <func Header="_int2str" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" DeclLine="56"/>\r
+ <func Header="delay_unit" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" DeclLine="116"/>\r
+ <func Header="UTIL_GetBat" Icon="3" Type="func" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" DeclLine="138"/>\r
+ <func Header="UTIL_GetTemp" Icon="3" Type="func" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" DeclLine="167"/>\r
+ <func Header="UTIL_SetTempMode" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" DeclLine="202"/>\r
+ <func Header="UTIL_uint2str" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" DeclLine="251"/>\r
+ <func Header="UTIL_int2str" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" DeclLine="273"/>\r
+ <func Header="UTIL_GetPll" Icon="3" Type="func" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" DeclLine="372"/>\r
+ <func Header="UTIL_GetVersion" Icon="3" Type="func" Desc=": unsigned char CODE*" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" DeclLine="390"/>\r
+ <func Header="UTIL_ReadBackupRegister" Icon="3" Type="func" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" DeclLine="410"/>\r
+ <func Header="UTIL_WriteBackupRegister" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" DeclLine="429"/>\r
+ <func Header="UTIL_SetIrqHandler" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" DeclLine="449"/>\r
+ <type Header="tHandler" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\scheduler.h" DeclLine="75" Pointer="No"/>\r
+ <type Header="tHandler" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\scheduler.h" DeclLine="75" Pointer="No"/>\r
+ <func Header="UTIL_GetIrqHandler" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" DeclLine="471"/>\r
+ <func Header="UTIL_SetSchHandler" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" DeclLine="499"/>\r
+ <type Header="tHandler" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\scheduler.h" DeclLine="75" Pointer="No"/>\r
+ <type Header="tHandler" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\scheduler.h" DeclLine="75" Pointer="No"/>\r
+ <func Header="UTIL_GetSchHandler" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" DeclLine="524"/>\r
+ <func Header="UTIL_SetPll" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" DeclLine="291"/>\r
+ <func Header="UTIL_GetUsb" Icon="3" Type="func" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" DeclLine="223"/>\r
+ <type Header="tHandler" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\scheduler.h" DeclLine="75" Pointer="No"/>\r
+ <type Header="tHandler" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\scheduler.h" DeclLine="75" Pointer="No"/>\r
+ <variable Header="CurrentSpeed" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" DeclLine="25" Pointer="No"/>\r
+ <variable Header="dummy_var" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" DeclLine="77" Pointer="No"/>\r
+ <variable Header="RCC_ClockFreq" Icon="2" Type="variable" Desc=": struct " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" DeclLine="28" Pointer="No"/>\r
+ <variable Header="fTemperatureInFahrenheit" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" DeclLine="30" Pointer="No"/>\r
+ <variable Header="Application_Pointer_Mgr" Icon="2" Type="variable" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" DeclLine="429" Pointer="No"/>\r
+ <variable Header="dummycounter" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" DeclLine="29" Pointer="No"/>\r
+ <type Header="s16" Icon="1" Type="type" Desc=": int" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="29" Pointer="No"/>\r
+ <type Header="u32" Icon="1" Type="type" Desc=": unsigned long" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="36" Pointer="No"/>\r
+ <type Header="u16" Icon="1" Type="type" Desc=": unsigned int" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="37" Pointer="No"/>\r
+ <type Header="u8" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="38" Pointer="No"/>\r
+ <type Header="Rotate_H12_V_Match_TypeDef" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" DeclLine="101" Pointer="No"/>\r
+ <func Header="DRAW_SetCharMagniCoeff" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="218"/>\r
+ <func Header="DRAW_GetCharMagniCoeff" Icon="3" Type="func" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="236"/>\r
+ <func Header="DRAW_GetTextColor" Icon="3" Type="func" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="254"/>\r
+ <func Header="DRAW_SetTextColor" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="272"/>\r
+ <func Header="DRAW_GetBGndColor" Icon="3" Type="func" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="290"/>\r
+ <func Header="DRAW_SetBGndColor" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="308"/>\r
+ <func Header="DRAW_SetDefaultColor" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="414"/>\r
+ <func Header="DRAW_Line" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="476"/>\r
+ <func Header="DRAW_DisplayStringWithMode" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="129"/>\r
+ <func Header="DRAW_DisplayStringInverted" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="397"/>\r
+ <func Header="DRAW_DisplayString" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="373"/>\r
+ <func Header="DRAW_DisplayTemp" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="437"/>\r
+ <func Header="DRAW_SetImage" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="335"/>\r
+ <func Header="DRAW_Init" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="178"/>\r
+ <variable Header="CharMagniCoeff" Icon="2" Type="variable" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="28" Pointer="No"/>\r
+ <variable Header="BGndColor" Icon="2" Type="variable" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="29" Pointer="No"/>\r
+ <variable Header="TextColor" Icon="2" Type="variable" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="30" Pointer="No"/>\r
+ <variable Header="dummy_var" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" DeclLine="77" Pointer="No"/>\r
+ <variable Header="fDisplayTime" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="32" Pointer="No"/>\r
+ <variable Header="Application_Pointer_Mgr" Icon="2" Type="variable" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" DeclLine="429" Pointer="No"/>\r
+ <variable Header="BatState" Icon="2" Type="variable" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="33" Pointer="No"/>\r
+ <variable Header="OldBatState" Icon="2" Type="variable" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="34" Pointer="No"/>\r
+ <variable Header="OldTHH" Icon="2" Type="variable" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="35" Pointer="No"/>\r
+ <variable Header="OldTMM" Icon="2" Type="variable" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="36" Pointer="No"/>\r
+ <variable Header="OldTSS" Icon="2" Type="variable" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="37" Pointer="No"/>\r
+ <variable Header="OldTemp" Icon="2" Type="variable" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="38" Pointer="No"/>\r
+ <variable Header="xBat" Icon="2" Type="variable" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="39" Pointer="No"/>\r
+ <variable Header="yBat" Icon="2" Type="variable" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="40" Pointer="No"/>\r
+ <variable Header="widthBat" Icon="2" Type="variable" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="41" Pointer="No"/>\r
+ <variable Header="heightBat" Icon="2" Type="variable" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="42" Pointer="No"/>\r
+ <variable Header="UsbState" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="43" Pointer="No"/>\r
+ <variable Header="OldUsbState" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="43" Pointer="No"/>\r
+ <variable Header="rotate_counter" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="47" Pointer="No"/>\r
+ <variable Header="previous_H12" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="48" Pointer="No"/>\r
+ <variable Header="previous_previous_H12" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="49" Pointer="No"/>\r
+ <variable Header="H12" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="50" Pointer="No"/>\r
+ <variable Header="CurrentScreenOrientation" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="51" Pointer="No"/>\r
+ <variable Header="CurrentRotateScreen" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" DeclLine="52" Pointer="No"/>\r
+ <type Header="s32" Icon="1" Type="type" Desc=": long" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="28" Pointer="No"/>\r
+ <type Header="s16" Icon="1" Type="type" Desc=": int" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="29" Pointer="No"/>\r
+ <type Header="u32" Icon="1" Type="type" Desc=": unsigned long" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="36" Pointer="No"/>\r
+ <type Header="u16" Icon="1" Type="type" Desc=": unsigned int" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="37" Pointer="No"/>\r
+ <type Header="u8" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="38" Pointer="No"/>\r
+ <type Header="GPIOSpeed_TypeDef" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_gpio.h" DeclLine="36" Pointer="No"/>\r
+ <type Header="GPIOMode_TypeDef" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_gpio.h" DeclLine="51" Pointer="No"/>\r
+ <type Header="GPIO_InitTypeDef" Icon="1" Type="type" Desc=": struct " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_gpio.h" DeclLine="64" Pointer="No"/>\r
+ <type Header="SPI_InitTypeDef" Icon="1" Type="type" Desc=": struct " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_spi.h" DeclLine="42" Pointer="No"/>\r
+ <type Header="Rotate_H12_V_Match_TypeDef" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" DeclLine="101" Pointer="No"/>\r
+ <type Header="tMEMS_Info" Icon="1" Type="type" Desc=": struct " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" DeclLine="124" Pointer="No"/>\r
+ <func Header="MEMS_GetPosition" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="523"/>\r
+ <func Header="MEMS_GetRotation" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="542"/>\r
+ <func Header="MEMS_SetNeutral" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="584"/>\r
+ <func Header="MEMS_GetInfo" Icon="3" Type="func" Desc=": struct CODE*" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="603"/>\r
+ <func Header="MEMS_SendByte" Icon="3" Type="func" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="236"/>\r
+ <func Header="MEMS_ChipSelect" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="215"/>\r
+ <func Header="MEMS_ReadID" Icon="3" Type="func" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="482"/>\r
+ <func Header="MEMS_ReadOutXY" Icon="3" Type="func" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="138"/>\r
+ <func Header="MEMS_Handler" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="381"/>\r
+ <func Header="MEMS_Init" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="266"/>\r
+ <variable Header="dummy_var" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" DeclLine="77" Pointer="No"/>\r
+ <variable Header="MEMS_Info" Icon="2" Type="variable" Desc=": struct " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="37" Pointer="No"/>\r
+ <variable Header="Application_Pointer_Mgr" Icon="2" Type="variable" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" DeclLine="429" Pointer="No"/>\r
+ <variable Header="TestingActive" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="38" Pointer="No"/>\r
+ <variable Header="StartingFromResetOrShockCounter" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="39" Pointer="No"/>\r
+ <variable Header="TimeCounterForDoubleClick" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="40" Pointer="No"/>\r
+ <variable Header="TimeLastShock" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="41" Pointer="No"/>\r
+ <variable Header="Gradient2" Icon="2" Type="variable" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="44" Pointer="No"/>\r
+ <variable Header="N_filtering" Icon="2" Type="variable" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="47" Pointer="No"/>\r
+ <variable Header="GradX" Icon="2" Type="variable" Desc=": int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="50" Pointer="No"/>\r
+ <variable Header="GradY" Icon="2" Type="variable" Desc=": int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="51" Pointer="No"/>\r
+ <variable Header="GradZ" Icon="2" Type="variable" Desc=": int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="52" Pointer="No"/>\r
+ <variable Header="fMovePtrX" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="59" Pointer="No"/>\r
+ <variable Header="iMovePtrX" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="60" Pointer="No"/>\r
+ <variable Header="tMovePtrX" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="61" Pointer="No"/>\r
+ <variable Header="fMovePtrY" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="62" Pointer="No"/>\r
+ <variable Header="iMovePtrY" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="63" Pointer="No"/>\r
+ <variable Header="tMovePtrY" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="64" Pointer="No"/>\r
+ <variable Header="fMovePtrZ" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="65" Pointer="No"/>\r
+ <variable Header="iMovePtrZ" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="66" Pointer="No"/>\r
+ <variable Header="tMovePtrZ" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="67" Pointer="No"/>\r
+ <variable Header="XInit" Icon="2" Type="variable" Desc=": int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="69" Pointer="No"/>\r
+ <variable Header="YInit" Icon="2" Type="variable" Desc=": int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="70" Pointer="No"/>\r
+ <variable Header="ZInit" Icon="2" Type="variable" Desc=": int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" DeclLine="71" Pointer="No"/>\r
+ <type Header="u32" Icon="1" Type="type" Desc=": unsigned long" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="36" Pointer="No"/>\r
+ <type Header="u16" Icon="1" Type="type" Desc=": unsigned int" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="37" Pointer="No"/>\r
+ <type Header="u8" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="38" Pointer="No"/>\r
+ <type Header="GPIOSpeed_TypeDef" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_gpio.h" DeclLine="36" Pointer="No"/>\r
+ <type Header="GPIOMode_TypeDef" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_gpio.h" DeclLine="51" Pointer="No"/>\r
+ <type Header="GPIO_InitTypeDef" Icon="1" Type="type" Desc=": struct " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_gpio.h" DeclLine="64" Pointer="No"/>\r
+ <type Header="RCC_ClocksTypeDef" Icon="1" Type="type" Desc=": struct " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_rcc.h" DeclLine="37" Pointer="No"/>\r
+ <type Header="TIM_TimeBaseInitTypeDef" Icon="1" Type="type" Desc=": struct " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_tim.h" DeclLine="38" Pointer="No"/>\r
+ <type Header="TIM_OCInitTypeDef" Icon="1" Type="type" Desc=": struct " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_tim.h" DeclLine="47" Pointer="No"/>\r
+ <func Header="BUZZER_GetMode" Icon="3" Type="func" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" DeclLine="358"/>\r
+ <func Header="BUZZER_SetFrequency" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" DeclLine="195"/>\r
+ <func Header="PlayMusic" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" DeclLine="104"/>\r
+ <func Header="BUZZER_SetMode" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" DeclLine="376"/>\r
+ <func Header="BUZZER_PlayMusic" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" DeclLine="464"/>\r
+ <func Header="BUZZER_Handler" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" DeclLine="291"/>\r
+ <func Header="BUZZER_Init" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" DeclLine="231"/>\r
+ <variable Header="TIM_TimeBaseStructure" Icon="2" Type="variable" Desc=": struct " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" DeclLine="54" Pointer="No"/>\r
+ <variable Header="TIM_OCInitStructure" Icon="2" Type="variable" Desc=": struct " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" DeclLine="55" Pointer="No"/>\r
+ <variable Header="dummy_var" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" DeclLine="77" Pointer="No"/>\r
+ <variable Header="Application_Pointer_Mgr" Icon="2" Type="variable" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" DeclLine="429" Pointer="No"/>\r
+ <variable Header="octave" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" DeclLine="26" Pointer="No"/>\r
+ <variable Header="note" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" DeclLine="43" Pointer="No"/>\r
+ <variable Header="buzz_counter" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" DeclLine="52" Pointer="No"/>\r
+ <variable Header="buzz_in_progress" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" DeclLine="53" Pointer="No"/>\r
+ <variable Header="CCR_Val" Icon="2" Type="variable" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" DeclLine="56" Pointer="No"/>\r
+ <variable Header="Buzzer_Mode" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" DeclLine="57" Pointer="No"/>\r
+ <variable Header="Buzzer_Counter" Icon="2" Type="variable" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" DeclLine="58" Pointer="No"/>\r
+ <variable Header="CurrentMelody" Icon="2" Type="variable" Desc=": unsigned char CODE*" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" DeclLine="61" Pointer="Yes"/>\r
+ <variable Header="CurrentMelodySTART" Icon="2" Type="variable" Desc=": unsigned char CODE*" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" DeclLine="62" Pointer="Yes"/>\r
+ <variable Header="DefaultOctave" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" DeclLine="63" Pointer="No"/>\r
+ <variable Header="DefaultDuration" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" DeclLine="64" Pointer="No"/>\r
+ <variable Header="DefaultBeats" Icon="2" Type="variable" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" DeclLine="65" Pointer="No"/>\r
+ <variable Header="Note_Freq" Icon="2" Type="variable" Desc=": unsigned int[16]" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" DeclLine="67" Pointer="No"/>\r
+ <type Header="s32" Icon="1" Type="type" Desc=": long" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="28" Pointer="No"/>\r
+ <type Header="s16" Icon="1" Type="type" Desc=": int" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="29" Pointer="No"/>\r
+ <type Header="u32" Icon="1" Type="type" Desc=": unsigned long" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="36" Pointer="No"/>\r
+ <type Header="u16" Icon="1" Type="type" Desc=": unsigned int" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="37" Pointer="No"/>\r
+ <type Header="u8" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="38" Pointer="No"/>\r
+ <type Header="tMEMS_Info" Icon="1" Type="type" Desc=": struct " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" DeclLine="124" Pointer="No"/>\r
+ <type Header="tPointer_Info" Icon="1" Type="type" Desc=": struct " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" DeclLine="194" Pointer="No"/>\r
+ <type Header="tAppPtrMgr" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" DeclLine="226" Pointer="No"/>\r
+ <func Header="POINTER_SetCurrentPointer" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="351"/>\r
+ <func Header="POINTER_GetCurrentAngleStart" Icon="3" Type="func" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="376"/>\r
+ <func Header="POINTER_SetCurrentAngleStart" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="394"/>\r
+ <func Header="POINTER_GetCurrentSpeedOnAngle" Icon="3" Type="func" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="412"/>\r
+ <func Header="POINTER_SetCurrentSpeedOnAngle" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="430"/>\r
+ <func Header="POINTER_SetCurrentAreaStore" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="453"/>\r
+ <func Header="POINTER_GetMode" Icon="3" Type="func" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="532"/>\r
+ <func Header="POINTER_GetState" Icon="3" Type="func" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="550"/>\r
+ <func Header="POINTER_SetRect" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="573"/>\r
+ <func Header="POINTER_SetRectScreen" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="615"/>\r
+ <func Header="POINTER_GetPos" Icon="3" Type="func" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="634"/>\r
+ <func Header="POINTER_SetPos" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="655"/>\r
+ <func Header="POINTER_SetApplication_Pointer_Mgr" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="845"/>\r
+ <type Header="tAppPtrMgr" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" DeclLine="226" Pointer="No"/>\r
+ <func Header="POINTER_SetColor" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="863"/>\r
+ <func Header="POINTER_GetColor" Icon="3" Type="func" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="881"/>\r
+ <func Header="POINTER_GetInfo" Icon="3" Type="func" Desc=": struct CODE*" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="899"/>\r
+ <func Header="POINTER_Restore" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="806"/>\r
+ <func Header="POINTER_Draw" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="682"/>\r
+ <func Header="POINTER_Save" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="759"/>\r
+ <func Header="POINTER_SetMode" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="473"/>\r
+ <func Header="POINTER_Init" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="289"/>\r
+ <func Header="POINTER_Handler" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="315"/>\r
+ <variable Header="dummy_var" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" DeclLine="77" Pointer="No"/>\r
+ <variable Header="POINTER_Info" Icon="2" Type="variable" Desc=": struct " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="58" Pointer="No"/>\r
+ <variable Header="BallPointerBmp" Icon="2" Type="variable" Desc=": unsigned char[7]" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="39" Pointer="No"/>\r
+ <variable Header="CurrentPointerBmp" Icon="2" Type="variable" Desc=": unsigned char CODE*" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="44" Pointer="Yes"/>\r
+ <variable Header="CurrentPointerColor" Icon="2" Type="variable" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="50" Pointer="No"/>\r
+ <variable Header="Application_Pointer_Mgr" Icon="2" Type="variable" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" DeclLine="429" Pointer="No"/>\r
+ <variable Header="locbuf" Icon="2" Type="variable" Desc=": unsigned char[7]" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="40" Pointer="No"/>\r
+ <variable Header="DefaultAreaStore" Icon="2" Type="variable" Desc=": unsigned char[98]" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="41" Pointer="No"/>\r
+ <variable Header="CurrentPointerWidth" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="45" Pointer="No"/>\r
+ <variable Header="CurrentPointerHeight" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="46" Pointer="No"/>\r
+ <variable Header="CurrentSpeedOnAngle" Icon="2" Type="variable" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="47" Pointer="No"/>\r
+ <variable Header="CurrentAngleStart" Icon="2" Type="variable" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="48" Pointer="No"/>\r
+ <variable Header="ptrAreaStore" Icon="2" Type="variable" Desc=": unsigned char CODE*" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="49" Pointer="Yes"/>\r
+ <variable Header="Pointer_Mode" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="51" Pointer="No"/>\r
+ <variable Header="Pointer_State" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="52" Pointer="No"/>\r
+ <variable Header="OUT_X" Icon="2" Type="variable" Desc=": int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="54" Pointer="No"/>\r
+ <variable Header="OUT_Y" Icon="2" Type="variable" Desc=": int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" DeclLine="55" Pointer="No"/>\r
+ <type Header="portTickType" Icon="1" Type="type" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\portmacro.h" DeclLine="74" Pointer="No"/>\r
+ <type Header="xQueueHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\Queue.h" DeclLine="43" Pointer="No"/>\r
+ <type Header="xLCDMessage" Icon="1" Type="type" Desc=": struct " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" DeclLine="158" Pointer="No"/>\r
+ <func Header="starting_delay" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" DeclLine="460"/>\r
+ <func Header="vApplicationTickHook" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" DeclLine="358"/>\r
+ <func Header="main" Icon="3" Type="func" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" DeclLine="215"/>\r
+ <func Header="prvFlashTask" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" DeclLine="443"/>\r
+ <func Header="prvLCDTask" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" DeclLine="251"/>\r
+ <func Header="prvCheckTask" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" DeclLine="301"/>\r
+ <variable Header="dummy_var" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" DeclLine="77" Pointer="No"/>\r
+ <variable Header="Application_Pointer_Mgr" Icon="2" Type="variable" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" DeclLine="429" Pointer="No"/>\r
+ <variable Header="pucImage" Icon="2" Type="variable" Desc=": unsigned int[3312]" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\bitmap.h" DeclLine="42" Pointer="No"/>\r
+ <type Header="xQueueHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\Queue.h" DeclLine="43" Pointer="No"/>\r
+ <variable Header="xLCDQueue" Icon="2" Type="variable" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" DeclLine="210" Pointer="No"/>\r
+ <type Header="u16" Icon="1" Type="type" Desc=": unsigned int" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="37" Pointer="No"/>\r
+ <type Header="GPIOSpeed_TypeDef" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_gpio.h" DeclLine="36" Pointer="No"/>\r
+ <type Header="GPIOMode_TypeDef" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_gpio.h" DeclLine="51" Pointer="No"/>\r
+ <type Header="GPIO_InitTypeDef" Icon="1" Type="type" Desc=": struct " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_gpio.h" DeclLine="64" Pointer="No"/>\r
+ <func Header="vParTestToggleLED" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ParTest\ParTest.c" DeclLine="97"/>\r
+ <func Header="vParTestSetLED" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ParTest\ParTest.c" DeclLine="70"/>\r
+ <func Header="vParTestInitialise" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ParTest\ParTest.c" DeclLine="54"/>\r
+ <variable Header="usOutputValue" Icon="2" Type="variable" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ParTest\ParTest.c" DeclLine="49" Pointer="No"/>\r
+ <type Header="u16" Icon="1" Type="type" Desc=": unsigned int" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="37" Pointer="No"/>\r
+ <type Header="u8" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="38" Pointer="No"/>\r
+ <type Header="FunctionalState" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="56" Pointer="No"/>\r
+ <type Header="NVIC_InitTypeDef" Icon="1" Type="type" Desc=": struct " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_nvic.h" DeclLine="37" Pointer="No"/>\r
+ <type Header="TIM_TimeBaseInitTypeDef" Icon="1" Type="type" Desc=": struct " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stm32f10x_tim.h" DeclLine="38" Pointer="No"/>\r
+ <func Header="vTimer2IntHandler" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\timertest.c" DeclLine="127"/>\r
+ <func Header="vSetupTimerTest" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\timertest.c" DeclLine="81"/>\r
+ <variable Header="usMaxJitter" Icon="2" Type="variable" Desc=": unsigned int" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\timertest.c" DeclLine="76" Pointer="No"/>\r
+ <type Header="__gnuc_va_list" Icon="1" Type="type" Desc=": " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stdarg.h" DeclLine="43" Pointer="No"/>\r
+ <type Header="__gnuc_va_list" Icon="1" Type="type" Desc=": " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stdarg.h" DeclLine="43" Pointer="No"/>\r
+ <type Header="va_list" Icon="1" Type="type" Desc=": " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stdarg.h" DeclLine="110" Pointer="No"/>\r
+ <func Header="printchar" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" DeclLine="32"/>\r
+ <func Header="prints" Icon="3" Type="func" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" DeclLine="46"/>\r
+ <func Header="printi" Icon="3" Type="func" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" DeclLine="79"/>\r
+ <func Header="print" Icon="3" Type="func" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" DeclLine="122"/>\r
+ <type Header="__gnuc_va_list" Icon="1" Type="type" Desc=": " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stdarg.h" DeclLine="43" Pointer="No"/>\r
+ <type Header="va_list" Icon="1" Type="type" Desc=": " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stdarg.h" DeclLine="110" Pointer="No"/>\r
+ <func Header="snprintf" Icon="3" Type="func" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" DeclLine="203"/>\r
+ <type Header="__gnuc_va_list" Icon="1" Type="type" Desc=": " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stdarg.h" DeclLine="43" Pointer="No"/>\r
+ <type Header="va_list" Icon="1" Type="type" Desc=": " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stdarg.h" DeclLine="110" Pointer="No"/>\r
+ <func Header="sprintf" Icon="3" Type="func" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" DeclLine="194"/>\r
+ <type Header="__gnuc_va_list" Icon="1" Type="type" Desc=": " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stdarg.h" DeclLine="43" Pointer="No"/>\r
+ <type Header="va_list" Icon="1" Type="type" Desc=": " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stdarg.h" DeclLine="110" Pointer="No"/>\r
+ <func Header="printf" Icon="3" Type="func" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" DeclLine="186"/>\r
+ <type Header="__gnuc_va_list" Icon="1" Type="type" Desc=": " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stdarg.h" DeclLine="43" Pointer="No"/>\r
+ <type Header="va_list" Icon="1" Type="type" Desc=": " DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stdarg.h" DeclLine="110" Pointer="No"/>\r
+ <type Header="xTaskHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\task.h" DeclLine="68" Pointer="No"/>\r
+ <type Header="xQueueHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\queue.h" DeclLine="43" Pointer="No"/>\r
+ <type Header="xQueueHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\queue.h" DeclLine="43" Pointer="No"/>\r
+ <type Header="xSemaphoreHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\semphr.h" DeclLine="42" Pointer="No"/>\r
+ <func Header="xAreGenericQueueTasksStillRunning" Icon="3" Type="func" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" DeclLine="513"/>\r
+ <func Header="vStartGenericQueueTasks" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" DeclLine="116"/>\r
+ <type Header="xQueueHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\queue.h" DeclLine="43" Pointer="No"/>\r
+ <type Header="xQueueHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\queue.h" DeclLine="43" Pointer="No"/>\r
+ <type Header="xSemaphoreHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\semphr.h" DeclLine="42" Pointer="No"/>\r
+ <func Header="prvMediumPriorityMutexTask" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" DeclLine="468"/>\r
+ <func Header="prvHighPriorityMutexTask" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" DeclLine="484"/>\r
+ <type Header="xQueueHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\queue.h" DeclLine="43" Pointer="No"/>\r
+ <type Header="xSemaphoreHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\semphr.h" DeclLine="42" Pointer="No"/>\r
+ <func Header="prvLowPriorityMutexTask" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" DeclLine="370"/>\r
+ <type Header="xQueueHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\queue.h" DeclLine="43" Pointer="No"/>\r
+ <type Header="xSemaphoreHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\semphr.h" DeclLine="42" Pointer="No"/>\r
+ <func Header="prvSendFrontAndBackTest" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" DeclLine="142"/>\r
+ <type Header="xQueueHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\queue.h" DeclLine="43" Pointer="No"/>\r
+ <variable Header="xErrorDetected" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" DeclLine="99" Pointer="No"/>\r
+ <variable Header="ulLoopCounter" Icon="2" Type="variable" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" DeclLine="103" Pointer="No"/>\r
+ <variable Header="ulLoopCounter2" Icon="2" Type="variable" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" DeclLine="104" Pointer="No"/>\r
+ <variable Header="ulGuardedVariable" Icon="2" Type="variable" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" DeclLine="107" Pointer="No"/>\r
+ <type Header="xTaskHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\task.h" DeclLine="68" Pointer="No"/>\r
+ <variable Header="xHighPriorityMutexTask" Icon="2" Type="variable" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" DeclLine="111" Pointer="No"/>\r
+ <type Header="xTaskHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\task.h" DeclLine="68" Pointer="No"/>\r
+ <variable Header="xMediumPriorityMutexTask" Icon="2" Type="variable" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" DeclLine="111" Pointer="No"/>\r
+ <type Header="portTickType" Icon="1" Type="type" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\portmacro.h" DeclLine="74" Pointer="No"/>\r
+ <type Header="xQueueHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\queue.h" DeclLine="43" Pointer="No"/>\r
+ <type Header="xQueueHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\queue.h" DeclLine="43" Pointer="No"/>\r
+ <type Header="xBlockingQueueParameters" Icon="1" Type="type" Desc=": struct BLOCKING_QUEUE_PARAMETERS" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" DeclLine="89" Pointer="No"/>\r
+ <func Header="xAreBlockingQueuesStillRunning" Icon="3" Type="func" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" DeclLine="261"/>\r
+ <func Header="vStartBlockingQueueTasks" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" DeclLine="110"/>\r
+ <func Header="vBlockingQueueProducer" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" DeclLine="192"/>\r
+ <func Header="vBlockingQueueConsumer" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" DeclLine="223"/>\r
+ <variable Header="sBlockingConsumerCount" Icon="2" Type="variable" Desc=": int[3]" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" DeclLine="101" Pointer="No"/>\r
+ <variable Header="sBlockingProducerCount" Icon="2" Type="variable" Desc=": int[3]" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" DeclLine="105" Pointer="No"/>\r
+ <type Header="portTickType" Icon="1" Type="type" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\portmacro.h" DeclLine="74" Pointer="No"/>\r
+ <type Header="xTaskHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\task.h" DeclLine="68" Pointer="No"/>\r
+ <type Header="xQueueHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\queue.h" DeclLine="43" Pointer="No"/>\r
+ <func Header="xAreBlockTimeTestTasksStillRunning" Icon="3" Type="func" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" DeclLine="449"/>\r
+ <func Header="vCreateBlockTimeTasks" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" DeclLine="86"/>\r
+ <func Header="vSecondaryBlockTimeTestTask" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" DeclLine="353"/>\r
+ <func Header="vPrimaryBlockTimeTestTask" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" DeclLine="97"/>\r
+ <type Header="xQueueHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\queue.h" DeclLine="43" Pointer="No"/>\r
+ <variable Header="xTestQueue" Icon="2" Type="variable" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" DeclLine="65" Pointer="No"/>\r
+ <type Header="xTaskHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\task.h" DeclLine="68" Pointer="No"/>\r
+ <variable Header="xSecondary" Icon="2" Type="variable" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" DeclLine="69" Pointer="No"/>\r
+ <variable Header="xPrimaryCycles" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" DeclLine="72" Pointer="No"/>\r
+ <variable Header="xSecondaryCycles" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" DeclLine="72" Pointer="No"/>\r
+ <variable Header="xErrorOccurred" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" DeclLine="73" Pointer="No"/>\r
+ <variable Header="xRunIndicator" Icon="2" Type="variable" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" DeclLine="77" Pointer="No"/>\r
+ <type Header="xTaskHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\task.h" DeclLine="68" Pointer="No"/>\r
+ <type Header="xQueueHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\queue.h" DeclLine="43" Pointer="No"/>\r
+ <func Header="xAreQueuePeekTasksStillRunning" Icon="3" Type="func" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" DeclLine="404"/>\r
+ <func Header="vStartQueuePeekTasks" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" DeclLine="91"/>\r
+ <type Header="xQueueHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\queue.h" DeclLine="43" Pointer="No"/>\r
+ <func Header="prvMediumPriorityPeekTask" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" DeclLine="272"/>\r
+ <type Header="xQueueHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\queue.h" DeclLine="43" Pointer="No"/>\r
+ <func Header="prvHighPriorityPeekTask" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" DeclLine="217"/>\r
+ <type Header="xQueueHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\queue.h" DeclLine="43" Pointer="No"/>\r
+ <func Header="prvHighestPriorityPeekTask" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" DeclLine="108"/>\r
+ <type Header="xQueueHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\queue.h" DeclLine="43" Pointer="No"/>\r
+ <func Header="prvLowPriorityPeekTask" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" DeclLine="313"/>\r
+ <type Header="xQueueHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\queue.h" DeclLine="43" Pointer="No"/>\r
+ <variable Header="xErrorDetected" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" DeclLine="80" Pointer="No"/>\r
+ <variable Header="ulLoopCounter" Icon="2" Type="variable" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" DeclLine="84" Pointer="No"/>\r
+ <type Header="xTaskHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\task.h" DeclLine="68" Pointer="No"/>\r
+ <variable Header="xMediumPriorityTask" Icon="2" Type="variable" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" DeclLine="87" Pointer="No"/>\r
+ <type Header="xTaskHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\task.h" DeclLine="68" Pointer="No"/>\r
+ <variable Header="xHighPriorityTask" Icon="2" Type="variable" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" DeclLine="87" Pointer="No"/>\r
+ <type Header="xTaskHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\task.h" DeclLine="68" Pointer="No"/>\r
+ <variable Header="xHighestPriorityTask" Icon="2" Type="variable" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" DeclLine="87" Pointer="No"/>\r
+ <type Header="xQueueHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\queue.h" DeclLine="43" Pointer="No"/>\r
+ <func Header="xArePollingQueuesStillRunning" Icon="3" Type="func" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\PollQ.c" DeclLine="197"/>\r
+ <func Header="vStartPolledQueueTasks" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\PollQ.c" DeclLine="98"/>\r
+ <type Header="xQueueHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\queue.h" DeclLine="43" Pointer="No"/>\r
+ <func Header="vPolledQueueProducer" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\PollQ.c" DeclLine="111"/>\r
+ <func Header="vPolledQueueConsumer" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\PollQ.c" DeclLine="150"/>\r
+ <variable Header="xPollingConsumerCount" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\PollQ.c" DeclLine="93" Pointer="No"/>\r
+ <variable Header="xPollingProducerCount" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\PollQ.c" DeclLine="93" Pointer="No"/>\r
+ <type Header="pdTASK_CODE" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\projdefs.h" DeclLine="41" Pointer="No"/>\r
+ <type Header="portTickType" Icon="1" Type="type" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\portmacro.h" DeclLine="74" Pointer="No"/>\r
+ <type Header="xListItem" Icon="1" Type="type" Desc=": struct xLIST_ITEM" DeclFile="C:\E\Dev\FreeRTOS\Source\include\list.h" DeclLine="89" Pointer="No"/>\r
+ <type Header="xMiniListItem" Icon="1" Type="type" Desc=": struct xMINI_LIST_ITEM" DeclFile="C:\E\Dev\FreeRTOS\Source\include\list.h" DeclLine="97" Pointer="No"/>\r
+ <type Header="xList" Icon="1" Type="type" Desc=": struct xLIST" DeclFile="C:\E\Dev\FreeRTOS\Source\include\list.h" DeclLine="107" Pointer="No"/>\r
+ <type Header="xTaskHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\task.h" DeclLine="68" Pointer="No"/>\r
+ <type Header="xTimeOutType" Icon="1" Type="type" Desc=": struct xTIME_OUT" DeclFile="C:\E\Dev\FreeRTOS\Source\include\task.h" DeclLine="77" Pointer="No"/>\r
+ <type Header="tskTCB" Icon="1" Type="type" Desc=": struct tskTaskControlBlock" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="271" Pointer="No"/>\r
+ <func Header="prvIsTaskSuspended" Icon="3" Type="func" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="1004"/>\r
+ <func Header="vTaskSwitchContext" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="1476"/>\r
+ <func Header="vTaskSetTimeOutState" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="1616"/>\r
+ <func Header="xTaskCheckForTimeOut" Icon="3" Type="func" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="1623"/>\r
+ <func Header="vTaskMissedYield" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="1662"/>\r
+ <func Header="vTaskPriorityDisinherit" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="2011"/>\r
+ <type Header="xTaskHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\task.h" DeclLine="68" Pointer="No"/>\r
+ <type Header="xTaskHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\task.h" DeclLine="68" Pointer="No"/>\r
+ <type Header="xTaskHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\task.h" DeclLine="68" Pointer="No"/>\r
+ <func Header="vTaskPriorityInherit" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="1980"/>\r
+ <type Header="xTaskHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\task.h" DeclLine="68" Pointer="No"/>\r
+ <func Header="xTaskRemoveFromEventList" Icon="3" Type="func" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="1569"/>\r
+ <func Header="xTaskResumeFromISR" Icon="3" Type="func" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="1074"/>\r
+ <type Header="xTaskHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\task.h" DeclLine="68" Pointer="No"/>\r
+ <type Header="xTaskHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\task.h" DeclLine="68" Pointer="No"/>\r
+ <func Header="xTaskGetCurrentTaskHandle" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="1934"/>\r
+ <type Header="xTaskHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\task.h" DeclLine="68" Pointer="No"/>\r
+ <func Header="uxTaskGetNumberOfTasks" Icon="3" Type="func" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="1260"/>\r
+ <func Header="xTaskGetTickCount" Icon="3" Type="func" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="1245"/>\r
+ <func Header="vTaskSuspendAll" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="1159"/>\r
+ <func Header="uxTaskPriorityGet" Icon="3" Type="func" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="843"/>\r
+ <type Header="xTaskHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\task.h" DeclLine="68" Pointer="No"/>\r
+ <func Header="vTaskPlaceOnEventList" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="1499"/>\r
+ <func Header="vTaskIncrementTick" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="1369"/>\r
+ <func Header="xTaskResumeAll" Icon="3" Type="func" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="1167"/>\r
+ <func Header="vTaskResume" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="1034"/>\r
+ <type Header="xTaskHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\task.h" DeclLine="68" Pointer="No"/>\r
+ <func Header="vTaskSuspend" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="963"/>\r
+ <type Header="xTaskHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\task.h" DeclLine="68" Pointer="No"/>\r
+ <func Header="vTaskPrioritySet" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="865"/>\r
+ <type Header="xTaskHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\task.h" DeclLine="68" Pointer="No"/>\r
+ <func Header="vTaskDelay" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="784"/>\r
+ <func Header="vTaskDelayUntil" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="709"/>\r
+ <func Header="vTaskDelete" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="649"/>\r
+ <type Header="xTaskHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\task.h" DeclLine="68" Pointer="No"/>\r
+ <func Header="vTaskEndScheduler" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="1148"/>\r
+ <func Header="prvIdleTask" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="1678"/>\r
+ <func Header="xTaskCreate" Icon="3" Type="func" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="528"/>\r
+ <type Header="pdTASK_CODE" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\projdefs.h" DeclLine="41" Pointer="No"/>\r
+ <type Header="xTaskHandle" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\task.h" DeclLine="68" Pointer="No"/>\r
+ <func Header="vTaskStartScheduler" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="1111"/>\r
+ <variable Header="pxReadyTasksLists" Icon="2" Type="variable" Desc=": struct xLIST[5]" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="279" Pointer="No"/>\r
+ <variable Header="xDelayedTaskList1" Icon="2" Type="variable" Desc=": struct xLIST" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="280" Pointer="No"/>\r
+ <variable Header="xDelayedTaskList2" Icon="2" Type="variable" Desc=": struct xLIST" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="281" Pointer="No"/>\r
+ <variable Header="pxDelayedTaskList" Icon="2" Type="variable" Desc=": struct xLIST CODE*" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="282" Pointer="Yes"/>\r
+ <variable Header="pxOverflowDelayedTaskList" Icon="2" Type="variable" Desc=": struct xLIST CODE*" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="283" Pointer="Yes"/>\r
+ <variable Header="xPendingReadyList" Icon="2" Type="variable" Desc=": struct xLIST" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="284" Pointer="No"/>\r
+ <variable Header="xTasksWaitingTermination" Icon="2" Type="variable" Desc=": struct xLIST" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="288" Pointer="No"/>\r
+ <variable Header="uxTasksDeleted" Icon="2" Type="variable" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="289" Pointer="No"/>\r
+ <variable Header="xSuspendedTaskList" Icon="2" Type="variable" Desc=": struct xLIST" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="295" Pointer="No"/>\r
+ <variable Header="uxCurrentNumberOfTasks" Icon="2" Type="variable" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="300" Pointer="No"/>\r
+ <variable Header="xTickCount" Icon="2" Type="variable" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="301" Pointer="No"/>\r
+ <variable Header="uxTopUsedPriority" Icon="2" Type="variable" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="302" Pointer="No"/>\r
+ <variable Header="uxTopReadyPriority" Icon="2" Type="variable" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="303" Pointer="No"/>\r
+ <variable Header="xSchedulerRunning" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="304" Pointer="No"/>\r
+ <variable Header="uxSchedulerSuspended" Icon="2" Type="variable" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="305" Pointer="No"/>\r
+ <variable Header="uxMissedTicks" Icon="2" Type="variable" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="306" Pointer="No"/>\r
+ <variable Header="xMissedYield" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="307" Pointer="No"/>\r
+ <variable Header="xNumOfOverflows" Icon="2" Type="variable" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="308" Pointer="No"/>\r
+ <variable Header="pxCurrentTCB" Icon="2" Type="variable" Desc=": struct tskTaskControlBlock CODE*" DeclFile="C:\E\Dev\FreeRTOS\Source\tasks.c" DeclLine="275" Pointer="Yes"/>\r
+ <type Header="portTickType" Icon="1" Type="type" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\portmacro.h" DeclLine="74" Pointer="No"/>\r
+ <type Header="xListItem" Icon="1" Type="type" Desc=": struct xLIST_ITEM" DeclFile="C:\E\Dev\FreeRTOS\Source\include\list.h" DeclLine="89" Pointer="No"/>\r
+ <type Header="xMiniListItem" Icon="1" Type="type" Desc=": struct xMINI_LIST_ITEM" DeclFile="C:\E\Dev\FreeRTOS\Source\include\list.h" DeclLine="97" Pointer="No"/>\r
+ <type Header="xList" Icon="1" Type="type" Desc=": struct xLIST" DeclFile="C:\E\Dev\FreeRTOS\Source\include\list.h" DeclLine="107" Pointer="No"/>\r
+ <func Header="vListInitialise" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\list.c" DeclLine="94"/>\r
+ <func Header="vListInitialiseItem" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\list.c" DeclLine="114"/>\r
+ <func Header="vListInsertEnd" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\list.c" DeclLine="121"/>\r
+ <func Header="vListInsert" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\list.c" DeclLine="144"/>\r
+ <func Header="vListRemove" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\list.c" DeclLine="185"/>\r
+ <type Header="size_t" Icon="1" Type="type" Desc=": unsigned long" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stddef.h" DeclLine="213" Pointer="No"/>\r
+ <type Header="portTickType" Icon="1" Type="type" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\portmacro.h" DeclLine="74" Pointer="No"/>\r
+ <type Header="xListItem" Icon="1" Type="type" Desc=": struct xLIST_ITEM" DeclFile="C:\E\Dev\FreeRTOS\Source\include\list.h" DeclLine="89" Pointer="No"/>\r
+ <type Header="xMiniListItem" Icon="1" Type="type" Desc=": struct xMINI_LIST_ITEM" DeclFile="C:\E\Dev\FreeRTOS\Source\include\list.h" DeclLine="97" Pointer="No"/>\r
+ <type Header="xList" Icon="1" Type="type" Desc=": struct xLIST" DeclFile="C:\E\Dev\FreeRTOS\Source\include\list.h" DeclLine="107" Pointer="No"/>\r
+ <type Header="xTimeOutType" Icon="1" Type="type" Desc=": struct xTIME_OUT" DeclFile="C:\E\Dev\FreeRTOS\Source\include\task.h" DeclLine="77" Pointer="No"/>\r
+ <type Header="xQUEUE" Icon="1" Type="type" Desc=": struct QueueDefinition" DeclFile="C:\E\Dev\FreeRTOS\Source\queue.c" DeclLine="124" Pointer="No"/>\r
+ <type Header="xQueueHandle" Icon="1" Type="type" Desc=": struct QueueDefinition CODE*" DeclFile="C:\E\Dev\FreeRTOS\Source\queue.c" DeclLine="132" Pointer="Yes"/>\r
+ <func Header="vQueueDelete" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\queue.c" DeclLine="713"/>\r
+ <func Header="uxQueueMessagesWaiting" Icon="3" Type="func" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Source\queue.c" DeclLine="701"/>\r
+ <func Header="prvCopyDataFromQueue" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\queue.c" DeclLine="757"/>\r
+ <func Header="xQueueReceiveFromISR" Icon="3" Type="func" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Source\queue.c" DeclLine="653"/>\r
+ <func Header="prvUnlockQueue" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\queue.c" DeclLine="771"/>\r
+ <func Header="xQueueGenericReceive" Icon="3" Type="func" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Source\queue.c" DeclLine="519"/>\r
+ <func Header="prvCopyDataToQueue" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\queue.c" DeclLine="720"/>\r
+ <func Header="xQueueGenericSendFromISR" Icon="3" Type="func" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Source\queue.c" DeclLine="477"/>\r
+ <func Header="xQueueGenericSend" Icon="3" Type="func" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Source\queue.c" DeclLine="300"/>\r
+ <func Header="xQueueCreateMutex" Icon="3" Type="func" Desc=": struct QueueDefinition CODE*" DeclFile="C:\E\Dev\FreeRTOS\Source\queue.c" DeclLine="260"/>\r
+ <func Header="xQueueCreate" Icon="3" Type="func" Desc=": struct QueueDefinition CODE*" DeclFile="C:\E\Dev\FreeRTOS\Source\queue.c" DeclLine="210"/>\r
+ <type Header="pdTASK_CODE" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\projdefs.h" DeclLine="41" Pointer="No"/>\r
+ <func Header="pxPortInitialiseStack" Icon="3" Type="func" Desc=": unsigned long CODE*" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" DeclLine="111"/>\r
+ <type Header="pdTASK_CODE" Icon="1" Type="type" Desc=": " DeclFile="C:\E\Dev\FreeRTOS\Source\include\projdefs.h" DeclLine="41" Pointer="No"/>\r
+ <func Header="prvSetPSP" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" DeclLine="129"/>\r
+ <func Header="prvSetMSP" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" DeclLine="136"/>\r
+ <func Header="vPortEndScheduler" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" DeclLine="169"/>\r
+ <func Header="vPortYieldFromISR" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" DeclLine="176"/>\r
+ <func Header="vPortEnterCritical" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" DeclLine="187"/>\r
+ <func Header="vPortExitCritical" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" DeclLine="194"/>\r
+ <func Header="xPortPendSVHandler" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" DeclLine="204"/>\r
+ <func Header="xPortSysTickHandler" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" DeclLine="251"/>\r
+ <func Header="xPortStartScheduler" Icon="3" Type="func" Desc=": long" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" DeclLine="146"/>\r
+ <func Header="vPortIncrementTick" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" DeclLine="317"/>\r
+ <func Header="vPortSwitchContext" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" DeclLine="309"/>\r
+ <variable Header="ulKernelPriority" Icon="2" Type="variable" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" DeclLine="82" Pointer="No"/>\r
+ <variable Header="uxCriticalNesting" Icon="2" Type="variable" Desc=": unsigned long" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" DeclLine="86" Pointer="No"/>\r
+ <type Header="size_t" Icon="1" Type="type" Desc=": unsigned long" DeclFile="C:\devtools\Raisonance\Ride\Lib\ARM\include\stddef.h" DeclLine="213" Pointer="No"/>\r
+ <type Header="xBlockLink" Icon="1" Type="type" Desc=": struct A_BLOCK_LINK" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\MemMang\heap_2.c" DeclLine="86" Pointer="No"/>\r
+ <func Header="vPortFree" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\MemMang\heap_2.c" DeclLine="223"/>\r
+ <func Header="pvPortMalloc" Icon="3" Type="func" Desc=": void" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\MemMang\heap_2.c" DeclLine="145"/>\r
+ <variable Header="xHeap" Icon="2" Type="variable" Desc=": struct xRTOS_HEAP" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\MemMang\heap_2.c" DeclLine="78" Pointer="No"/>\r
+ <variable Header="xStart" Icon="2" Type="variable" Desc=": struct A_BLOCK_LINK" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\MemMang\heap_2.c" DeclLine="93" Pointer="No"/>\r
+ <variable Header="xEnd" Icon="2" Type="variable" Desc=": struct A_BLOCK_LINK" DeclFile="C:\E\Dev\FreeRTOS\Source\portable\MemMang\heap_2.c" DeclLine="93" Pointer="No"/>\r
+ <type Header="clock_t" Icon="1" Type="type" Desc=": unsigned long" DeclFile="c:\program files\raisonance\ride\arm-gcc\arm-none-eabi\include\sys\types.h" DeclLine="104" Pointer="No"/>\r
+ <type Header="time_t" Icon="1" Type="type" Desc=": long" DeclFile="c:\program files\raisonance\ride\arm-gcc\arm-none-eabi\include\sys\types.h" DeclLine="109" Pointer="No"/>\r
+ <type Header="caddr_t" Icon="1" Type="type" Desc=": unsigned char CODE*" DeclFile="c:\program files\raisonance\ride\arm-gcc\arm-none-eabi\include\sys\types.h" DeclLine="126" Pointer="Yes"/>\r
+ <type Header="ino_t" Icon="1" Type="type" Desc=": unsigned int" DeclFile="c:\program files\raisonance\ride\arm-gcc\arm-none-eabi\include\sys\types.h" DeclLine="133" Pointer="No"/>\r
+ <type Header="dev_t" Icon="1" Type="type" Desc=": int" DeclFile="c:\program files\raisonance\ride\arm-gcc\arm-none-eabi\include\sys\types.h" DeclLine="166" Pointer="No"/>\r
+ <type Header="off_t" Icon="1" Type="type" Desc=": long" DeclFile="c:\program files\raisonance\ride\arm-gcc\arm-none-eabi\include\sys\types.h" DeclLine="171" Pointer="No"/>\r
+ <type Header="uid_t" Icon="1" Type="type" Desc=": unsigned int" DeclFile="c:\program files\raisonance\ride\arm-gcc\arm-none-eabi\include\sys\types.h" DeclLine="173" Pointer="No"/>\r
+ <type Header="gid_t" Icon="1" Type="type" Desc=": unsigned int" DeclFile="c:\program files\raisonance\ride\arm-gcc\arm-none-eabi\include\sys\types.h" DeclLine="174" Pointer="No"/>\r
+ <type Header="mode_t" Icon="1" Type="type" Desc=": unsigned long" DeclFile="c:\program files\raisonance\ride\arm-gcc\arm-none-eabi\include\sys\types.h" DeclLine="195" Pointer="No"/>\r
+ <type Header="nlink_t" Icon="1" Type="type" Desc=": unsigned int" DeclFile="c:\program files\raisonance\ride\arm-gcc\arm-none-eabi\include\sys\types.h" DeclLine="200" Pointer="No"/>\r
+ <type Header="suseconds_t" Icon="1" Type="type" Desc=": long" DeclFile="c:\program files\raisonance\ride\arm-gcc\arm-none-eabi\include\sys\types.h" DeclLine="263" Pointer="No"/>\r
+ <type Header="poslog" Icon="1" Type="type" Desc=": struct " DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" DeclLine="83" Pointer="No"/>\r
+ <func Header="_read" Icon="3" Type="func" Desc=": long" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" DeclLine="173"/>\r
+ <func Header="_lseek" Icon="3" Type="func" Desc=": long" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" DeclLine="180"/>\r
+ <func Header="_open" Icon="3" Type="func" Desc=": long" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" DeclLine="203"/>\r
+ <func Header="_close" Icon="3" Type="func" Desc=": long" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" DeclLine="208"/>\r
+ <func Header="_exit" Icon="3" Type="func" Desc=": void" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" DeclLine="213"/>\r
+ <func Header="_kill" Icon="3" Type="func" Desc=": long" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" DeclLine="219"/>\r
+ <func Header="_fstat" Icon="3" Type="func" Desc=": long" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" DeclLine="247"/>\r
+ <func Header="_stat" Icon="3" Type="func" Desc=": long" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" DeclLine="253"/>\r
+ <func Header="_link" Icon="3" Type="func" Desc=": long" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" DeclLine="259"/>\r
+ <func Header="_unlink" Icon="3" Type="func" Desc=": long" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" DeclLine="264"/>\r
+ <func Header="_raise" Icon="3" Type="func" Desc=": void" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" DeclLine="269"/>\r
+ <func Header="_getpid" Icon="3" Type="func" Desc=": long" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" DeclLine="274"/>\r
+ <func Header="_gettimeofday" Icon="3" Type="func" Desc=": long" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" DeclLine="279"/>\r
+ <func Header="_times" Icon="3" Type="func" Desc=": unsigned long" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" DeclLine="304"/>\r
+ <func Header="isatty" Icon="3" Type="func" Desc=": long" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" DeclLine="322"/>\r
+ <func Header="_rename" Icon="3" Type="func" Desc=": long" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" DeclLine="336"/>\r
+ <func Header="_system" Icon="3" Type="func" Desc=": long" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" DeclLine="328"/>\r
+ <func Header="_write" Icon="3" Type="func" Desc=": long" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" DeclLine="189"/>\r
+ <func Header="_sbrk" Icon="3" Type="func" Desc=": unsigned char CODE*" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" DeclLine="224"/>\r
+ <variable Header="stack_ptr" Icon="2" Type="variable" Desc=": unsigned char CODE*" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" DeclLine="53" Pointer="Yes"/>\r
+ <type Header="u32" Icon="1" Type="type" Desc=": unsigned long" DeclFile="C:\Program Files\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="36" Pointer="No"/>\r
+ <type Header="u16" Icon="1" Type="type" Desc=": unsigned int" DeclFile="C:\Program Files\Raisonance\Ride\Lib\ARM\include\stm32f10x_type.h" DeclLine="37" Pointer="No"/>\r
+ <type Header="GPIOSpeed_TypeDef" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\Program Files\Raisonance\Ride\Lib\ARM\include\stm32f10x_gpio.h" DeclLine="36" Pointer="No"/>\r
+ <type Header="GPIOMode_TypeDef" Icon="1" Type="type" Desc=": unsigned char" DeclFile="C:\Program Files\Raisonance\Ride\Lib\ARM\include\stm32f10x_gpio.h" DeclLine="51" Pointer="No"/>\r
+ <type Header="GPIO_InitTypeDef" Icon="1" Type="type" Desc=": struct " DeclFile="C:\Program Files\Raisonance\Ride\Lib\ARM\include\stm32f10x_gpio.h" DeclLine="64" Pointer="No"/>\r
+ <type Header="USART_InitTypeDef" Icon="1" Type="type" Desc=": struct " DeclFile="C:\Program Files\Raisonance\Ride\Lib\ARM\include\stm32f10x_usart.h" DeclLine="43" Pointer="No"/>\r
+ <func Header="__io_SetMainOscFreq" Icon="3" Type="func" Desc=": void" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\STM32F10X_IO_putchar.c" DeclLine="29"/>\r
+ <func Header="__io_init" Icon="3" Type="func" Desc=": void" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\STM32F10X_IO_putchar.c" DeclLine="35"/>\r
+ <func Header="__io_getchar" Icon="3" Type="func" Desc=": long" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\STM32F10X_IO_putchar.c" DeclLine="122"/>\r
+ <func Header="getchar" Icon="3" Type="func" Desc=": long" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\STM32F10X_IO_putchar.c" DeclLine="142"/>\r
+ <func Header="__io_putchar" Icon="3" Type="func" Desc=": void" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\STM32F10X_IO_putchar.c" DeclLine="94"/>\r
+ <func Header="putchar" Icon="3" Type="func" Desc=": long" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\STM32F10X_IO_putchar.c" DeclLine="116"/>\r
+ <variable Header="__io_init_done" Icon="2" Type="variable" Desc=": unsigned char" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\STM32F10X_IO_putchar.c" DeclLine="23" Pointer="No"/>\r
+ <variable Header="__io_Main_Osc" Icon="2" Type="variable" Desc=": unsigned long" DeclFile="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\STM32F10X_IO_putchar.c" DeclLine="25" Pointer="No"/>\r
+</aoffile>\r
+\r
--- /dev/null
+<!-- DWF2XML 0.01.29 - Raisonance Dwarf information extractor -->\r
+<aoffile Filename="RTOSDemo" dwarf="1">\r
+ <modulelist>\r
+ <module Name="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" >\r
+ <type Family="Base" Name="long int" ID="29"/>\r
+ <type Family="Base" Name="short int" ID="36"/>\r
+ <type Family="Base" Name="signed char" ID="43"/>\r
+ <type Family="Base" Name="long unsigned int" ID="50"/>\r
+ <type Family="Base" Name="short unsigned int" ID="68"/>\r
+ <type Family="typedef" Name="u16" Line="37" ID="57" toTI="68"/>\r
+ <type Family="Base" Name="unsigned char" ID="75"/>\r
+ <type Family="ComponentList" Line="200" ID="111">\r
+ <Component Name="CRL" TI="119" Line="201" Offs="0"/>\r
+ <Component Name="CRH" TI="133" Line="202" Offs="4"/>\r
+ <Component Name="IDR" TI="147" Line="203" Offs="8"/>\r
+ <Component Name="ODR" TI="161" Line="204" Offs="12"/>\r
+ <Component Name="BSRR" TI="175" Line="205" Offs="16"/>\r
+ <Component Name="BRR" TI="189" Line="206" Offs="20"/>\r
+ <Component Name="LCKR" TI="203" Line="207" Offs="24"/>\r
+ </type>\r
+ <type Family="typedef" Name="GPIOSpeed_TypeDef" Line="36" ID="245" toTI="218"/>\r
+ <type Family="typedef" Name="GPIOMode_TypeDef" Line="51" ID="314" toTI="256"/>\r
+ <type Family="ComponentList" Line="60" ID="325">\r
+ <Component Name="GPIO_Pin" TI="333" Line="61" Offs="0"/>\r
+ <Component Name="GPIO_Speed" TI="347" Line="62" Offs="2"/>\r
+ <Component Name="GPIO_Mode" TI="361" Line="63" Offs="3"/>\r
+ </type>\r
+ <type Family="typedef" Name="GPIO_InitTypeDef" Line="64" ID="376" toTI="325"/>\r
+ <type Family="Pointer" TI="585" toTI="591"/>\r
+ <type Family="Base" Name="int" ID="608"/>\r
+ <type Family="Base" Name="char" ID="615"/>\r
+ <type Family="Base" Name="unsigned int" ID="622"/>\r
+ <function Name="LED_Set" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" Line="201">\r
+ <parameter Name="id" TI="560" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" Line="201" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="mode" TI="517" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" Line="201" Addr="0x1" Param="Yes"/>\r
+ </function >\r
+ <function Name="LED_Handler_hw" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" Line="93">\r
+ <parameter Name="id" TI="560" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" Line="93" Addr="0x0" Param="Yes"/>\r
+ <variable Name="counter" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" Line="94" Addr="0x4" TI="608"/>\r
+ <variable Name="mode" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" Line="95" Addr="0x6" TI="517"/>\r
+ </function >\r
+ <function Name="LED_Handler" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" Line="73">\r
+ </function >\r
+ <function Name="LED_Init" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" Line="46">\r
+ <variable Name="GPIO_InitStructure" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" Line="47" Addr="0x340FFFF4" TI="376"/>\r
+ </function >\r
+ <variable Name="dummy_var" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" Line="77" Addr="0x200046E4" TI="408"/>\r
+ <type Family="Pointer" TI="585" toTI="591"/>\r
+ <variable Name="Application_Pointer_Mgr" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" Line="429" Addr="0x200046E0" TI="585"/>\r
+ <variable Name="GreenLED_Counter" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" Line="19" Addr="0x0" TI="608"/>\r
+ <variable Name="RedLED_Counter" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" Line="20" Addr="0x0" TI="608"/>\r
+ <variable Name="GreenLED_mode" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" Line="21" Addr="0x0" TI="517"/>\r
+ <variable Name="RedLED_mode" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" Line="22" Addr="0x0" TI="517"/>\r
+ <variable Name="GreenLED_newmode" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" Line="23" Addr="0x0" TI="517"/>\r
+ <variable Name="RedLED_newmode" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" Line="24" Addr="0x0" TI="517"/>\r
+ <variable Name="HalfPeriod_LF" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" Line="25" Addr="0x0" TI="972"/>\r
+ <variable Name="HalfPeriod_HF" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" Line="26" Addr="0x0" TI="972"/>\r
+ <variable Name="Period_LF" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" Line="27" Addr="0x0" TI="972"/>\r
+ <variable Name="Period_HF" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\led.c" Line="28" Addr="0x0" TI="972"/>\r
+ </module>\r
+ <module Name="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\crt0_STM32x.c" >\r
+ <function Name="Reset_Handler" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\crt0_STM32x.c" Line="188">\r
+ <type Family="Base" Name="long unsigned int" ID="1119"/>\r
+ <type Family="Pointer" TI="1113" toTI="1119"/>\r
+ <variable Name="pulDest" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\crt0_STM32x.c" Line="189" Addr="0x2" TI="1113"/>\r
+ </function >\r
+ <type Family="Pointer" TI="1221" toTI="1219"/>\r
+ <type Family="array" ID="1200" toTI="1221"/>\r
+ <type Family="Pointer" TI="1221" toTI="1219"/>\r
+ <type Family="Pointer" TI="1221" toTI="1219"/>\r
+ <type Family="array" ID="1200" toTI="1221"/>\r
+ <variable Name="g_pfnVectors" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\crt0_STM32x.c" Line="110" Addr="0x8000000" TI="1245"/>\r
+ <type Family="Pointer" TI="1221" toTI="1219"/>\r
+ <type Family="array" ID="1200" toTI="1221"/>\r
+ </module>\r
+ <module Name="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" >\r
+ <type Family="Base" Name="long int" ID="1280"/>\r
+ <type Family="Base" Name="short int" ID="1298"/>\r
+ <type Family="typedef" Name="s16" Line="29" ID="1287" toTI="1298"/>\r
+ <type Family="Base" Name="signed char" ID="1305"/>\r
+ <type Family="Base" Name="long unsigned int" ID="1323"/>\r
+ <type Family="typedef" Name="u32" Line="36" ID="1312" toTI="1323"/>\r
+ <type Family="Base" Name="short unsigned int" ID="1341"/>\r
+ <type Family="typedef" Name="u16" Line="37" ID="1330" toTI="1341"/>\r
+ <type Family="Base" Name="unsigned char" ID="1358"/>\r
+ <type Family="typedef" Name="u8" Line="38" ID="1348" toTI="1358"/>\r
+ <type Family="ComponentList" Line="200" ID="1399">\r
+ <Component Name="CRL" TI="1407" Line="201" Offs="0"/>\r
+ <Component Name="CRH" TI="1421" Line="202" Offs="4"/>\r
+ <Component Name="IDR" TI="1435" Line="203" Offs="8"/>\r
+ <Component Name="ODR" TI="1449" Line="204" Offs="12"/>\r
+ <Component Name="BSRR" TI="1463" Line="205" Offs="16"/>\r
+ <Component Name="BRR" TI="1477" Line="206" Offs="20"/>\r
+ <Component Name="LCKR" TI="1491" Line="207" Offs="24"/>\r
+ </type>\r
+ <type Family="typedef" Name="GPIO_TypeDef" Line="208" ID="1506" toTI="1399"/>\r
+ <type Family="ComponentList" Line="404" ID="1517">\r
+ <Component Name="CR1" TI="1526" Line="405" Offs="0"/>\r
+ <Component Name="RESERVED0" TI="1541" Line="406" Offs="2"/>\r
+ <Component Name="CR2" TI="1556" Line="407" Offs="4"/>\r
+ <Component Name="RESERVED1" TI="1571" Line="408" Offs="6"/>\r
+ <Component Name="SMCR" TI="1586" Line="409" Offs="8"/>\r
+ <Component Name="RESERVED2" TI="1601" Line="410" Offs="10"/>\r
+ <Component Name="DIER" TI="1616" Line="411" Offs="12"/>\r
+ <Component Name="RESERVED3" TI="1631" Line="412" Offs="14"/>\r
+ <Component Name="SR" TI="1646" Line="413" Offs="16"/>\r
+ <Component Name="RESERVED4" TI="1660" Line="414" Offs="18"/>\r
+ <Component Name="EGR" TI="1675" Line="415" Offs="20"/>\r
+ <Component Name="RESERVED5" TI="1690" Line="416" Offs="22"/>\r
+ <Component Name="CCMR1" TI="1705" Line="417" Offs="24"/>\r
+ <Component Name="RESERVED6" TI="1720" Line="418" Offs="26"/>\r
+ <Component Name="CCMR2" TI="1735" Line="419" Offs="28"/>\r
+ <Component Name="RESERVED7" TI="1750" Line="420" Offs="30"/>\r
+ <Component Name="CCER" TI="1765" Line="421" Offs="32"/>\r
+ <Component Name="RESERVED8" TI="1780" Line="422" Offs="34"/>\r
+ <Component Name="CNT" TI="1795" Line="423" Offs="36"/>\r
+ <Component Name="RESERVED9" TI="1810" Line="424" Offs="38"/>\r
+ <Component Name="PSC" TI="1825" Line="425" Offs="40"/>\r
+ <Component Name="RESERVED10" TI="1840" Line="426" Offs="42"/>\r
+ <Component Name="ARR" TI="1855" Line="427" Offs="44"/>\r
+ <type Family="array" ID="2066" toTI="1330"/>\r
+ <Component Name="RESERVED11" TI="1870" Line="428" Offs="46"/>\r
+ <Component Name="CCR1" TI="1885" Line="429" Offs="52"/>\r
+ <Component Name="RESERVED12" TI="1900" Line="430" Offs="54"/>\r
+ <Component Name="CCR2" TI="1915" Line="431" Offs="56"/>\r
+ <Component Name="RESERVED13" TI="1930" Line="432" Offs="58"/>\r
+ <Component Name="CCR3" TI="1945" Line="433" Offs="60"/>\r
+ <Component Name="RESERVED14" TI="1960" Line="434" Offs="62"/>\r
+ <Component Name="CCR4" TI="1975" Line="435" Offs="64"/>\r
+ <Component Name="RESERVED15" TI="1990" Line="436" Offs="66"/>\r
+ <Component Name="DCR" TI="2005" Line="437" Offs="72"/>\r
+ <Component Name="RESERVED16" TI="2020" Line="438" Offs="74"/>\r
+ <Component Name="DMAR" TI="2035" Line="439" Offs="76"/>\r
+ <Component Name="RESERVED17" TI="2050" Line="440" Offs="78"/>\r
+ </type>\r
+ <type Family="typedef" Name="GPIOSpeed_TypeDef" Line="36" ID="2109" toTI="2082"/>\r
+ <type Family="typedef" Name="GPIOMode_TypeDef" Line="51" ID="2178" toTI="2120"/>\r
+ <type Family="ComponentList" Line="60" ID="2189">\r
+ <Component Name="GPIO_Pin" TI="2197" Line="61" Offs="0"/>\r
+ <Component Name="GPIO_Speed" TI="2211" Line="62" Offs="2"/>\r
+ <Component Name="GPIO_Mode" TI="2225" Line="63" Offs="3"/>\r
+ </type>\r
+ <type Family="typedef" Name="GPIO_InitTypeDef" Line="64" ID="2240" toTI="2189"/>\r
+ <type Family="typedef" Name="BitAction" Line="70" ID="2272" toTI="2251"/>\r
+ <type Family="ComponentList" Line="33" ID="2283">\r
+ <Component Name="TIM_Period" TI="2291" Line="34" Offs="0"/>\r
+ <Component Name="TIM_Prescaler" TI="2305" Line="35" Offs="2"/>\r
+ <Component Name="TIM_ClockDivision" TI="2319" Line="36" Offs="4"/>\r
+ <Component Name="TIM_CounterMode" TI="2333" Line="37" Offs="6"/>\r
+ </type>\r
+ <type Family="typedef" Name="TIM_TimeBaseInitTypeDef" Line="38" ID="2348" toTI="2283"/>\r
+ <type Family="ComponentList" Line="42" ID="2359">\r
+ <Component Name="TIM_OCMode" TI="2367" Line="43" Offs="0"/>\r
+ <Component Name="TIM_Channel" TI="2381" Line="44" Offs="2"/>\r
+ <Component Name="TIM_Pulse" TI="2395" Line="45" Offs="4"/>\r
+ <Component Name="TIM_OCPolarity" TI="2409" Line="46" Offs="6"/>\r
+ </type>\r
+ <type Family="typedef" Name="TIM_OCInitTypeDef" Line="47" ID="2424" toTI="2359"/>\r
+ <type Family="typedef" Name="DataConfigMode_TypeDef" Line="26" ID="2456" toTI="2435"/>\r
+ <type Family="typedef" Name="Rotate_H12_V_Match_TypeDef" Line="101" ID="2606" toTI="2576"/>\r
+ <type Family="Pointer" TI="2617" toTI="2623"/>\r
+ <type Family="Base" Name="int" ID="2640"/>\r
+ <type Family="Base" Name="char" ID="2647"/>\r
+ <type Family="Base" Name="unsigned int" ID="2654"/>\r
+ <function Name="LCD_DataLinesWrite" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="202">\r
+ <type Family="Pointer" TI="2712" toTI="1506"/>\r
+ <parameter Name="GPIOx" TI="2712" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="202" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="PortVal" TI="1312" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="202" Addr="0x1" Param="Yes"/>\r
+ </function >\r
+ <function Name="LCD_SetBackLight" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="1053">\r
+ <parameter Name="newBacklightStart" TI="1312" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="1053" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="LCD_SetBackLightOff" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="1076">\r
+ </function >\r
+ <function Name="LCD_SetBackLightOn" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="1092">\r
+ </function >\r
+ <function Name="LCD_GetBackLight" TI="1312" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="1110">\r
+ </function >\r
+ <function Name="LCD_SetRotateScreen" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="1129">\r
+ <parameter Name="RotateScreen" TI="1348" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="1129" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="LCD_GetRotateScreen" TI="1348" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="1148">\r
+ </function >\r
+ <function Name="LCD_GetScreenOrientation" TI="2606" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="1186">\r
+ </function >\r
+ <function Name="LCD_CtrlLinesWrite" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="255">\r
+ <parameter Name="GPIOx" TI="2712" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="255" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="CtrlPins" TI="1312" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="255" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="BitVal" TI="2272" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="255" Addr="0x2" Param="Yes"/>\r
+ </function >\r
+ <function Name="LCD_SendLCDData" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="707">\r
+ <parameter Name="Data" TI="1348" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="707" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="LCD_SendLCDCmd" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="679">\r
+ <parameter Name="Cmd" TI="1348" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="679" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="LCD_SetRect_For_Cmd" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="1028">\r
+ <parameter Name="x" TI="1287" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="1028" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="y" TI="1287" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="1028" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="width" TI="1287" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="1028" Addr="0x2" Param="Yes"/>\r
+ <parameter Name="height" TI="1287" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="1028" Addr="0x3" Param="Yes"/>\r
+ </function >\r
+ <function Name="LCD_DrawPixel" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="901">\r
+ <parameter Name="XPos" TI="1348" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="901" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="YPos" TI="1348" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="901" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="Color" TI="1330" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="901" Addr="0x2" Param="Yes"/>\r
+ </function >\r
+ <function Name="LCD_FillRect" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="777">\r
+ <parameter Name="x" TI="1330" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="777" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="y" TI="1330" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="777" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="width" TI="1330" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="777" Addr="0x2" Param="Yes"/>\r
+ <parameter Name="height" TI="1330" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="777" Addr="0x3" Param="Yes"/>\r
+ <parameter Name="color" TI="1330" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="777" Addr="0x34000000" Param="Yes"/>\r
+ <variable Name="Line" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="778" Addr="0x8" TI="1348"/>\r
+ <variable Name="Column" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="779" Addr="0x4" TI="1348"/>\r
+ </function >\r
+ <function Name="LCD_DrawRect" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="873">\r
+ <parameter Name="x" TI="1330" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="873" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="y" TI="1330" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="873" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="width" TI="1330" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="873" Addr="0x2" Param="Yes"/>\r
+ <parameter Name="height" TI="1330" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="873" Addr="0x3" Param="Yes"/>\r
+ <parameter Name="color" TI="1330" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="873" Addr="0x34000000" Param="Yes"/>\r
+ </function >\r
+ <function Name="LCD_SetScreenOrientation" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="1166">\r
+ <parameter Name="ScreenOrientation" TI="2606" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="1166" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <type Family="Pointer" TI="3693" toTI="3699"/>\r
+ <function Name="LCD_DisplayChar" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="1004">\r
+ <parameter Name="x" TI="1348" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="1004" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="y" TI="1348" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="1004" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="Ascii" TI="1348" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="1004" Addr="0x2" Param="Yes"/>\r
+ <parameter Name="TextColor" TI="1330" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="1004" Addr="0x3" Param="Yes"/>\r
+ <parameter Name="BGndColor" TI="1330" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="1004" Addr="0x34000000" Param="Yes"/>\r
+ <parameter Name="CharMagniCoeff" TI="1330" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="1004" Addr="0x34000004" Param="Yes"/>\r
+ <parameter Name="bmp" TI="3693" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="1004" Addr="0x340FFFF4" Param="Yes"/>\r
+ <variable Name="i" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="329" Addr="0x340FFFF8" TI="0"/>\r
+ <variable Name="j" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="330" Addr="0x5" TI="0"/>\r
+ <variable Name="k1" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="331" Addr="0xB" TI="0"/>\r
+ <variable Name="k2" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="332" Addr="0x4" TI="0"/>\r
+ </function >\r
+ <function Name="LCD_DataLinesConfig" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="167">\r
+ <parameter Name="Mode" TI="2456" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="167" Addr="0x0" Param="Yes"/>\r
+ <variable Name="GPIO_InitStructure" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="168" Addr="0x340FFFF4" TI="2240"/>\r
+ </function >\r
+ <function Name="LCD_ReadLCDData" TI="1312" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="734">\r
+ </function >\r
+ <function Name="LCD_RectRead" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="934">\r
+ <parameter Name="x" TI="1330" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="934" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="y" TI="1330" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="934" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="width" TI="1330" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="934" Addr="0x2" Param="Yes"/>\r
+ <parameter Name="height" TI="1330" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="934" Addr="0x3" Param="Yes"/>\r
+ <type Family="Pointer" TI="4143" toTI="1348"/>\r
+ <parameter Name="bmp" TI="4143" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="934" Addr="0x34000000" Param="Yes"/>\r
+ <variable Name="i" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="935" Addr="0x4" TI="2640"/>\r
+ <variable Name="bytesize" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="936" Addr="0x6" TI="2640"/>\r
+ </function >\r
+ <function Name="LCD_GetPixel" TI="1330" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="973">\r
+ <parameter Name="x" TI="1348" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="973" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="y" TI="1348" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="973" Addr="0x1" Param="Yes"/>\r
+ <variable Name="val" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="974" Addr="0x340FFFFA" TI="1330"/>\r
+ </function >\r
+ <function Name="LCD_Handler" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="651">\r
+ </function >\r
+ <function Name="LCD_Init" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="613">\r
+ <variable Name="GPIO_InitStructure" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="532" Addr="0x340FFFD4" TI="0"/>\r
+ <variable Name="GPIO_InitStructure" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="219" Addr="0x340FFFD4" TI="0"/>\r
+ </function >\r
+ <variable Name="TIM_TimeBaseStructure" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="28" Addr="0x20000094" TI="2348"/>\r
+ <variable Name="TIM_OCInitStructure" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="29" Addr="0x2000008C" TI="2424"/>\r
+ <variable Name="HandlerDivider" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="30" Addr="0x20000088" TI="2640"/>\r
+ <type Family="array" ID="4613" toTI="1348"/>\r
+ <variable Name="AsciiDotsTable" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="42" Addr="0x8004EFC" TI="4647"/>\r
+ <variable Name="dummy_var" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" Line="77" Addr="0x200046E4" TI="2467"/>\r
+ <type Family="Pointer" TI="2617" toTI="2623"/>\r
+ <variable Name="Application_Pointer_Mgr" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" Line="429" Addr="0x200046E0" TI="2617"/>\r
+ <variable Name="Current_CCR_BackLightStart" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="32" Addr="0x20000000" TI="2640"/>\r
+ <type Family="array" ID="4733" toTI="2640"/>\r
+ <variable Name="OrientationOffsetX" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="139" Addr="0x20000004" TI="4733"/>\r
+ <type Family="array" ID="4767" toTI="2640"/>\r
+ <variable Name="OrientationOffsetY" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\lcd.c" Line="140" Addr="0x20000014" TI="4767"/>\r
+ </module>\r
+ <module Name="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" >\r
+ <type Family="Base" Name="long int" ID="4842"/>\r
+ <type Family="typedef" Name="s32" Line="28" ID="4831" toTI="4842"/>\r
+ <type Family="Base" Name="short int" ID="4860"/>\r
+ <type Family="typedef" Name="s16" Line="29" ID="4849" toTI="4860"/>\r
+ <type Family="Base" Name="signed char" ID="4867"/>\r
+ <type Family="Base" Name="long unsigned int" ID="4885"/>\r
+ <type Family="typedef" Name="u32" Line="36" ID="4874" toTI="4885"/>\r
+ <type Family="Base" Name="short unsigned int" ID="4903"/>\r
+ <type Family="typedef" Name="u16" Line="37" ID="4892" toTI="4903"/>\r
+ <type Family="Base" Name="unsigned char" ID="4920"/>\r
+ <type Family="typedef" Name="u8" Line="38" ID="4910" toTI="4920"/>\r
+ <type Family="ComponentList" Line="200" ID="4977">\r
+ <Component Name="CRL" TI="4985" Line="201" Offs="0"/>\r
+ <Component Name="CRH" TI="4999" Line="202" Offs="4"/>\r
+ <Component Name="IDR" TI="5013" Line="203" Offs="8"/>\r
+ <Component Name="ODR" TI="5027" Line="204" Offs="12"/>\r
+ <Component Name="BSRR" TI="5041" Line="205" Offs="16"/>\r
+ <Component Name="BRR" TI="5055" Line="206" Offs="20"/>\r
+ <Component Name="LCKR" TI="5069" Line="207" Offs="24"/>\r
+ </type>\r
+ <type Family="typedef" Name="GPIOSpeed_TypeDef" Line="36" ID="5111" toTI="5084"/>\r
+ <type Family="typedef" Name="GPIOMode_TypeDef" Line="51" ID="5180" toTI="5122"/>\r
+ <type Family="ComponentList" Line="60" ID="5191">\r
+ <Component Name="GPIO_Pin" TI="5199" Line="61" Offs="0"/>\r
+ <Component Name="GPIO_Speed" TI="5213" Line="62" Offs="2"/>\r
+ <Component Name="GPIO_Mode" TI="5227" Line="63" Offs="3"/>\r
+ </type>\r
+ <type Family="typedef" Name="GPIO_InitTypeDef" Line="64" ID="5242" toTI="5191"/>\r
+ <type Family="ComponentList" Line="31" ID="5274">\r
+ <Component Name="SYSCLK_Frequency" TI="5282" Line="32" Offs="0"/>\r
+ <Component Name="HCLK_Frequency" TI="5296" Line="33" Offs="4"/>\r
+ <Component Name="PCLK1_Frequency" TI="5310" Line="34" Offs="8"/>\r
+ <Component Name="PCLK2_Frequency" TI="5324" Line="35" Offs="12"/>\r
+ <Component Name="ADCCLK_Frequency" TI="5338" Line="36" Offs="16"/>\r
+ </type>\r
+ <type Family="typedef" Name="RCC_ClocksTypeDef" Line="37" ID="5353" toTI="5274"/>\r
+ <type Family="Pointer" TI="5375" toTI="5381"/>\r
+ <type Family="typedef" Name="tHandler" Line="75" ID="5364" toTI="5375"/>\r
+ <type Family="Pointer" TI="5375" toTI="5381"/>\r
+ <type Family="Pointer" TI="5535" toTI="5541"/>\r
+ <type Family="Base" Name="int" ID="5558"/>\r
+ <type Family="Base" Name="char" ID="5576"/>\r
+ <type Family="Pointer" TI="5565" toTI="5571"/>\r
+ <type Family="Base" Name="unsigned int" ID="5583"/>\r
+ <function Name="_int2str" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="56">\r
+ <type Family="Pointer" TI="5760" toTI="5576"/>\r
+ <parameter Name="ptr" TI="5760" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="56" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="X" TI="4831" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="56" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="digit" TI="4892" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="56" Addr="0x2" Param="Yes"/>\r
+ <parameter Name="flagunsigned" TI="5558" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="56" Addr="0x3" Param="Yes"/>\r
+ <parameter Name="fillwithzero" TI="5558" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="56" Addr="0x34000000" Param="Yes"/>\r
+ <variable Name="c" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="57" Addr="0x2" TI="4910"/>\r
+ <variable Name="fFirst" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="58" Addr="0xC" TI="4910"/>\r
+ <variable Name="fNeg" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="59" Addr="0x8" TI="4910"/>\r
+ <variable Name="DIG" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="60" Addr="0x4" TI="4874"/>\r
+ <variable Name="i" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="61" Addr="0xC" TI="5558"/>\r
+ <variable Name="r" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="74" Addr="0x1" TI="4874"/>\r
+ </function >\r
+ <function Name="delay_unit" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="116">\r
+ </function >\r
+ <function Name="UTIL_GetBat" TI="4892" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="138">\r
+ </function >\r
+ <function Name="UTIL_GetTemp" TI="4892" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="167">\r
+ <variable Name="temp" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="168" Addr="0x2" TI="4831"/>\r
+ <type Family="Pointer" TI="5862" toTI="4849"/>\r
+ <variable Name="p" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="169" Addr="0x1" TI="5862"/>\r
+ </function >\r
+ <function Name="UTIL_SetTempMode" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="202">\r
+ <parameter Name="mode" TI="5558" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="202" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="UTIL_uint2str" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="251">\r
+ <parameter Name="ptr" TI="5760" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="251" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="X" TI="4874" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="251" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="digit" TI="4892" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="251" Addr="0x2" Param="Yes"/>\r
+ <parameter Name="fillwithzero" TI="5558" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="251" Addr="0x3" Param="Yes"/>\r
+ </function >\r
+ <function Name="UTIL_int2str" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="273">\r
+ <parameter Name="ptr" TI="5760" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="273" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="X" TI="4831" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="273" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="digit" TI="4892" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="273" Addr="0x2" Param="Yes"/>\r
+ <parameter Name="fillwithzero" TI="5558" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="273" Addr="0x3" Param="Yes"/>\r
+ </function >\r
+ <function Name="UTIL_GetPll" TI="5383" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="372">\r
+ </function >\r
+ <function Name="UTIL_GetVersion" TI="5565" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="390">\r
+ </function >\r
+ <function Name="UTIL_ReadBackupRegister" TI="4892" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="410">\r
+ <parameter Name="BKP_DR" TI="4892" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="410" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="UTIL_WriteBackupRegister" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="429">\r
+ <parameter Name="BKP_DR" TI="4892" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="429" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="Data" TI="4892" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="429" Addr="0x1" Param="Yes"/>\r
+ </function >\r
+ <function Name="UTIL_SetIrqHandler" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="449">\r
+ <parameter Name="Offs" TI="5558" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="449" Addr="0x0" Param="Yes"/>\r
+ <type Family="Pointer" TI="5375" toTI="5381"/>\r
+ <type Family="typedef" Name="tHandler" Line="75" ID="5364" toTI="5375"/>\r
+ <parameter Name="pHDL" TI="5364" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="449" Addr="0x1" Param="Yes"/>\r
+ </function >\r
+ <type Family="Pointer" TI="5375" toTI="5381"/>\r
+ <type Family="typedef" Name="tHandler" Line="75" ID="5364" toTI="5375"/>\r
+ <function Name="UTIL_GetIrqHandler" TI="5364" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="471">\r
+ <parameter Name="Offs" TI="5558" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="471" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="UTIL_SetSchHandler" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="499">\r
+ <parameter Name="Ix" TI="5426" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="499" Addr="0x0" Param="Yes"/>\r
+ <type Family="Pointer" TI="5375" toTI="5381"/>\r
+ <type Family="typedef" Name="tHandler" Line="75" ID="5364" toTI="5375"/>\r
+ <parameter Name="pHDL" TI="5364" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="499" Addr="0x1" Param="Yes"/>\r
+ </function >\r
+ <type Family="Pointer" TI="5375" toTI="5381"/>\r
+ <type Family="typedef" Name="tHandler" Line="75" ID="5364" toTI="5375"/>\r
+ <function Name="UTIL_GetSchHandler" TI="5364" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="524">\r
+ <parameter Name="Ix" TI="5426" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="524" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="UTIL_SetPll" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="291">\r
+ <parameter Name="speed" TI="5383" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="291" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="UTIL_GetUsb" TI="4910" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="223">\r
+ </function >\r
+ <type Family="Pointer" TI="5375" toTI="5381"/>\r
+ <type Family="typedef" Name="tHandler" Line="75" ID="5364" toTI="5375"/>\r
+ <type Family="array" ID="6488" toTI="5364"/>\r
+ <type Family="Pointer" TI="5375" toTI="5381"/>\r
+ <type Family="typedef" Name="tHandler" Line="75" ID="5364" toTI="5375"/>\r
+ <type Family="array" ID="6488" toTI="5364"/>\r
+ <type Family="array" ID="6530" toTI="4892"/>\r
+ <variable Name="CurrentSpeed" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="25" Addr="0x200046E8" TI="5383"/>\r
+ <variable Name="dummy_var" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" Line="77" Addr="0x200046E4" TI="5426"/>\r
+ <variable Name="RCC_ClockFreq" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="28" Addr="0x200046EC" TI="5353"/>\r
+ <variable Name="fTemperatureInFahrenheit" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="30" Addr="0x0" TI="4910"/>\r
+ <type Family="Pointer" TI="5535" toTI="5541"/>\r
+ <variable Name="Application_Pointer_Mgr" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" Line="429" Addr="0x200046E0" TI="5535"/>\r
+ <variable Name="dummycounter" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\Util.c" Line="29" Addr="0x0" TI="5558"/>\r
+ </module>\r
+ <module Name="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" >\r
+ <type Family="Base" Name="long int" ID="6698"/>\r
+ <type Family="Base" Name="short int" ID="6716"/>\r
+ <type Family="typedef" Name="s16" Line="29" ID="6705" toTI="6716"/>\r
+ <type Family="Base" Name="signed char" ID="6723"/>\r
+ <type Family="Base" Name="long unsigned int" ID="6741"/>\r
+ <type Family="typedef" Name="u32" Line="36" ID="6730" toTI="6741"/>\r
+ <type Family="Base" Name="short unsigned int" ID="6759"/>\r
+ <type Family="typedef" Name="u16" Line="37" ID="6748" toTI="6759"/>\r
+ <type Family="Base" Name="unsigned char" ID="6776"/>\r
+ <type Family="typedef" Name="u8" Line="38" ID="6766" toTI="6776"/>\r
+ <type Family="typedef" Name="Rotate_H12_V_Match_TypeDef" Line="101" ID="6925" toTI="6895"/>\r
+ <type Family="Pointer" TI="6936" toTI="6942"/>\r
+ <type Family="Base" Name="int" ID="6959"/>\r
+ <type Family="Base" Name="char" ID="6966"/>\r
+ <type Family="Base" Name="unsigned int" ID="6973"/>\r
+ <function Name="DRAW_SetCharMagniCoeff" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="218">\r
+ <parameter Name="Coeff" TI="6748" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="218" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="DRAW_GetCharMagniCoeff" TI="6748" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="236">\r
+ </function >\r
+ <function Name="DRAW_GetTextColor" TI="6748" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="254">\r
+ </function >\r
+ <function Name="DRAW_SetTextColor" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="272">\r
+ <parameter Name="Color" TI="6748" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="272" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="DRAW_GetBGndColor" TI="6748" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="290">\r
+ </function >\r
+ <function Name="DRAW_SetBGndColor" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="308">\r
+ <parameter Name="Color" TI="6748" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="308" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="DRAW_SetDefaultColor" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="414">\r
+ </function >\r
+ <function Name="DRAW_Line" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="476">\r
+ <parameter Name="x1" TI="6705" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="476" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="y1" TI="6705" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="476" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="x2" TI="6705" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="476" Addr="0x2" Param="Yes"/>\r
+ <parameter Name="y2" TI="6705" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="476" Addr="0x3" Param="Yes"/>\r
+ <parameter Name="color" TI="6748" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="476" Addr="0x34000000" Param="Yes"/>\r
+ <variable Name="i" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="477" Addr="0x8" TI="6959"/>\r
+ <variable Name="dx" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="477" Addr="0x2" TI="6959"/>\r
+ <variable Name="dy" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="477" Addr="0x3" TI="6959"/>\r
+ <variable Name="sdx" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="477" Addr="0x340FFFF4" TI="6959"/>\r
+ <variable Name="sdy" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="477" Addr="0x340FFFF8" TI="6959"/>\r
+ <variable Name="dxabs" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="477" Addr="0x7" TI="6959"/>\r
+ <variable Name="dyabs" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="477" Addr="0x6" TI="6959"/>\r
+ <variable Name="x" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="477" Addr="0x4" TI="6959"/>\r
+ <variable Name="y" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="477" Addr="0x4" TI="6959"/>\r
+ <variable Name="px" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="477" Addr="0x9" TI="6959"/>\r
+ <variable Name="py" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="477" Addr="0xA" TI="6959"/>\r
+ </function >\r
+ <function Name="DRAW_DisplayStringWithMode" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="129">\r
+ <parameter Name="x" TI="6766" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="129" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="y" TI="6766" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="129" Addr="0x1" Param="Yes"/>\r
+ <type Family="Pointer" TI="7572" toTI="7578"/>\r
+ <parameter Name="ptr" TI="7572" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="129" Addr="0x2" Param="Yes"/>\r
+ <parameter Name="len" TI="6766" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="129" Addr="0x3" Param="Yes"/>\r
+ <parameter Name="mode" TI="6959" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="129" Addr="0x34000000" Param="Yes"/>\r
+ <variable Name="ref_x" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="130" Addr="0x5" TI="6766"/>\r
+ <variable Name="i" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="130" Addr="0x6" TI="6766"/>\r
+ </function >\r
+ <function Name="DRAW_DisplayStringInverted" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="397">\r
+ <parameter Name="x" TI="6766" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="397" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="y" TI="6766" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="397" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="ptr" TI="7572" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="397" Addr="0x2" Param="Yes"/>\r
+ <parameter Name="len" TI="6766" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="397" Addr="0x3" Param="Yes"/>\r
+ </function >\r
+ <function Name="DRAW_DisplayString" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="373">\r
+ <parameter Name="x" TI="6766" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="373" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="y" TI="6766" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="373" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="ptr" TI="7572" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="373" Addr="0x2" Param="Yes"/>\r
+ <parameter Name="len" TI="6766" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="373" Addr="0x3" Param="Yes"/>\r
+ </function >\r
+ <function Name="DRAW_DisplayTemp" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="437">\r
+ <parameter Name="x" TI="6766" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="437" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="y" TI="6766" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="437" Addr="0x1" Param="Yes"/>\r
+ <variable Name="Temp" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="438" Addr="0x5" TI="6730"/>\r
+ <type Family="array" ID="7843" toTI="6766"/>\r
+ <variable Name="TextBuffer" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="439" Addr="0x340FFFE3" TI="7843"/>\r
+ </function >\r
+ <function Name="DRAW_SetImage" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="335">\r
+ <type Family="Pointer" TI="7974" toTI="7980"/>\r
+ <parameter Name="imageptr" TI="7974" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="335" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="x" TI="6766" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="335" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="y" TI="6766" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="335" Addr="0x2" Param="Yes"/>\r
+ <parameter Name="width" TI="6766" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="335" Addr="0x3" Param="Yes"/>\r
+ <parameter Name="height" TI="6766" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="335" Addr="0x34000000" Param="Yes"/>\r
+ <variable Name="i" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="336" Addr="0x5" TI="6959"/>\r
+ </function >\r
+ <function Name="DRAW_Init" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="178">\r
+ </function >\r
+ <variable Name="CharMagniCoeff" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="28" Addr="0x20000024" TI="6748"/>\r
+ <variable Name="BGndColor" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="29" Addr="0x2000009E" TI="6748"/>\r
+ <variable Name="TextColor" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="30" Addr="0x2000009C" TI="6748"/>\r
+ <variable Name="dummy_var" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" Line="77" Addr="0x200046E4" TI="6786"/>\r
+ <variable Name="fDisplayTime" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="32" Addr="0x200000A0" TI="6959"/>\r
+ <type Family="Pointer" TI="6936" toTI="6942"/>\r
+ <variable Name="Application_Pointer_Mgr" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" Line="429" Addr="0x200046E0" TI="6936"/>\r
+ <variable Name="BatState" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="33" Addr="0x20004704" TI="6748"/>\r
+ <variable Name="OldBatState" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="34" Addr="0x20004700" TI="6748"/>\r
+ <variable Name="OldTHH" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="35" Addr="0x2000470C" TI="6730"/>\r
+ <variable Name="OldTMM" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="36" Addr="0x20004714" TI="6730"/>\r
+ <variable Name="OldTSS" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="37" Addr="0x20004718" TI="6730"/>\r
+ <variable Name="OldTemp" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="38" Addr="0x20004720" TI="6730"/>\r
+ <variable Name="xBat" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="39" Addr="0x2000471C" TI="6748"/>\r
+ <variable Name="yBat" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="40" Addr="0x20004708" TI="6748"/>\r
+ <variable Name="widthBat" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="41" Addr="0x20004724" TI="6748"/>\r
+ <variable Name="heightBat" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="42" Addr="0x20004728" TI="6748"/>\r
+ <variable Name="UsbState" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="43" Addr="0x20004726" TI="6766"/>\r
+ <variable Name="OldUsbState" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="43" Addr="0x20004706" TI="6766"/>\r
+ <variable Name="rotate_counter" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="47" Addr="0x200000A4" TI="6959"/>\r
+ <variable Name="previous_H12" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="48" Addr="0x20000026" TI="6925"/>\r
+ <variable Name="previous_previous_H12" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="49" Addr="0x20000027" TI="6925"/>\r
+ <variable Name="H12" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="50" Addr="0x20004702" TI="6925"/>\r
+ <variable Name="CurrentScreenOrientation" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="51" Addr="0x20004710" TI="6925"/>\r
+ <variable Name="CurrentRotateScreen" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\draw.c" Line="52" Addr="0x20000028" TI="6959"/>\r
+ </module>\r
+ <module Name="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" >\r
+ <type Family="Base" Name="long int" ID="8502"/>\r
+ <type Family="typedef" Name="s32" Line="28" ID="8491" toTI="8502"/>\r
+ <type Family="Base" Name="short int" ID="8520"/>\r
+ <type Family="typedef" Name="s16" Line="29" ID="8509" toTI="8520"/>\r
+ <type Family="Base" Name="signed char" ID="8527"/>\r
+ <type Family="Base" Name="long unsigned int" ID="8545"/>\r
+ <type Family="typedef" Name="u32" Line="36" ID="8534" toTI="8545"/>\r
+ <type Family="Base" Name="short unsigned int" ID="8563"/>\r
+ <type Family="typedef" Name="u16" Line="37" ID="8552" toTI="8563"/>\r
+ <type Family="Base" Name="unsigned char" ID="8580"/>\r
+ <type Family="typedef" Name="u8" Line="38" ID="8570" toTI="8580"/>\r
+ <type Family="ComponentList" Line="200" ID="8642">\r
+ <Component Name="CRL" TI="8650" Line="201" Offs="0"/>\r
+ <Component Name="CRH" TI="8664" Line="202" Offs="4"/>\r
+ <Component Name="IDR" TI="8678" Line="203" Offs="8"/>\r
+ <Component Name="ODR" TI="8692" Line="204" Offs="12"/>\r
+ <Component Name="BSRR" TI="8706" Line="205" Offs="16"/>\r
+ <Component Name="BRR" TI="8720" Line="206" Offs="20"/>\r
+ <Component Name="LCKR" TI="8734" Line="207" Offs="24"/>\r
+ </type>\r
+ <type Family="ComponentList" Line="331" ID="8749">\r
+ <Component Name="CR1" TI="8758" Line="332" Offs="0"/>\r
+ <Component Name="RESERVED0" TI="8773" Line="333" Offs="2"/>\r
+ <Component Name="CR2" TI="8788" Line="334" Offs="4"/>\r
+ <Component Name="RESERVED1" TI="8803" Line="335" Offs="6"/>\r
+ <Component Name="SR" TI="8818" Line="336" Offs="8"/>\r
+ <Component Name="RESERVED2" TI="8832" Line="337" Offs="10"/>\r
+ <Component Name="DR" TI="8847" Line="338" Offs="12"/>\r
+ <Component Name="RESERVED3" TI="8861" Line="339" Offs="14"/>\r
+ <Component Name="CRCPR" TI="8876" Line="340" Offs="16"/>\r
+ <Component Name="RESERVED4" TI="8891" Line="341" Offs="18"/>\r
+ <Component Name="RXCRCR" TI="8906" Line="342" Offs="20"/>\r
+ <Component Name="RESERVED5" TI="8921" Line="343" Offs="22"/>\r
+ <Component Name="TXCRCR" TI="8936" Line="344" Offs="24"/>\r
+ <Component Name="RESERVED6" TI="8951" Line="345" Offs="26"/>\r
+ </type>\r
+ <type Family="typedef" Name="GPIOSpeed_TypeDef" Line="36" ID="8994" toTI="8967"/>\r
+ <type Family="typedef" Name="GPIOMode_TypeDef" Line="51" ID="9063" toTI="9005"/>\r
+ <type Family="ComponentList" Line="60" ID="9074">\r
+ <Component Name="GPIO_Pin" TI="9082" Line="61" Offs="0"/>\r
+ <Component Name="GPIO_Speed" TI="9096" Line="62" Offs="2"/>\r
+ <Component Name="GPIO_Mode" TI="9110" Line="63" Offs="3"/>\r
+ </type>\r
+ <type Family="typedef" Name="GPIO_InitTypeDef" Line="64" ID="9125" toTI="9074"/>\r
+ <type Family="ComponentList" Line="32" ID="9157">\r
+ <Component Name="SPI_Direction" TI="9165" Line="33" Offs="0"/>\r
+ <Component Name="SPI_Mode" TI="9179" Line="34" Offs="2"/>\r
+ <Component Name="SPI_DataSize" TI="9193" Line="35" Offs="4"/>\r
+ <Component Name="SPI_CPOL" TI="9207" Line="36" Offs="6"/>\r
+ <Component Name="SPI_CPHA" TI="9221" Line="37" Offs="8"/>\r
+ <Component Name="SPI_NSS" TI="9235" Line="38" Offs="10"/>\r
+ <Component Name="SPI_BaudRatePrescaler" TI="9249" Line="39" Offs="12"/>\r
+ <Component Name="SPI_FirstBit" TI="9263" Line="40" Offs="14"/>\r
+ <Component Name="SPI_CRCPolynomial" TI="9277" Line="41" Offs="16"/>\r
+ </type>\r
+ <type Family="typedef" Name="SPI_InitTypeDef" Line="42" ID="9292" toTI="9157"/>\r
+ <type Family="typedef" Name="Rotate_H12_V_Match_TypeDef" Line="101" ID="9442" toTI="9412"/>\r
+ <type Family="ComponentList" Line="104" ID="9453">\r
+ <Component Name="OutX" TI="9461" Line="105" Offs="0"/>\r
+ <Component Name="OutX_F4" TI="9475" Line="106" Offs="2"/>\r
+ <Component Name="OutX_F16" TI="9489" Line="107" Offs="4"/>\r
+ <Component Name="OutX_F64" TI="9503" Line="108" Offs="8"/>\r
+ <Component Name="OutX_F256" TI="9517" Line="109" Offs="12"/>\r
+ <Component Name="OutY" TI="9531" Line="110" Offs="16"/>\r
+ <Component Name="OutY_F4" TI="9545" Line="111" Offs="18"/>\r
+ <Component Name="OutY_F16" TI="9559" Line="112" Offs="20"/>\r
+ <Component Name="OutY_F64" TI="9573" Line="113" Offs="24"/>\r
+ <Component Name="OutY_F256" TI="9587" Line="114" Offs="28"/>\r
+ <Component Name="OutZ" TI="9601" Line="115" Offs="32"/>\r
+ <Component Name="OutZ_F4" TI="9615" Line="116" Offs="34"/>\r
+ <Component Name="OutZ_F16" TI="9629" Line="117" Offs="36"/>\r
+ <Component Name="OutZ_F64" TI="9643" Line="118" Offs="40"/>\r
+ <Component Name="OutZ_F256" TI="9657" Line="119" Offs="44"/>\r
+ <Component Name="Shocked" TI="9671" Line="120" Offs="48"/>\r
+ <Component Name="RELATIVE_X" TI="9685" Line="121" Offs="50"/>\r
+ <Component Name="RELATIVE_Y" TI="9699" Line="122" Offs="52"/>\r
+ <Component Name="DoubleClick" TI="9713" Line="123" Offs="54"/>\r
+ </type>\r
+ <type Family="typedef" Name="tMEMS_Info" Line="124" ID="9728" toTI="9453"/>\r
+ <type Family="Pointer" TI="9739" toTI="9745"/>\r
+ <type Family="Base" Name="int" ID="9762"/>\r
+ <type Family="Base" Name="char" ID="9819"/>\r
+ <type Family="Base" Name="unsigned int" ID="9826"/>\r
+ <function Name="MEMS_GetPosition" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="523">\r
+ <type Family="Pointer" TI="9884" toTI="8509"/>\r
+ <parameter Name="pX" TI="9884" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="523" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="pY" TI="9884" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="523" Addr="0x1" Param="Yes"/>\r
+ </function >\r
+ <function Name="MEMS_GetRotation" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="542">\r
+ <type Family="Pointer" TI="9963" toTI="9442"/>\r
+ <parameter Name="pH12" TI="9963" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="542" Addr="0x0" Param="Yes"/>\r
+ <variable Name="sX" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="543" Addr="0xE" TI="8509"/>\r
+ <variable Name="sY" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="544" Addr="0xC" TI="8509"/>\r
+ </function >\r
+ <function Name="MEMS_SetNeutral" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="584">\r
+ </function >\r
+ <type Family="Pointer" TI="10015" toTI="9728"/>\r
+ <function Name="MEMS_GetInfo" TI="10015" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="603">\r
+ </function >\r
+ <function Name="MEMS_SendByte" TI="8570" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="236">\r
+ <parameter Name="byte" TI="8570" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="236" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="MEMS_ChipSelect" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="215">\r
+ <parameter Name="State" TI="8570" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="215" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="MEMS_ReadID" TI="8570" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="482">\r
+ </function >\r
+ <function Name="MEMS_ReadOutXY" TI="8534" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="138">\r
+ </function >\r
+ <function Name="MEMS_Handler" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="381">\r
+ <type Family="array" ID="10304" toTI="9819"/>\r
+ </function >\r
+ <function Name="MEMS_Init" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="266">\r
+ <variable Name="SPI_InitStructure" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="267" Addr="0x340FFFD6" TI="9292"/>\r
+ <variable Name="GPIO_InitStructure" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="268" Addr="0x340FFFD2" TI="9125"/>\r
+ <variable Name="i" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="314" Addr="0x7" TI="9762"/>\r
+ </function >\r
+ <variable Name="dummy_var" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" Line="77" Addr="0x200046E4" TI="9303"/>\r
+ <variable Name="MEMS_Info" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="37" Addr="0x200000A8" TI="9728"/>\r
+ <type Family="Pointer" TI="9739" toTI="9745"/>\r
+ <variable Name="Application_Pointer_Mgr" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" Line="429" Addr="0x200046E0" TI="9739"/>\r
+ <variable Name="TestingActive" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="38" Addr="0x200000F8" TI="9762"/>\r
+ <variable Name="StartingFromResetOrShockCounter" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="39" Addr="0x2000002C" TI="9762"/>\r
+ <variable Name="TimeCounterForDoubleClick" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="40" Addr="0x200000E8" TI="9762"/>\r
+ <variable Name="TimeLastShock" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="41" Addr="0x200000F4" TI="9762"/>\r
+ <variable Name="Gradient2" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="44" Addr="0x20004734" TI="8534"/>\r
+ <variable Name="N_filtering" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="47" Addr="0x200000E4" TI="9826"/>\r
+ <variable Name="GradX" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="50" Addr="0x200000EC" TI="8509"/>\r
+ <variable Name="GradY" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="51" Addr="0x200000EE" TI="8509"/>\r
+ <variable Name="GradZ" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="52" Addr="0x200000F0" TI="8509"/>\r
+ <variable Name="fMovePtrX" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="59" Addr="0x20004740" TI="9762"/>\r
+ <variable Name="iMovePtrX" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="60" Addr="0x2000473C" TI="9762"/>\r
+ <variable Name="tMovePtrX" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="61" Addr="0x20004750" TI="9762"/>\r
+ <variable Name="fMovePtrY" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="62" Addr="0x20004748" TI="9762"/>\r
+ <variable Name="iMovePtrY" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="63" Addr="0x20004738" TI="9762"/>\r
+ <variable Name="tMovePtrY" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="64" Addr="0x20004730" TI="9762"/>\r
+ <variable Name="fMovePtrZ" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="65" Addr="0x2000472C" TI="9762"/>\r
+ <variable Name="iMovePtrZ" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="66" Addr="0x20004744" TI="9762"/>\r
+ <variable Name="tMovePtrZ" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="67" Addr="0x2000474C" TI="9762"/>\r
+ <variable Name="XInit" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="69" Addr="0x200000E0" TI="8509"/>\r
+ <variable Name="YInit" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="70" Addr="0x200000E2" TI="8509"/>\r
+ <variable Name="ZInit" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\mems.c" Line="71" Addr="0x200000FC" TI="8509"/>\r
+ </module>\r
+ <module Name="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" >\r
+ <type Family="Base" Name="long int" ID="10942"/>\r
+ <type Family="Base" Name="short int" ID="10949"/>\r
+ <type Family="Base" Name="signed char" ID="10956"/>\r
+ <type Family="Base" Name="long unsigned int" ID="10974"/>\r
+ <type Family="typedef" Name="u32" Line="36" ID="10963" toTI="10974"/>\r
+ <type Family="Base" Name="short unsigned int" ID="10992"/>\r
+ <type Family="typedef" Name="u16" Line="37" ID="10981" toTI="10992"/>\r
+ <type Family="Base" Name="unsigned char" ID="11009"/>\r
+ <type Family="typedef" Name="u8" Line="38" ID="10999" toTI="11009"/>\r
+ <type Family="ComponentList" Line="200" ID="11050">\r
+ <Component Name="CRL" TI="11058" Line="201" Offs="0"/>\r
+ <Component Name="CRH" TI="11072" Line="202" Offs="4"/>\r
+ <Component Name="IDR" TI="11086" Line="203" Offs="8"/>\r
+ <Component Name="ODR" TI="11100" Line="204" Offs="12"/>\r
+ <Component Name="BSRR" TI="11114" Line="205" Offs="16"/>\r
+ <Component Name="BRR" TI="11128" Line="206" Offs="20"/>\r
+ <Component Name="LCKR" TI="11142" Line="207" Offs="24"/>\r
+ </type>\r
+ <type Family="ComponentList" Line="404" ID="11157">\r
+ <Component Name="CR1" TI="11166" Line="405" Offs="0"/>\r
+ <Component Name="RESERVED0" TI="11181" Line="406" Offs="2"/>\r
+ <Component Name="CR2" TI="11196" Line="407" Offs="4"/>\r
+ <Component Name="RESERVED1" TI="11211" Line="408" Offs="6"/>\r
+ <Component Name="SMCR" TI="11226" Line="409" Offs="8"/>\r
+ <Component Name="RESERVED2" TI="11241" Line="410" Offs="10"/>\r
+ <Component Name="DIER" TI="11256" Line="411" Offs="12"/>\r
+ <Component Name="RESERVED3" TI="11271" Line="412" Offs="14"/>\r
+ <Component Name="SR" TI="11286" Line="413" Offs="16"/>\r
+ <Component Name="RESERVED4" TI="11300" Line="414" Offs="18"/>\r
+ <Component Name="EGR" TI="11315" Line="415" Offs="20"/>\r
+ <Component Name="RESERVED5" TI="11330" Line="416" Offs="22"/>\r
+ <Component Name="CCMR1" TI="11345" Line="417" Offs="24"/>\r
+ <Component Name="RESERVED6" TI="11360" Line="418" Offs="26"/>\r
+ <Component Name="CCMR2" TI="11375" Line="419" Offs="28"/>\r
+ <Component Name="RESERVED7" TI="11390" Line="420" Offs="30"/>\r
+ <Component Name="CCER" TI="11405" Line="421" Offs="32"/>\r
+ <Component Name="RESERVED8" TI="11420" Line="422" Offs="34"/>\r
+ <Component Name="CNT" TI="11435" Line="423" Offs="36"/>\r
+ <Component Name="RESERVED9" TI="11450" Line="424" Offs="38"/>\r
+ <Component Name="PSC" TI="11465" Line="425" Offs="40"/>\r
+ <Component Name="RESERVED10" TI="11480" Line="426" Offs="42"/>\r
+ <Component Name="ARR" TI="11495" Line="427" Offs="44"/>\r
+ <type Family="array" ID="11706" toTI="10981"/>\r
+ <Component Name="RESERVED11" TI="11510" Line="428" Offs="46"/>\r
+ <Component Name="CCR1" TI="11525" Line="429" Offs="52"/>\r
+ <Component Name="RESERVED12" TI="11540" Line="430" Offs="54"/>\r
+ <Component Name="CCR2" TI="11555" Line="431" Offs="56"/>\r
+ <Component Name="RESERVED13" TI="11570" Line="432" Offs="58"/>\r
+ <Component Name="CCR3" TI="11585" Line="433" Offs="60"/>\r
+ <Component Name="RESERVED14" TI="11600" Line="434" Offs="62"/>\r
+ <Component Name="CCR4" TI="11615" Line="435" Offs="64"/>\r
+ <Component Name="RESERVED15" TI="11630" Line="436" Offs="66"/>\r
+ <Component Name="DCR" TI="11645" Line="437" Offs="72"/>\r
+ <Component Name="RESERVED16" TI="11660" Line="438" Offs="74"/>\r
+ <Component Name="DMAR" TI="11675" Line="439" Offs="76"/>\r
+ <Component Name="RESERVED17" TI="11690" Line="440" Offs="78"/>\r
+ </type>\r
+ <type Family="typedef" Name="GPIOSpeed_TypeDef" Line="36" ID="11749" toTI="11722"/>\r
+ <type Family="typedef" Name="GPIOMode_TypeDef" Line="51" ID="11818" toTI="11760"/>\r
+ <type Family="ComponentList" Line="60" ID="11829">\r
+ <Component Name="GPIO_Pin" TI="11837" Line="61" Offs="0"/>\r
+ <Component Name="GPIO_Speed" TI="11851" Line="62" Offs="2"/>\r
+ <Component Name="GPIO_Mode" TI="11865" Line="63" Offs="3"/>\r
+ </type>\r
+ <type Family="typedef" Name="GPIO_InitTypeDef" Line="64" ID="11880" toTI="11829"/>\r
+ <type Family="ComponentList" Line="31" ID="11891">\r
+ <Component Name="SYSCLK_Frequency" TI="11899" Line="32" Offs="0"/>\r
+ <Component Name="HCLK_Frequency" TI="11913" Line="33" Offs="4"/>\r
+ <Component Name="PCLK1_Frequency" TI="11927" Line="34" Offs="8"/>\r
+ <Component Name="PCLK2_Frequency" TI="11941" Line="35" Offs="12"/>\r
+ <Component Name="ADCCLK_Frequency" TI="11955" Line="36" Offs="16"/>\r
+ </type>\r
+ <type Family="typedef" Name="RCC_ClocksTypeDef" Line="37" ID="11970" toTI="11891"/>\r
+ <type Family="ComponentList" Line="33" ID="11981">\r
+ <Component Name="TIM_Period" TI="11989" Line="34" Offs="0"/>\r
+ <Component Name="TIM_Prescaler" TI="12003" Line="35" Offs="2"/>\r
+ <Component Name="TIM_ClockDivision" TI="12017" Line="36" Offs="4"/>\r
+ <Component Name="TIM_CounterMode" TI="12031" Line="37" Offs="6"/>\r
+ </type>\r
+ <type Family="typedef" Name="TIM_TimeBaseInitTypeDef" Line="38" ID="12046" toTI="11981"/>\r
+ <type Family="ComponentList" Line="42" ID="12057">\r
+ <Component Name="TIM_OCMode" TI="12065" Line="43" Offs="0"/>\r
+ <Component Name="TIM_Channel" TI="12079" Line="44" Offs="2"/>\r
+ <Component Name="TIM_Pulse" TI="12093" Line="45" Offs="4"/>\r
+ <Component Name="TIM_OCPolarity" TI="12107" Line="46" Offs="6"/>\r
+ </type>\r
+ <type Family="typedef" Name="TIM_OCInitTypeDef" Line="47" ID="12122" toTI="12057"/>\r
+ <type Family="Pointer" TI="12242" toTI="12248"/>\r
+ <type Family="Base" Name="int" ID="12265"/>\r
+ <type Family="Base" Name="char" ID="12322"/>\r
+ <type Family="Base" Name="unsigned int" ID="12329"/>\r
+ <function Name="BUZZER_GetMode" TI="12272" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="358">\r
+ </function >\r
+ <function Name="BUZZER_SetFrequency" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="195">\r
+ <parameter Name="freq" TI="10981" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="195" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="PlayMusic" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="104">\r
+ <variable Name="duration" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="105" Addr="0xC" TI="10999"/>\r
+ <variable Name="c" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="106" Addr="0x1" TI="10999"/>\r
+ </function >\r
+ <function Name="BUZZER_SetMode" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="376">\r
+ <parameter Name="mode" TI="12272" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="376" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="BUZZER_PlayMusic" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="464">\r
+ <type Family="Pointer" TI="12719" toTI="12725"/>\r
+ <parameter Name="melody" TI="12719" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="464" Addr="0x0" Param="Yes"/>\r
+ <variable Name="c" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="465" Addr="0x1" TI="10999"/>\r
+ <variable Name="default_id" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="466" Addr="0xE" TI="10999"/>\r
+ <variable Name="default_val" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="467" Addr="0x4" TI="10981"/>\r
+ </function >\r
+ <function Name="BUZZER_Handler" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="291">\r
+ </function >\r
+ <function Name="BUZZER_Init" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="231">\r
+ <variable Name="GPIO_InitStructure" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="232" Addr="0x340FFFDC" TI="11880"/>\r
+ </function >\r
+ <variable Name="TIM_TimeBaseStructure" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="54" Addr="0x20000100" TI="12046"/>\r
+ <variable Name="TIM_OCInitStructure" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="55" Addr="0x20000108" TI="12122"/>\r
+ <variable Name="dummy_var" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" Line="77" Addr="0x200046E4" TI="12133"/>\r
+ <type Family="Pointer" TI="12242" toTI="12248"/>\r
+ <variable Name="Application_Pointer_Mgr" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" Line="429" Addr="0x200046E0" TI="12242"/>\r
+ <variable Name="octave" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="26" Addr="0x20004755" TI="12336"/>\r
+ <variable Name="note" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="43" Addr="0x20004754" TI="12379"/>\r
+ <variable Name="buzz_counter" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="52" Addr="0x2000011C" TI="12265"/>\r
+ <variable Name="buzz_in_progress" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="53" Addr="0x20000120" TI="12265"/>\r
+ <variable Name="CCR_Val" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="56" Addr="0x20000032" TI="10981"/>\r
+ <variable Name="Buzzer_Mode" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="57" Addr="0x20000030" TI="12272"/>\r
+ <variable Name="Buzzer_Counter" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="58" Addr="0x20000114" TI="10963"/>\r
+ <variable Name="CurrentMelody" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="61" Addr="0x20000110" TI="12719"/>\r
+ <variable Name="CurrentMelodySTART" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="62" Addr="0x20000118" TI="12719"/>\r
+ <variable Name="DefaultOctave" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="63" Addr="0x20000038" TI="10999"/>\r
+ <variable Name="DefaultDuration" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="64" Addr="0x20000034" TI="10999"/>\r
+ <variable Name="DefaultBeats" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="65" Addr="0x20000036" TI="10981"/>\r
+ <type Family="array" ID="13109" toTI="10981"/>\r
+ <variable Name="Note_Freq" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\buzzer.c" Line="67" Addr="0x2000003A" TI="13109"/>\r
+ </module>\r
+ <module Name="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" >\r
+ <type Family="Base" Name="long int" ID="13184"/>\r
+ <type Family="typedef" Name="s32" Line="28" ID="13173" toTI="13184"/>\r
+ <type Family="Base" Name="short int" ID="13202"/>\r
+ <type Family="typedef" Name="s16" Line="29" ID="13191" toTI="13202"/>\r
+ <type Family="Base" Name="signed char" ID="13209"/>\r
+ <type Family="Base" Name="long unsigned int" ID="13227"/>\r
+ <type Family="typedef" Name="u32" Line="36" ID="13216" toTI="13227"/>\r
+ <type Family="Base" Name="short unsigned int" ID="13245"/>\r
+ <type Family="typedef" Name="u16" Line="37" ID="13234" toTI="13245"/>\r
+ <type Family="Base" Name="unsigned char" ID="13262"/>\r
+ <type Family="typedef" Name="u8" Line="38" ID="13252" toTI="13262"/>\r
+ <type Family="ComponentList" Line="104" ID="13411">\r
+ <Component Name="OutX" TI="13419" Line="105" Offs="0"/>\r
+ <Component Name="OutX_F4" TI="13433" Line="106" Offs="2"/>\r
+ <Component Name="OutX_F16" TI="13447" Line="107" Offs="4"/>\r
+ <Component Name="OutX_F64" TI="13461" Line="108" Offs="8"/>\r
+ <Component Name="OutX_F256" TI="13475" Line="109" Offs="12"/>\r
+ <Component Name="OutY" TI="13489" Line="110" Offs="16"/>\r
+ <Component Name="OutY_F4" TI="13503" Line="111" Offs="18"/>\r
+ <Component Name="OutY_F16" TI="13517" Line="112" Offs="20"/>\r
+ <Component Name="OutY_F64" TI="13531" Line="113" Offs="24"/>\r
+ <Component Name="OutY_F256" TI="13545" Line="114" Offs="28"/>\r
+ <Component Name="OutZ" TI="13559" Line="115" Offs="32"/>\r
+ <Component Name="OutZ_F4" TI="13573" Line="116" Offs="34"/>\r
+ <Component Name="OutZ_F16" TI="13587" Line="117" Offs="36"/>\r
+ <Component Name="OutZ_F64" TI="13601" Line="118" Offs="40"/>\r
+ <Component Name="OutZ_F256" TI="13615" Line="119" Offs="44"/>\r
+ <Component Name="Shocked" TI="13629" Line="120" Offs="48"/>\r
+ <Component Name="RELATIVE_X" TI="13643" Line="121" Offs="50"/>\r
+ <Component Name="RELATIVE_Y" TI="13657" Line="122" Offs="52"/>\r
+ <Component Name="DoubleClick" TI="13671" Line="123" Offs="54"/>\r
+ </type>\r
+ <type Family="typedef" Name="tMEMS_Info" Line="124" ID="13686" toTI="13411"/>\r
+ <type Family="ComponentList" Line="185" ID="13777">\r
+ <Component Name="xPos" TI="13785" Line="186" Offs="0"/>\r
+ <Component Name="yPos" TI="13799" Line="187" Offs="2"/>\r
+ <Component Name="shift_PosX" TI="13813" Line="188" Offs="4"/>\r
+ <Component Name="shift_PosY" TI="13827" Line="189" Offs="6"/>\r
+ <Component Name="X_PosMin" TI="13841" Line="190" Offs="8"/>\r
+ <Component Name="Y_PosMin" TI="13855" Line="191" Offs="10"/>\r
+ <Component Name="X_PosMax" TI="13869" Line="192" Offs="12"/>\r
+ <Component Name="Y_PosMax" TI="13883" Line="193" Offs="14"/>\r
+ </type>\r
+ <type Family="typedef" Name="tPointer_Info" Line="194" ID="13898" toTI="13777"/>\r
+ <type Family="Pointer" TI="13920" toTI="13926"/>\r
+ <type Family="typedef" Name="tAppPtrMgr" Line="226" ID="13909" toTI="13920"/>\r
+ <type Family="Pointer" TI="13920" toTI="13926"/>\r
+ <type Family="Base" Name="int" ID="13943"/>\r
+ <type Family="Base" Name="char" ID="13950"/>\r
+ <type Family="Base" Name="unsigned int" ID="13957"/>\r
+ <function Name="POINTER_SetCurrentPointer" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="351">\r
+ <parameter Name="width" TI="13252" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="351" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="height" TI="13252" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="351" Addr="0x1" Param="Yes"/>\r
+ <type Family="Pointer" TI="14031" toTI="13252"/>\r
+ <parameter Name="bmp" TI="14031" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="351" Addr="0x2" Param="Yes"/>\r
+ </function >\r
+ <function Name="POINTER_GetCurrentAngleStart" TI="13234" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="376">\r
+ </function >\r
+ <function Name="POINTER_SetCurrentAngleStart" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="394">\r
+ <parameter Name="newangle" TI="13234" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="394" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="POINTER_GetCurrentSpeedOnAngle" TI="13234" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="412">\r
+ </function >\r
+ <function Name="POINTER_SetCurrentSpeedOnAngle" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="430">\r
+ <parameter Name="newspeed" TI="13234" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="430" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="POINTER_SetCurrentAreaStore" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="453">\r
+ <parameter Name="ptr" TI="14031" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="453" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="POINTER_GetMode" TI="13697" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="532">\r
+ </function >\r
+ <function Name="POINTER_GetState" TI="13746" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="550">\r
+ </function >\r
+ <function Name="POINTER_SetRect" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="573">\r
+ <parameter Name="x" TI="13191" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="573" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="y" TI="13191" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="573" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="width" TI="13191" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="573" Addr="0x2" Param="Yes"/>\r
+ <parameter Name="height" TI="13191" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="573" Addr="0x3" Param="Yes"/>\r
+ </function >\r
+ <function Name="POINTER_SetRectScreen" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="615">\r
+ </function >\r
+ <function Name="POINTER_GetPos" TI="13234" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="634">\r
+ </function >\r
+ <function Name="POINTER_SetPos" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="655">\r
+ <parameter Name="x" TI="13234" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="655" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="y" TI="13234" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="655" Addr="0x1" Param="Yes"/>\r
+ </function >\r
+ <function Name="POINTER_SetApplication_Pointer_Mgr" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="845">\r
+ <type Family="Pointer" TI="13920" toTI="13926"/>\r
+ <type Family="typedef" Name="tAppPtrMgr" Line="226" ID="13909" toTI="13920"/>\r
+ <parameter Name="mgr" TI="13909" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="845" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="POINTER_SetColor" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="863">\r
+ <parameter Name="color" TI="13234" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="863" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="POINTER_GetColor" TI="13234" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="881">\r
+ </function >\r
+ <type Family="Pointer" TI="14558" toTI="13898"/>\r
+ <function Name="POINTER_GetInfo" TI="14558" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="899">\r
+ </function >\r
+ <function Name="POINTER_Restore" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="806">\r
+ <parameter Name="x" TI="13252" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="806" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="y" TI="13252" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="806" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="width" TI="13252" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="806" Addr="0x2" Param="Yes"/>\r
+ <parameter Name="height" TI="13252" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="806" Addr="0x3" Param="Yes"/>\r
+ <variable Name="i" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="807" Addr="0x4" TI="13943"/>\r
+ <type Family="Pointer" TI="14691" toTI="13950"/>\r
+ <variable Name="ptr" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="808" Addr="0x5" TI="14691"/>\r
+ <variable Name="bytesize" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="809" Addr="0x6" TI="13943"/>\r
+ </function >\r
+ <function Name="POINTER_Draw" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="682">\r
+ <parameter Name="x" TI="13252" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="682" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="y" TI="13252" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="682" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="width" TI="13252" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="682" Addr="0x2" Param="Yes"/>\r
+ <parameter Name="height" TI="13252" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="682" Addr="0x3" Param="Yes"/>\r
+ <parameter Name="bmp" TI="14031" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="682" Addr="0x34000000" Param="Yes"/>\r
+ <variable Name="i" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="683" Addr="0x5" TI="13943"/>\r
+ <variable Name="l" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="684" Addr="0x9" TI="13943"/>\r
+ <variable Name="n" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="685" Addr="0xA" TI="13943"/>\r
+ <variable Name="ptr" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="686" Addr="0x6" TI="14691"/>\r
+ <variable Name="c" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="687" Addr="0x0" TI="13950"/>\r
+ <variable Name="val" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="688" Addr="0x4" TI="13234"/>\r
+ </function >\r
+ <function Name="POINTER_Save" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="759">\r
+ <parameter Name="x" TI="13252" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="759" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="y" TI="13252" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="759" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="width" TI="13252" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="759" Addr="0x2" Param="Yes"/>\r
+ <parameter Name="height" TI="13252" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="759" Addr="0x3" Param="Yes"/>\r
+ <variable Name="i" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="760" Addr="0x4" TI="13943"/>\r
+ <variable Name="bytesize" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="762" Addr="0x5" TI="13943"/>\r
+ </function >\r
+ <function Name="POINTER_SetMode" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="473">\r
+ <parameter Name="mode" TI="13697" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="473" Addr="0x0" Param="Yes"/>\r
+ <type Family="Pointer" TI="15094" toTI="13234"/>\r
+ <variable Name="i" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="475" Addr="0x1" TI="13234"/>\r
+ <variable Name="color" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="476" Addr="0x0" TI="13234"/>\r
+ </function >\r
+ <function Name="POINTER_Init" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="289">\r
+ </function >\r
+ <function Name="POINTER_Handler" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="315">\r
+ <variable Name="oldPointer_xPos" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="85" Addr="0x9" TI="0"/>\r
+ <variable Name="oldPointer_yPos" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="86" Addr="0xB" TI="0"/>\r
+ <variable Name="unmodied_shift_PosY" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="88" Addr="0x2" TI="0"/>\r
+ <variable Name="outx" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="89" Addr="0x8" TI="0"/>\r
+ <variable Name="outy" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="90" Addr="0x7" TI="0"/>\r
+ </function >\r
+ <variable Name="dummy_var" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" Line="77" Addr="0x200046E4" TI="13272"/>\r
+ <variable Name="POINTER_Info" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="58" Addr="0x20000072" TI="13898"/>\r
+ <type Family="array" ID="15381" toTI="13262"/>\r
+ <variable Name="BallPointerBmp" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="39" Addr="0x2000005C" TI="15381"/>\r
+ <variable Name="CurrentPointerBmp" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="44" Addr="0x20000128" TI="14031"/>\r
+ <variable Name="CurrentPointerColor" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="50" Addr="0x20000082" TI="13234"/>\r
+ <type Family="Pointer" TI="13920" toTI="13926"/>\r
+ <variable Name="Application_Pointer_Mgr" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" Line="429" Addr="0x200046E0" TI="13920"/>\r
+ <variable Name="locbuf" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="40" Addr="0x200047BC" TI="15381"/>\r
+ <type Family="array" ID="15488" toTI="13262"/>\r
+ <variable Name="DefaultAreaStore" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="41" Addr="0x20004756" TI="15488"/>\r
+ <variable Name="CurrentPointerWidth" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="45" Addr="0x20000124" TI="13252"/>\r
+ <variable Name="CurrentPointerHeight" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="46" Addr="0x20000125" TI="13252"/>\r
+ <variable Name="CurrentSpeedOnAngle" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="47" Addr="0x20000068" TI="13234"/>\r
+ <variable Name="CurrentAngleStart" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="48" Addr="0x20000064" TI="13216"/>\r
+ <type Family="Pointer" TI="15612" toTI="13262"/>\r
+ <variable Name="ptrAreaStore" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="49" Addr="0x2000006C" TI="15612"/>\r
+ <variable Name="Pointer_Mode" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="51" Addr="0x20000070" TI="13697"/>\r
+ <variable Name="Pointer_State" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="52" Addr="0x20000071" TI="13746"/>\r
+ <variable Name="OUT_X" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="54" Addr="0x200047B8" TI="13191"/>\r
+ <variable Name="OUT_Y" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\pointer.c" Line="55" Addr="0x200047BA" TI="13191"/>\r
+ </module>\r
+ <module Name="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" >\r
+ <type Family="Base" Name="long int" ID="15720"/>\r
+ <type Family="Base" Name="short int" ID="15727"/>\r
+ <type Family="Base" Name="signed char" ID="15734"/>\r
+ <type Family="Base" Name="long unsigned int" ID="15741"/>\r
+ <type Family="Base" Name="short unsigned int" ID="15748"/>\r
+ <type Family="Base" Name="unsigned char" ID="15755"/>\r
+ <type Family="Pointer" TI="15995" toTI="16001"/>\r
+ <type Family="Base" Name="int" ID="16018"/>\r
+ <type Family="Base" Name="char" ID="16036"/>\r
+ <type Family="Pointer" TI="16025" toTI="16031"/>\r
+ <type Family="Base" Name="unsigned int" ID="16043"/>\r
+ <type Family="Base" Name="long long int" ID="16050"/>\r
+ <type Family="Pointer" TI="16057" toTI="0"/>\r
+ <type Family="Base" Name="long long unsigned int" ID="16059"/>\r
+ <type Family="typedef" Name="portTickType" Line="74" ID="16066" toTI="15741"/>\r
+ <type Family="Pointer" TI="16057" toTI="0"/>\r
+ <type Family="typedef" Name="xQueueHandle" Line="43" ID="16077" toTI="16057"/>\r
+ <type Family="ComponentList" Line="155" ID="16088">\r
+ <Component Name="xMessageType" TI="16096" Line="156" Offs="0"/>\r
+ <type Family="Pointer" TI="16125" toTI="15734"/>\r
+ <Component Name="pcMessage" TI="16110" Line="157" Offs="4"/>\r
+ </type>\r
+ <type Family="typedef" Name="xLCDMessage" Line="158" ID="16131" toTI="16088"/>\r
+ <function Name="starting_delay" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" Line="460">\r
+ <parameter Name="ul" TI="15741" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" Line="460" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="vApplicationTickHook" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" Line="358">\r
+ <variable Name="ulCallCount" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" Line="359" Addr="0x2000012C" TI="15741"/>\r
+ <variable Name="xMemsMessage" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" Line="360" Addr="0x8005430" TI="16560"/>\r
+ </function >\r
+ <function Name="main" TI="16018" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" Line="215">\r
+ </function >\r
+ <function Name="prvFlashTask" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" Line="443">\r
+ <type Family="Pointer" TI="16057" toTI="0"/>\r
+ <parameter Name="pvParameters" TI="16057" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" Line="443" Addr="0x0" Param="Yes"/>\r
+ <variable Name="xLastExecutionTime" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" Line="444" Addr="0x340FFFF8" TI="16066"/>\r
+ </function >\r
+ <function Name="prvLCDTask" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" Line="251">\r
+ <type Family="Pointer" TI="16057" toTI="0"/>\r
+ <parameter Name="pvParameters" TI="16057" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" Line="251" Addr="0x0" Param="Yes"/>\r
+ <variable Name="xMessage" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" Line="252" Addr="0x340FFFE8" TI="16131"/>\r
+ <variable Name="cY" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" Line="253" Addr="0x6" TI="16036"/>\r
+ </function >\r
+ <function Name="prvCheckTask" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" Line="301">\r
+ <type Family="Pointer" TI="16057" toTI="0"/>\r
+ <parameter Name="pvParameters" TI="16057" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" Line="301" Addr="0x0" Param="Yes"/>\r
+ <variable Name="xLastExecutionTime" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" Line="302" Addr="0x340FFFF8" TI="16066"/>\r
+ <variable Name="xMessage" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" Line="303" Addr="0x340FFFEC" TI="16131"/>\r
+ <type Family="array" ID="16544" toTI="15734"/>\r
+ <variable Name="cPassMessage" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" Line="304" Addr="0x20000130" TI="16544"/>\r
+ </function >\r
+ <variable Name="dummy_var" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" Line="77" Addr="0x200046E4" TI="15807"/>\r
+ <type Family="Pointer" TI="15995" toTI="16001"/>\r
+ <variable Name="Application_Pointer_Mgr" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ST_Code\circle.h" Line="429" Addr="0x200046E0" TI="15995"/>\r
+ <type Family="array" ID="16602" toTI="15748"/>\r
+ <variable Name="pucImage" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\bitmap.h" Line="42" Addr="0x8005438" TI="16637"/>\r
+ <type Family="Pointer" TI="16057" toTI="0"/>\r
+ <type Family="typedef" Name="xQueueHandle" Line="43" ID="16077" toTI="16057"/>\r
+ <variable Name="xLCDQueue" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\main.c" Line="210" Addr="0x200047C4" TI="16077"/>\r
+ </module>\r
+ <module Name="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ParTest\ParTest.c" >\r
+ <type Family="Base" Name="int" ID="16704"/>\r
+ <type Family="Base" Name="unsigned int" ID="16711"/>\r
+ <type Family="Base" Name="long int" ID="16718"/>\r
+ <type Family="Base" Name="short int" ID="16725"/>\r
+ <type Family="Base" Name="signed char" ID="16732"/>\r
+ <type Family="Base" Name="long unsigned int" ID="16739"/>\r
+ <type Family="Base" Name="short unsigned int" ID="16757"/>\r
+ <type Family="typedef" Name="u16" Line="37" ID="16746" toTI="16757"/>\r
+ <type Family="Base" Name="unsigned char" ID="16764"/>\r
+ <type Family="ComponentList" Line="200" ID="16800">\r
+ <Component Name="CRL" TI="16808" Line="201" Offs="0"/>\r
+ <Component Name="CRH" TI="16822" Line="202" Offs="4"/>\r
+ <Component Name="IDR" TI="16836" Line="203" Offs="8"/>\r
+ <Component Name="ODR" TI="16850" Line="204" Offs="12"/>\r
+ <Component Name="BSRR" TI="16864" Line="205" Offs="16"/>\r
+ <Component Name="BRR" TI="16878" Line="206" Offs="20"/>\r
+ <Component Name="LCKR" TI="16892" Line="207" Offs="24"/>\r
+ </type>\r
+ <type Family="typedef" Name="GPIOSpeed_TypeDef" Line="36" ID="16934" toTI="16907"/>\r
+ <type Family="typedef" Name="GPIOMode_TypeDef" Line="51" ID="17003" toTI="16945"/>\r
+ <type Family="ComponentList" Line="60" ID="17014">\r
+ <Component Name="GPIO_Pin" TI="17022" Line="61" Offs="0"/>\r
+ <Component Name="GPIO_Speed" TI="17036" Line="62" Offs="2"/>\r
+ <Component Name="GPIO_Mode" TI="17050" Line="63" Offs="3"/>\r
+ </type>\r
+ <type Family="typedef" Name="GPIO_InitTypeDef" Line="64" ID="17065" toTI="17014"/>\r
+ <function Name="vParTestToggleLED" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ParTest\ParTest.c" Line="97">\r
+ <parameter Name="uxLED" TI="16739" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ParTest\ParTest.c" Line="97" Addr="0x0" Param="Yes"/>\r
+ <variable Name="usBit" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ParTest\ParTest.c" Line="98" Addr="0x2" TI="16757"/>\r
+ </function >\r
+ <function Name="vParTestSetLED" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ParTest\ParTest.c" Line="70">\r
+ <parameter Name="uxLED" TI="16739" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ParTest\ParTest.c" Line="70" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="xValue" TI="16718" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ParTest\ParTest.c" Line="70" Addr="0x1" Param="Yes"/>\r
+ <variable Name="usBit" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ParTest\ParTest.c" Line="71" Addr="0x0" TI="16757"/>\r
+ </function >\r
+ <function Name="vParTestInitialise" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ParTest\ParTest.c" Line="54">\r
+ <variable Name="GPIO_InitStructure" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ParTest\ParTest.c" Line="55" Addr="0x340FFFF4" TI="17065"/>\r
+ </function >\r
+ <variable Name="usOutputValue" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\ParTest\ParTest.c" Line="49" Addr="0x2000014C" TI="16757"/>\r
+ </module>\r
+ <module Name="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\timertest.c" >\r
+ <type Family="Base" Name="int" ID="17290"/>\r
+ <type Family="Base" Name="unsigned int" ID="17297"/>\r
+ <type Family="Base" Name="long int" ID="17304"/>\r
+ <type Family="Base" Name="short int" ID="17311"/>\r
+ <type Family="Base" Name="signed char" ID="17318"/>\r
+ <type Family="Base" Name="long unsigned int" ID="17325"/>\r
+ <type Family="Base" Name="short unsigned int" ID="17343"/>\r
+ <type Family="typedef" Name="u16" Line="37" ID="17332" toTI="17343"/>\r
+ <type Family="Base" Name="unsigned char" ID="17360"/>\r
+ <type Family="typedef" Name="u8" Line="38" ID="17350" toTI="17360"/>\r
+ <type Family="typedef" Name="FunctionalState" Line="56" ID="17393" toTI="17372"/>\r
+ <type Family="ComponentList" Line="404" ID="17407">\r
+ <Component Name="CR1" TI="17416" Line="405" Offs="0"/>\r
+ <Component Name="RESERVED0" TI="17431" Line="406" Offs="2"/>\r
+ <Component Name="CR2" TI="17446" Line="407" Offs="4"/>\r
+ <Component Name="RESERVED1" TI="17461" Line="408" Offs="6"/>\r
+ <Component Name="SMCR" TI="17476" Line="409" Offs="8"/>\r
+ <Component Name="RESERVED2" TI="17491" Line="410" Offs="10"/>\r
+ <Component Name="DIER" TI="17506" Line="411" Offs="12"/>\r
+ <Component Name="RESERVED3" TI="17521" Line="412" Offs="14"/>\r
+ <Component Name="SR" TI="17536" Line="413" Offs="16"/>\r
+ <Component Name="RESERVED4" TI="17550" Line="414" Offs="18"/>\r
+ <Component Name="EGR" TI="17565" Line="415" Offs="20"/>\r
+ <Component Name="RESERVED5" TI="17580" Line="416" Offs="22"/>\r
+ <Component Name="CCMR1" TI="17595" Line="417" Offs="24"/>\r
+ <Component Name="RESERVED6" TI="17610" Line="418" Offs="26"/>\r
+ <Component Name="CCMR2" TI="17625" Line="419" Offs="28"/>\r
+ <Component Name="RESERVED7" TI="17640" Line="420" Offs="30"/>\r
+ <Component Name="CCER" TI="17655" Line="421" Offs="32"/>\r
+ <Component Name="RESERVED8" TI="17670" Line="422" Offs="34"/>\r
+ <Component Name="CNT" TI="17685" Line="423" Offs="36"/>\r
+ <Component Name="RESERVED9" TI="17700" Line="424" Offs="38"/>\r
+ <Component Name="PSC" TI="17715" Line="425" Offs="40"/>\r
+ <Component Name="RESERVED10" TI="17730" Line="426" Offs="42"/>\r
+ <Component Name="ARR" TI="17745" Line="427" Offs="44"/>\r
+ <type Family="array" ID="17956" toTI="17332"/>\r
+ <Component Name="RESERVED11" TI="17760" Line="428" Offs="46"/>\r
+ <Component Name="CCR1" TI="17775" Line="429" Offs="52"/>\r
+ <Component Name="RESERVED12" TI="17790" Line="430" Offs="54"/>\r
+ <Component Name="CCR2" TI="17805" Line="431" Offs="56"/>\r
+ <Component Name="RESERVED13" TI="17820" Line="432" Offs="58"/>\r
+ <Component Name="CCR3" TI="17835" Line="433" Offs="60"/>\r
+ <Component Name="RESERVED14" TI="17850" Line="434" Offs="62"/>\r
+ <Component Name="CCR4" TI="17865" Line="435" Offs="64"/>\r
+ <Component Name="RESERVED15" TI="17880" Line="436" Offs="66"/>\r
+ <Component Name="DCR" TI="17895" Line="437" Offs="72"/>\r
+ <Component Name="RESERVED16" TI="17910" Line="438" Offs="74"/>\r
+ <Component Name="DMAR" TI="17925" Line="439" Offs="76"/>\r
+ <Component Name="RESERVED17" TI="17940" Line="440" Offs="78"/>\r
+ </type>\r
+ <type Family="ComponentList" Line="32" ID="17972">\r
+ <Component Name="NVIC_IRQChannel" TI="17980" Line="33" Offs="0"/>\r
+ <Component Name="NVIC_IRQChannelPreemptionPriority" TI="17994" Line="34" Offs="1"/>\r
+ <Component Name="NVIC_IRQChannelSubPriority" TI="18008" Line="35" Offs="2"/>\r
+ <Component Name="NVIC_IRQChannelCmd" TI="18022" Line="36" Offs="3"/>\r
+ </type>\r
+ <type Family="typedef" Name="NVIC_InitTypeDef" Line="37" ID="18037" toTI="17972"/>\r
+ <type Family="ComponentList" Line="33" ID="18048">\r
+ <Component Name="TIM_Period" TI="18056" Line="34" Offs="0"/>\r
+ <Component Name="TIM_Prescaler" TI="18070" Line="35" Offs="2"/>\r
+ <Component Name="TIM_ClockDivision" TI="18084" Line="36" Offs="4"/>\r
+ <Component Name="TIM_CounterMode" TI="18098" Line="37" Offs="6"/>\r
+ </type>\r
+ <type Family="typedef" Name="TIM_TimeBaseInitTypeDef" Line="38" ID="18113" toTI="18048"/>\r
+ <function Name="vTimer2IntHandler" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\timertest.c" Line="127">\r
+ <variable Name="usThisCount" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\timertest.c" Line="129" Addr="0x0" TI="17343"/>\r
+ <variable Name="usDifference" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\timertest.c" Line="129" Addr="0x2" TI="17343"/>\r
+ <variable Name="usLastCount" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\timertest.c" Line="128" Addr="0x20000150" TI="17343"/>\r
+ <variable Name="usSettleCount" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\timertest.c" Line="128" Addr="0x2000014E" TI="17343"/>\r
+ <variable Name="usMaxDifference" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\timertest.c" Line="128" Addr="0x20000152" TI="17343"/>\r
+ </function >\r
+ <function Name="vSetupTimerTest" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\timertest.c" Line="81">\r
+ <variable Name="TIM_TimeBaseStructure" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\timertest.c" Line="83" Addr="0x340FFFE8" TI="18113"/>\r
+ <variable Name="NVIC_InitStructure" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\timertest.c" Line="84" Addr="0x340FFFE4" TI="18037"/>\r
+ </function >\r
+ <variable Name="usMaxJitter" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\timertest.c" Line="76" Addr="0x20000154" TI="17367"/>\r
+ </module>\r
+ <module Name="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" >\r
+ <type Family="Pointer" TI="18355" toTI="0"/>\r
+ <type Family="typedef" Name="__gnuc_va_list" Line="43" ID="18344" toTI="18355"/>\r
+ <type Family="Pointer" TI="18355" toTI="0"/>\r
+ <type Family="Pointer" TI="18355" toTI="0"/>\r
+ <type Family="typedef" Name="__gnuc_va_list" Line="43" ID="18344" toTI="18355"/>\r
+ <type Family="typedef" Name="va_list" Line="110" ID="18361" toTI="18344"/>\r
+ <function Name="printchar" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="32">\r
+ <type Family="Base" Name="char" ID="18437"/>\r
+ <type Family="Pointer" TI="18431" toTI="18437"/>\r
+ <type Family="Pointer" TI="18425" toTI="18431"/>\r
+ <parameter Name="str" TI="18425" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="32" Addr="0x0" Param="Yes"/>\r
+ <type Family="Base" Name="int" ID="18444"/>\r
+ <parameter Name="c" TI="18444" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="32" Addr="0x1" Param="Yes"/>\r
+ </function >\r
+ <function Name="prints" TI="18444" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="46">\r
+ <parameter Name="out" TI="18425" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="46" Addr="0x0" Param="Yes"/>\r
+ <type Family="Pointer" TI="18603" toTI="18609"/>\r
+ <parameter Name="string" TI="18603" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="46" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="width" TI="18444" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="46" Addr="0x2" Param="Yes"/>\r
+ <parameter Name="pad" TI="18444" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="46" Addr="0x3" Param="Yes"/>\r
+ <variable Name="pc" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="47" Addr="0x5" TI="18444"/>\r
+ <variable Name="padchar" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="47" Addr="0xA" TI="18444"/>\r
+ <variable Name="len" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="50" Addr="0x1" TI="18444"/>\r
+ </function >\r
+ <function Name="printi" TI="18444" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="79">\r
+ <parameter Name="out" TI="18425" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="79" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="i" TI="18444" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="79" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="b" TI="18444" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="79" Addr="0x2" Param="Yes"/>\r
+ <parameter Name="sg" TI="18444" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="79" Addr="0x3" Param="Yes"/>\r
+ <parameter Name="width" TI="18444" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="79" Addr="0x34000000" Param="Yes"/>\r
+ <parameter Name="pad" TI="18444" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="79" Addr="0x34000004" Param="Yes"/>\r
+ <parameter Name="letbase" TI="18444" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="79" Addr="0x34000008" Param="Yes"/>\r
+ <type Family="array" ID="18825" toTI="18437"/>\r
+ <variable Name="print_buf" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="80" Addr="0x340FFFDC" TI="18825"/>\r
+ <variable Name="s" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="81" Addr="0x4" TI="18431"/>\r
+ <variable Name="t" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="82" Addr="0x1" TI="18444"/>\r
+ <variable Name="neg" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="82" Addr="0x5" TI="18444"/>\r
+ <variable Name="pc" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="82" Addr="0x5" TI="18444"/>\r
+ <type Family="Base" Name="unsigned int" ID="18844"/>\r
+ <variable Name="u" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="83" Addr="0x2" TI="18844"/>\r
+ </function >\r
+ <function Name="print" TI="18444" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="122">\r
+ <parameter Name="out" TI="18425" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="122" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="format" TI="18603" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="122" Addr="0x1" Param="Yes"/>\r
+ <type Family="Pointer" TI="18355" toTI="0"/>\r
+ <type Family="typedef" Name="__gnuc_va_list" Line="43" ID="18344" toTI="18355"/>\r
+ <type Family="typedef" Name="va_list" Line="110" ID="18361" toTI="18344"/>\r
+ <parameter Name="args" TI="18361" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="122" Addr="0x2" Param="Yes"/>\r
+ <variable Name="width" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="123" Addr="0xE" TI="18444"/>\r
+ <variable Name="pad" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="123" Addr="0xC" TI="18444"/>\r
+ <variable Name="pc" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="124" Addr="0x6" TI="18444"/>\r
+ <type Family="array" ID="19017" toTI="18437"/>\r
+ <variable Name="scr" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="125" Addr="0x340FFFEE" TI="19017"/>\r
+ <variable Name="s" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="146" Addr="0x1" TI="18431"/>\r
+ </function >\r
+ <function Name="snprintf" TI="18444" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="203">\r
+ <parameter Name="buf" TI="18431" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="203" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="count" TI="18844" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="203" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="format" TI="18603" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="203" Addr="0x34000000" Param="Yes"/>\r
+ <type Family="Pointer" TI="18355" toTI="0"/>\r
+ <type Family="typedef" Name="__gnuc_va_list" Line="43" ID="18344" toTI="18355"/>\r
+ <type Family="typedef" Name="va_list" Line="110" ID="18361" toTI="18344"/>\r
+ <variable Name="args" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="204" Addr="0x340FFFF8" TI="18361"/>\r
+ </function >\r
+ <function Name="sprintf" TI="18444" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="194">\r
+ <parameter Name="out" TI="18431" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="194" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="format" TI="18603" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="194" Addr="0x34000000" Param="Yes"/>\r
+ <type Family="Pointer" TI="18355" toTI="0"/>\r
+ <type Family="typedef" Name="__gnuc_va_list" Line="43" ID="18344" toTI="18355"/>\r
+ <type Family="typedef" Name="va_list" Line="110" ID="18361" toTI="18344"/>\r
+ <variable Name="args" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="195" Addr="0x340FFFFC" TI="18361"/>\r
+ </function >\r
+ <function Name="printf" TI="18444" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="186">\r
+ <parameter Name="format" TI="18603" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="186" Addr="0x34000000" Param="Yes"/>\r
+ <type Family="Pointer" TI="18355" toTI="0"/>\r
+ <type Family="typedef" Name="__gnuc_va_list" Line="43" ID="18344" toTI="18355"/>\r
+ <type Family="typedef" Name="va_list" Line="110" ID="18361" toTI="18344"/>\r
+ <variable Name="args" FileName="C:\E\Dev\FreeRTOS\Demo\CORTEX_STM32F103_Primer_GCC\printf-stdarg.c" Line="187" Addr="0x340FFFF8" TI="18361"/>\r
+ </function >\r
+ </module>\r
+ <module Name="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" >\r
+ <type Family="Base" Name="unsigned int" ID="19281"/>\r
+ <type Family="Base" Name="int" ID="19288"/>\r
+ <type Family="Base" Name="long int" ID="19295"/>\r
+ <type Family="Base" Name="long long int" ID="19302"/>\r
+ <type Family="Base" Name="unsigned char" ID="19312"/>\r
+ <type Family="Pointer" TI="19319" toTI="0"/>\r
+ <type Family="Base" Name="long unsigned int" ID="19321"/>\r
+ <type Family="Base" Name="short int" ID="19328"/>\r
+ <type Family="Base" Name="char" ID="19335"/>\r
+ <type Family="Base" Name="short unsigned int" ID="19342"/>\r
+ <type Family="Base" Name="long long unsigned int" ID="19349"/>\r
+ <type Family="Base" Name="signed char" ID="19356"/>\r
+ <type Family="Pointer" TI="19319" toTI="0"/>\r
+ <type Family="typedef" Name="xTaskHandle" Line="68" ID="19368" toTI="19319"/>\r
+ <type Family="Pointer" TI="19319" toTI="0"/>\r
+ <type Family="typedef" Name="xQueueHandle" Line="43" ID="19379" toTI="19319"/>\r
+ <type Family="Pointer" TI="19319" toTI="0"/>\r
+ <type Family="typedef" Name="xQueueHandle" Line="43" ID="19379" toTI="19319"/>\r
+ <type Family="typedef" Name="xSemaphoreHandle" Line="42" ID="19390" toTI="19379"/>\r
+ <function Name="xAreGenericQueueTasksStillRunning" TI="19295" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" Line="513">\r
+ <variable Name="ulLastLoopCounter" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" Line="514" Addr="0x2000015C" TI="19321"/>\r
+ <variable Name="ulLastLoopCounter2" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" Line="514" Addr="0x20000168" TI="19321"/>\r
+ </function >\r
+ <function Name="vStartGenericQueueTasks" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" Line="116">\r
+ <parameter Name="uxPriority" TI="19321" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" Line="116" Addr="0x0" Param="Yes"/>\r
+ <type Family="Pointer" TI="19319" toTI="0"/>\r
+ <type Family="typedef" Name="xQueueHandle" Line="43" ID="19379" toTI="19319"/>\r
+ <variable Name="xQueue" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" Line="117" Addr="0x3" TI="19379"/>\r
+ <type Family="Pointer" TI="19319" toTI="0"/>\r
+ <type Family="typedef" Name="xQueueHandle" Line="43" ID="19379" toTI="19319"/>\r
+ <type Family="typedef" Name="xSemaphoreHandle" Line="42" ID="19390" toTI="19379"/>\r
+ <variable Name="xMutex" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" Line="118" Addr="0x6" TI="19390"/>\r
+ </function >\r
+ <function Name="prvMediumPriorityMutexTask" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" Line="468">\r
+ <type Family="Pointer" TI="19319" toTI="0"/>\r
+ <parameter Name="pvParameters" TI="19319" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" Line="468" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="prvHighPriorityMutexTask" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" Line="484">\r
+ <type Family="Pointer" TI="19319" toTI="0"/>\r
+ <parameter Name="pvParameters" TI="19319" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" Line="484" Addr="0x0" Param="Yes"/>\r
+ <type Family="Pointer" TI="19319" toTI="0"/>\r
+ <type Family="typedef" Name="xQueueHandle" Line="43" ID="19379" toTI="19319"/>\r
+ <type Family="typedef" Name="xSemaphoreHandle" Line="42" ID="19390" toTI="19379"/>\r
+ </function >\r
+ <function Name="prvLowPriorityMutexTask" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" Line="370">\r
+ <type Family="Pointer" TI="19319" toTI="0"/>\r
+ <parameter Name="pvParameters" TI="19319" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" Line="370" Addr="0x0" Param="Yes"/>\r
+ <type Family="Pointer" TI="19319" toTI="0"/>\r
+ <type Family="typedef" Name="xQueueHandle" Line="43" ID="19379" toTI="19319"/>\r
+ <type Family="typedef" Name="xSemaphoreHandle" Line="42" ID="19390" toTI="19379"/>\r
+ </function >\r
+ <function Name="prvSendFrontAndBackTest" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" Line="142">\r
+ <type Family="Pointer" TI="19319" toTI="0"/>\r
+ <parameter Name="pvParameters" TI="19319" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" Line="142" Addr="0x0" Param="Yes"/>\r
+ <variable Name="ulData" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" Line="143" Addr="0x340FFFFC" TI="19321"/>\r
+ <variable Name="ulData2" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" Line="143" Addr="0x340FFFF8" TI="19321"/>\r
+ <type Family="Pointer" TI="19319" toTI="0"/>\r
+ <type Family="typedef" Name="xQueueHandle" Line="43" ID="19379" toTI="19319"/>\r
+ </function >\r
+ <variable Name="xErrorDetected" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" Line="99" Addr="0x20000160" TI="19295"/>\r
+ <variable Name="ulLoopCounter" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" Line="103" Addr="0x20000158" TI="19363"/>\r
+ <variable Name="ulLoopCounter2" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" Line="104" Addr="0x20000164" TI="19363"/>\r
+ <variable Name="ulGuardedVariable" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" Line="107" Addr="0x20000174" TI="19363"/>\r
+ <type Family="Pointer" TI="19319" toTI="0"/>\r
+ <type Family="typedef" Name="xTaskHandle" Line="68" ID="19368" toTI="19319"/>\r
+ <variable Name="xHighPriorityMutexTask" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" Line="111" Addr="0x20000170" TI="19368"/>\r
+ <type Family="Pointer" TI="19319" toTI="0"/>\r
+ <type Family="typedef" Name="xTaskHandle" Line="68" ID="19368" toTI="19319"/>\r
+ <variable Name="xMediumPriorityMutexTask" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\GenQTest.c" Line="111" Addr="0x2000016C" TI="19368"/>\r
+ </module>\r
+ <module Name="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" >\r
+ <type Family="Base" Name="unsigned int" ID="19897"/>\r
+ <type Family="Base" Name="int" ID="19904"/>\r
+ <type Family="Base" Name="long int" ID="19911"/>\r
+ <type Family="Base" Name="long long int" ID="19918"/>\r
+ <type Family="Base" Name="unsigned char" ID="19928"/>\r
+ <type Family="Pointer" TI="19935" toTI="0"/>\r
+ <type Family="Base" Name="long unsigned int" ID="19937"/>\r
+ <type Family="Base" Name="short int" ID="19944"/>\r
+ <type Family="Base" Name="char" ID="19951"/>\r
+ <type Family="Base" Name="short unsigned int" ID="19958"/>\r
+ <type Family="Base" Name="long long unsigned int" ID="19965"/>\r
+ <type Family="Base" Name="signed char" ID="19972"/>\r
+ <type Family="typedef" Name="portTickType" Line="74" ID="19989" toTI="19937"/>\r
+ <type Family="Pointer" TI="19935" toTI="0"/>\r
+ <type Family="typedef" Name="xQueueHandle" Line="43" ID="20000" toTI="19935"/>\r
+ <type Family="ComponentList" Name="BLOCKING_QUEUE_PARAMETERS" Line="85" ID="20011">\r
+ <type Family="Pointer" TI="19935" toTI="0"/>\r
+ <type Family="typedef" Name="xQueueHandle" Line="43" ID="20000" toTI="19935"/>\r
+ <Component Name="xQueue" TI="20023" Line="86" Offs="0"/>\r
+ <Component Name="xBlockTime" TI="20037" Line="87" Offs="4"/>\r
+ <type Family="Pointer" TI="20066" toTI="19979"/>\r
+ <Component Name="psCheckVariable" TI="20051" Line="88" Offs="8"/>\r
+ </type>\r
+ <type Family="typedef" Name="xBlockingQueueParameters" Line="89" ID="20072" toTI="20011"/>\r
+ <function Name="xAreBlockingQueuesStillRunning" TI="19911" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="261">\r
+ <variable Name="xReturn" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="264" Addr="0x0" TI="19911"/>\r
+ <variable Name="xTasks" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="264" Addr="0xC" TI="19911"/>\r
+ <type Family="array" ID="20539" toTI="19944"/>\r
+ <variable Name="sLastBlockingConsumerCount" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="262" Addr="0x2000017E" TI="20539"/>\r
+ <variable Name="sLastBlockingProducerCount" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="263" Addr="0x2000018A" TI="20539"/>\r
+ </function >\r
+ <function Name="vStartBlockingQueueTasks" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="110">\r
+ <parameter Name="uxPriority" TI="19937" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="110" Addr="0x0" Param="Yes"/>\r
+ <type Family="Pointer" TI="20353" toTI="20072"/>\r
+ <variable Name="pxQueueParameters1" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="111" Addr="0x3" TI="20353"/>\r
+ <variable Name="pxQueueParameters2" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="111" Addr="0x3" TI="20353"/>\r
+ <variable Name="pxQueueParameters3" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="112" Addr="0x3" TI="20353"/>\r
+ <variable Name="pxQueueParameters4" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="112" Addr="0x3" TI="20353"/>\r
+ <variable Name="pxQueueParameters5" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="113" Addr="0x3" TI="20353"/>\r
+ <variable Name="pxQueueParameters6" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="113" Addr="0x3" TI="20353"/>\r
+ </function >\r
+ <function Name="vBlockingQueueProducer" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="192">\r
+ <type Family="Pointer" TI="19935" toTI="0"/>\r
+ <parameter Name="pvParameters" TI="19935" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="192" Addr="0x0" Param="Yes"/>\r
+ <variable Name="usValue" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="193" Addr="0x340FFFFA" TI="19958"/>\r
+ <variable Name="pxQueueParameters" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="194" Addr="0x4" TI="20353"/>\r
+ <variable Name="sErrorEverOccurred" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="195" Addr="0x5" TI="19944"/>\r
+ </function >\r
+ <function Name="vBlockingQueueConsumer" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="223">\r
+ <type Family="Pointer" TI="19935" toTI="0"/>\r
+ <parameter Name="pvParameters" TI="19935" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="223" Addr="0x0" Param="Yes"/>\r
+ <variable Name="usData" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="224" Addr="0x340FFFFE" TI="19958"/>\r
+ <variable Name="usExpectedValue" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="224" Addr="0x5" TI="19958"/>\r
+ <variable Name="pxQueueParameters" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="225" Addr="0x4" TI="20353"/>\r
+ <variable Name="sErrorEverOccurred" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="226" Addr="0x6" TI="19944"/>\r
+ </function >\r
+ <variable Name="sBlockingConsumerCount" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="101" Addr="0x20000178" TI="20572"/>\r
+ <variable Name="sBlockingProducerCount" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\BlockQ.c" Line="105" Addr="0x20000184" TI="20594"/>\r
+ </module>\r
+ <module Name="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" >\r
+ <type Family="Base" Name="int" ID="20629"/>\r
+ <type Family="Base" Name="unsigned int" ID="20636"/>\r
+ <type Family="Pointer" TI="20643" toTI="0"/>\r
+ <type Family="Base" Name="long int" ID="20645"/>\r
+ <type Family="Base" Name="short int" ID="20652"/>\r
+ <type Family="Base" Name="signed char" ID="20659"/>\r
+ <type Family="Base" Name="long unsigned int" ID="20666"/>\r
+ <type Family="Base" Name="short unsigned int" ID="20673"/>\r
+ <type Family="Base" Name="unsigned char" ID="20680"/>\r
+ <type Family="typedef" Name="portTickType" Line="74" ID="20695" toTI="20666"/>\r
+ <type Family="Pointer" TI="20643" toTI="0"/>\r
+ <type Family="typedef" Name="xTaskHandle" Line="68" ID="20706" toTI="20643"/>\r
+ <type Family="Pointer" TI="20643" toTI="0"/>\r
+ <type Family="typedef" Name="xQueueHandle" Line="43" ID="20717" toTI="20643"/>\r
+ <function Name="xAreBlockTimeTestTasksStillRunning" TI="20645" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" Line="449">\r
+ <variable Name="xReturn" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" Line="451" Addr="0x0" TI="20645"/>\r
+ <variable Name="xLastPrimaryCycleCount" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" Line="450" Addr="0x20000194" TI="20645"/>\r
+ <variable Name="xLastSecondaryCycleCount" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" Line="450" Addr="0x2000019C" TI="20645"/>\r
+ </function >\r
+ <function Name="vCreateBlockTimeTasks" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" Line="86">\r
+ </function >\r
+ <function Name="vSecondaryBlockTimeTestTask" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" Line="353">\r
+ <type Family="Pointer" TI="20643" toTI="0"/>\r
+ <parameter Name="pvParameters" TI="20643" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" Line="353" Addr="0x0" Param="Yes"/>\r
+ <variable Name="xTimeWhenBlocking" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" Line="354" Addr="0x6" TI="20695"/>\r
+ <variable Name="xBlockedTime" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" Line="354" Addr="0x4" TI="20695"/>\r
+ <variable Name="xData" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" Line="355" Addr="0x40FFFFC" TI="20645"/>\r
+ </function >\r
+ <function Name="vPrimaryBlockTimeTestTask" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" Line="97">\r
+ <type Family="Pointer" TI="20643" toTI="0"/>\r
+ <parameter Name="pvParameters" TI="20643" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" Line="97" Addr="0x0" Param="Yes"/>\r
+ <variable Name="xItem" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" Line="98" Addr="0x340FFFFC" TI="20645"/>\r
+ <variable Name="xData" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" Line="98" Addr="0x340FFFE8" TI="20645"/>\r
+ <variable Name="xTimeWhenBlocking" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" Line="99" Addr="0x4" TI="20695"/>\r
+ <variable Name="xTimeToBlock" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" Line="100" Addr="0x5" TI="20695"/>\r
+ <variable Name="xBlockedTime" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" Line="100" Addr="0x4" TI="20695"/>\r
+ </function >\r
+ <type Family="Pointer" TI="20643" toTI="0"/>\r
+ <type Family="typedef" Name="xQueueHandle" Line="43" ID="20717" toTI="20643"/>\r
+ <variable Name="xTestQueue" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" Line="65" Addr="0x200001A4" TI="20717"/>\r
+ <type Family="Pointer" TI="20643" toTI="0"/>\r
+ <type Family="typedef" Name="xTaskHandle" Line="68" ID="20706" toTI="20643"/>\r
+ <variable Name="xSecondary" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" Line="69" Addr="0x200001A8" TI="20706"/>\r
+ <variable Name="xPrimaryCycles" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" Line="72" Addr="0x20000190" TI="20645"/>\r
+ <variable Name="xSecondaryCycles" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" Line="72" Addr="0x20000198" TI="20645"/>\r
+ <variable Name="xErrorOccurred" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" Line="73" Addr="0x200001A0" TI="20645"/>\r
+ <variable Name="xRunIndicator" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\blocktim.c" Line="77" Addr="0x200001AC" TI="20687"/>\r
+ </module>\r
+ <module Name="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" >\r
+ <type Family="Base" Name="unsigned int" ID="21162"/>\r
+ <type Family="Base" Name="int" ID="21169"/>\r
+ <type Family="Base" Name="long int" ID="21176"/>\r
+ <type Family="Base" Name="long long int" ID="21183"/>\r
+ <type Family="Base" Name="unsigned char" ID="21193"/>\r
+ <type Family="Pointer" TI="21200" toTI="0"/>\r
+ <type Family="Base" Name="long unsigned int" ID="21202"/>\r
+ <type Family="Base" Name="short int" ID="21209"/>\r
+ <type Family="Base" Name="char" ID="21216"/>\r
+ <type Family="Base" Name="short unsigned int" ID="21223"/>\r
+ <type Family="Base" Name="long long unsigned int" ID="21230"/>\r
+ <type Family="Base" Name="signed char" ID="21237"/>\r
+ <type Family="Pointer" TI="21200" toTI="0"/>\r
+ <type Family="typedef" Name="xTaskHandle" Line="68" ID="21249" toTI="21200"/>\r
+ <type Family="Pointer" TI="21200" toTI="0"/>\r
+ <type Family="typedef" Name="xQueueHandle" Line="43" ID="21260" toTI="21200"/>\r
+ <function Name="xAreQueuePeekTasksStillRunning" TI="21176" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" Line="404">\r
+ <variable Name="ulLastLoopCounter" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" Line="405" Addr="0x200001B4" TI="21202"/>\r
+ </function >\r
+ <function Name="vStartQueuePeekTasks" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" Line="91">\r
+ <type Family="Pointer" TI="21200" toTI="0"/>\r
+ <type Family="typedef" Name="xQueueHandle" Line="43" ID="21260" toTI="21200"/>\r
+ <variable Name="xQueue" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" Line="92" Addr="0x4" TI="21260"/>\r
+ </function >\r
+ <function Name="prvMediumPriorityPeekTask" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" Line="272">\r
+ <type Family="Pointer" TI="21200" toTI="0"/>\r
+ <parameter Name="pvParameters" TI="21200" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" Line="272" Addr="0x0" Param="Yes"/>\r
+ <type Family="Pointer" TI="21200" toTI="0"/>\r
+ <type Family="typedef" Name="xQueueHandle" Line="43" ID="21260" toTI="21200"/>\r
+ <variable Name="ulValue" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" Line="274" Addr="0x340FFFFC" TI="21202"/>\r
+ </function >\r
+ <function Name="prvHighPriorityPeekTask" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" Line="217">\r
+ <type Family="Pointer" TI="21200" toTI="0"/>\r
+ <parameter Name="pvParameters" TI="21200" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" Line="217" Addr="0x0" Param="Yes"/>\r
+ <type Family="Pointer" TI="21200" toTI="0"/>\r
+ <type Family="typedef" Name="xQueueHandle" Line="43" ID="21260" toTI="21200"/>\r
+ <variable Name="ulValue" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" Line="219" Addr="0x340FFFFC" TI="21202"/>\r
+ </function >\r
+ <function Name="prvHighestPriorityPeekTask" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" Line="108">\r
+ <type Family="Pointer" TI="21200" toTI="0"/>\r
+ <parameter Name="pvParameters" TI="21200" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" Line="108" Addr="0x0" Param="Yes"/>\r
+ <type Family="Pointer" TI="21200" toTI="0"/>\r
+ <type Family="typedef" Name="xQueueHandle" Line="43" ID="21260" toTI="21200"/>\r
+ <variable Name="ulValue" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" Line="110" Addr="0x340FFFFC" TI="21202"/>\r
+ </function >\r
+ <function Name="prvLowPriorityPeekTask" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" Line="313">\r
+ <type Family="Pointer" TI="21200" toTI="0"/>\r
+ <parameter Name="pvParameters" TI="21200" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" Line="313" Addr="0x0" Param="Yes"/>\r
+ <type Family="Pointer" TI="21200" toTI="0"/>\r
+ <type Family="typedef" Name="xQueueHandle" Line="43" ID="21260" toTI="21200"/>\r
+ <variable Name="ulValue" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" Line="315" Addr="0x40FFFFC" TI="21202"/>\r
+ </function >\r
+ <variable Name="xErrorDetected" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" Line="80" Addr="0x200001B8" TI="21176"/>\r
+ <variable Name="ulLoopCounter" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" Line="84" Addr="0x200001B0" TI="21244"/>\r
+ <type Family="Pointer" TI="21200" toTI="0"/>\r
+ <type Family="typedef" Name="xTaskHandle" Line="68" ID="21249" toTI="21200"/>\r
+ <variable Name="xMediumPriorityTask" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" Line="87" Addr="0x200047CC" TI="21249"/>\r
+ <type Family="Pointer" TI="21200" toTI="0"/>\r
+ <type Family="typedef" Name="xTaskHandle" Line="68" ID="21249" toTI="21200"/>\r
+ <variable Name="xHighPriorityTask" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" Line="87" Addr="0x200047C8" TI="21249"/>\r
+ <type Family="Pointer" TI="21200" toTI="0"/>\r
+ <type Family="typedef" Name="xTaskHandle" Line="68" ID="21249" toTI="21200"/>\r
+ <variable Name="xHighestPriorityTask" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\QPeek.c" Line="87" Addr="0x200047D0" TI="21249"/>\r
+ </module>\r
+ <module Name="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\PollQ.c" >\r
+ <type Family="Base" Name="unsigned int" ID="21744"/>\r
+ <type Family="Base" Name="int" ID="21751"/>\r
+ <type Family="Base" Name="long int" ID="21758"/>\r
+ <type Family="Base" Name="long long int" ID="21765"/>\r
+ <type Family="Base" Name="unsigned char" ID="21775"/>\r
+ <type Family="Pointer" TI="21782" toTI="0"/>\r
+ <type Family="Base" Name="long unsigned int" ID="21784"/>\r
+ <type Family="Base" Name="short int" ID="21791"/>\r
+ <type Family="Base" Name="char" ID="21798"/>\r
+ <type Family="Base" Name="short unsigned int" ID="21805"/>\r
+ <type Family="Base" Name="long long unsigned int" ID="21812"/>\r
+ <type Family="Base" Name="signed char" ID="21819"/>\r
+ <type Family="Pointer" TI="21782" toTI="0"/>\r
+ <type Family="typedef" Name="xQueueHandle" Line="43" ID="21831" toTI="21782"/>\r
+ <function Name="xArePollingQueuesStillRunning" TI="21758" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\PollQ.c" Line="197">\r
+ <variable Name="xReturn" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\PollQ.c" Line="198" Addr="0x0" TI="21758"/>\r
+ </function >\r
+ <function Name="vStartPolledQueueTasks" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\PollQ.c" Line="98">\r
+ <parameter Name="uxPriority" TI="21784" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\PollQ.c" Line="98" Addr="0x0" Param="Yes"/>\r
+ <type Family="Pointer" TI="21782" toTI="0"/>\r
+ <type Family="typedef" Name="xQueueHandle" Line="43" ID="21831" toTI="21782"/>\r
+ <variable Name="xPolledQueue" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\PollQ.c" Line="99" Addr="0x200001C4" TI="21831"/>\r
+ </function >\r
+ <function Name="vPolledQueueProducer" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\PollQ.c" Line="111">\r
+ <type Family="Pointer" TI="21782" toTI="0"/>\r
+ <parameter Name="pvParameters" TI="21782" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\PollQ.c" Line="111" Addr="0x0" Param="Yes"/>\r
+ <variable Name="usValue" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\PollQ.c" Line="112" Addr="0x340FFFFE" TI="21805"/>\r
+ <variable Name="xError" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\PollQ.c" Line="113" Addr="0x6" TI="21758"/>\r
+ <variable Name="xLoop" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\PollQ.c" Line="113" Addr="0x4" TI="21758"/>\r
+ </function >\r
+ <function Name="vPolledQueueConsumer" TI="0" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\PollQ.c" Line="150">\r
+ <type Family="Pointer" TI="21782" toTI="0"/>\r
+ <parameter Name="pvParameters" TI="21782" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\PollQ.c" Line="150" Addr="0x0" Param="Yes"/>\r
+ <variable Name="usData" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\PollQ.c" Line="151" Addr="0x340FFFFA" TI="21805"/>\r
+ <variable Name="usExpectedValue" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\PollQ.c" Line="151" Addr="0x6" TI="21805"/>\r
+ <variable Name="xError" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\PollQ.c" Line="152" Addr="0x7" TI="21758"/>\r
+ </function >\r
+ <variable Name="xPollingConsumerCount" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\PollQ.c" Line="93" Addr="0x200001BC" TI="21826"/>\r
+ <variable Name="xPollingProducerCount" FileName="C:\E\Dev\FreeRTOS\Demo\Common\Minimal\PollQ.c" Line="93" Addr="0x200001C0" TI="21826"/>\r
+ </module>\r
+ <module Name="C:\E\Dev\FreeRTOS\Source\tasks.c" >\r
+ <type Family="Base" Name="unsigned int" ID="22167"/>\r
+ <type Family="Base" Name="int" ID="22174"/>\r
+ <type Family="Base" Name="long int" ID="22181"/>\r
+ <type Family="Base" Name="long long int" ID="22188"/>\r
+ <type Family="Base" Name="unsigned char" ID="22198"/>\r
+ <type Family="Pointer" TI="22205" toTI="0"/>\r
+ <type Family="Base" Name="long unsigned int" ID="22207"/>\r
+ <type Family="Base" Name="short int" ID="22214"/>\r
+ <type Family="Base" Name="char" ID="22221"/>\r
+ <type Family="Base" Name="short unsigned int" ID="22228"/>\r
+ <type Family="Base" Name="long long unsigned int" ID="22235"/>\r
+ <type Family="Base" Name="signed char" ID="22242"/>\r
+ <type Family="Pointer" TI="22260" toTI="22266"/>\r
+ <type Family="typedef" Name="pdTASK_CODE" Line="41" ID="22249" toTI="22260"/>\r
+ <type Family="Pointer" TI="22260" toTI="22266"/>\r
+ <type Family="typedef" Name="portTickType" Line="74" ID="22288" toTI="22207"/>\r
+ <type Family="ComponentList" Name="xLIST_ITEM" Line="82" ID="22299">\r
+ <Component Name="xItemValue" TI="22311" Line="83" Offs="0"/>\r
+ <type Family="Pointer" TI="22382" toTI="22388"/>\r
+ <Component Name="pxNext" TI="22325" Line="84" Offs="4"/>\r
+ <Component Name="pxPrevious" TI="22339" Line="85" Offs="8"/>\r
+ <type Family="Pointer" TI="22205" toTI="0"/>\r
+ <Component Name="pvOwner" TI="22353" Line="86" Offs="12"/>\r
+ <type Family="Pointer" TI="22205" toTI="0"/>\r
+ <Component Name="pvContainer" TI="22367" Line="87" Offs="16"/>\r
+ </type>\r
+ <type Family="typedef" Name="xListItem" Line="89" ID="22397" toTI="22299"/>\r
+ <type Family="ComponentList" Name="xMINI_LIST_ITEM" Line="92" ID="22408">\r
+ <Component Name="xItemValue" TI="22420" Line="93" Offs="0"/>\r
+ <Component Name="pxNext" TI="22434" Line="94" Offs="4"/>\r
+ <Component Name="pxPrevious" TI="22448" Line="95" Offs="8"/>\r
+ </type>\r
+ <type Family="typedef" Name="xMiniListItem" Line="97" ID="22463" toTI="22408"/>\r
+ <type Family="ComponentList" Name="xLIST" Line="103" ID="22474">\r
+ <Component Name="uxNumberOfItems" TI="22486" Line="104" Offs="0"/>\r
+ <type Family="Pointer" TI="22529" toTI="22535"/>\r
+ <Component Name="pxIndex" TI="22500" Line="105" Offs="4"/>\r
+ <Component Name="xListEnd" TI="22514" Line="106" Offs="8"/>\r
+ </type>\r
+ <type Family="typedef" Name="xList" Line="107" ID="22545" toTI="22474"/>\r
+ <type Family="Pointer" TI="22205" toTI="0"/>\r
+ <type Family="typedef" Name="xTaskHandle" Line="68" ID="22556" toTI="22205"/>\r
+ <type Family="ComponentList" Name="xTIME_OUT" Line="74" ID="22567">\r
+ <Component Name="xOverflowCount" TI="22579" Line="75" Offs="0"/>\r
+ <Component Name="xTimeOnEntering" TI="22593" Line="76" Offs="4"/>\r
+ </type>\r
+ <type Family="typedef" Name="xTimeOutType" Line="77" ID="22608" toTI="22567"/>\r
+ <type Family="ComponentList" Name="tskTaskControlBlock" Line="255" ID="22619">\r
+ <type Family="Pointer" TI="22737" toTI="22283"/>\r
+ <Component Name="pxTopOfStack" TI="22631" Line="256" Offs="0"/>\r
+ <Component Name="xGenericListItem" TI="22646" Line="257" Offs="4"/>\r
+ <Component Name="xEventListItem" TI="22661" Line="258" Offs="24"/>\r
+ <Component Name="uxPriority" TI="22676" Line="259" Offs="44"/>\r
+ <type Family="Pointer" TI="22743" toTI="22207"/>\r
+ <Component Name="pxStack" TI="22691" Line="260" Offs="48"/>\r
+ <type Family="array" ID="22749" toTI="22242"/>\r
+ <Component Name="pcTaskName" TI="22706" Line="261" Offs="52"/>\r
+ <Component Name="uxBasePriority" TI="22721" Line="268" Offs="68"/>\r
+ </type>\r
+ <type Family="typedef" Name="tskTCB" Line="271" ID="22765" toTI="22619"/>\r
+ <function Name="prvIsTaskSuspended" TI="22181" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1004">\r
+ <type Family="Pointer" TI="22842" toTI="22848"/>\r
+ <parameter Name="pxTCB" TI="22837" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1004" Addr="0x0" Param="Yes"/>\r
+ <variable Name="xReturn" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1005" Addr="0x0" TI="22181"/>\r
+ </function >\r
+ <function Name="vTaskSwitchContext" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1476">\r
+ <type Family="Pointer" TI="22909" toTI="22545"/>\r
+ <variable Name="pxConstList" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1493" Addr="0x2" TI="22904"/>\r
+ </function >\r
+ <function Name="vTaskSetTimeOutState" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1616">\r
+ <type Family="Pointer" TI="22959" toTI="22608"/>\r
+ <parameter Name="pxTimeOut" TI="22954" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1616" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="xTaskCheckForTimeOut" TI="22181" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1623">\r
+ <parameter Name="pxTimeOut" TI="22954" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1623" Addr="0x0" Param="Yes"/>\r
+ <type Family="Pointer" TI="23049" toTI="22288"/>\r
+ <parameter Name="pxTicksToWait" TI="23044" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1623" Addr="0x1" Param="Yes"/>\r
+ <variable Name="xReturn" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1624" Addr="0x0" TI="22181"/>\r
+ </function >\r
+ <function Name="vTaskMissedYield" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1662">\r
+ </function >\r
+ <function Name="vTaskPriorityDisinherit" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="2011">\r
+ <type Family="Pointer" TI="22205" toTI="0"/>\r
+ <type Family="typedef" Name="xTaskHandle" Line="68" ID="22556" toTI="22205"/>\r
+ <type Family="Pointer" TI="23135" toTI="22556"/>\r
+ <parameter Name="pxMutexHolder" TI="23130" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="2011" Addr="0x0" Param="Yes"/>\r
+ <type Family="Pointer" TI="23146" toTI="22765"/>\r
+ </function >\r
+ <type Family="Pointer" TI="22205" toTI="0"/>\r
+ <type Family="typedef" Name="xTaskHandle" Line="68" ID="22556" toTI="22205"/>\r
+ <type Family="Pointer" TI="23135" toTI="22556"/>\r
+ <type Family="Pointer" TI="22205" toTI="0"/>\r
+ <type Family="typedef" Name="xTaskHandle" Line="68" ID="22556" toTI="22205"/>\r
+ <type Family="Pointer" TI="23135" toTI="22556"/>\r
+ <function Name="vTaskPriorityInherit" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1980">\r
+ <type Family="Pointer" TI="22205" toTI="0"/>\r
+ <type Family="typedef" Name="xTaskHandle" Line="68" ID="22556" toTI="22205"/>\r
+ <type Family="Pointer" TI="23135" toTI="22556"/>\r
+ <parameter Name="pxMutexHolder" TI="23130" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1980" Addr="0x0" Param="Yes"/>\r
+ <variable Name="pxTCB" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1981" Addr="0x4" TI="23141"/>\r
+ </function >\r
+ <function Name="xTaskRemoveFromEventList" TI="22181" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1569">\r
+ <type Family="Pointer" TI="23291" toTI="23297"/>\r
+ <parameter Name="pxEventList" TI="23286" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1569" Addr="0x0" Param="Yes"/>\r
+ <variable Name="pxUnblockedTCB" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1570" Addr="0x5" TI="23146"/>\r
+ </function >\r
+ <function Name="xTaskResumeFromISR" TI="22181" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1074">\r
+ <type Family="Pointer" TI="22205" toTI="0"/>\r
+ <type Family="typedef" Name="xTaskHandle" Line="68" ID="22556" toTI="22205"/>\r
+ <parameter Name="pxTaskToResume" TI="22556" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1074" Addr="0x0" Param="Yes"/>\r
+ <variable Name="xYieldRequired" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1075" Addr="0x4" TI="22181"/>\r
+ <variable Name="pxTCB" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1076" Addr="0x4" TI="23146"/>\r
+ </function >\r
+ <type Family="Pointer" TI="22205" toTI="0"/>\r
+ <type Family="typedef" Name="xTaskHandle" Line="68" ID="22556" toTI="22205"/>\r
+ <function Name="xTaskGetCurrentTaskHandle" TI="22556" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1934">\r
+ <type Family="Pointer" TI="22205" toTI="0"/>\r
+ <type Family="typedef" Name="xTaskHandle" Line="68" ID="22556" toTI="22205"/>\r
+ <variable Name="xReturn" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1935" Addr="0x4" TI="22556"/>\r
+ </function >\r
+ <function Name="uxTaskGetNumberOfTasks" TI="22207" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1260">\r
+ <variable Name="uxNumberOfTasks" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1261" Addr="0x4" TI="22207"/>\r
+ </function >\r
+ <function Name="xTaskGetTickCount" TI="22288" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1245">\r
+ <variable Name="xTicks" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1246" Addr="0x4" TI="22288"/>\r
+ </function >\r
+ <function Name="vTaskSuspendAll" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1159">\r
+ </function >\r
+ <function Name="uxTaskPriorityGet" TI="22207" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="843">\r
+ <type Family="Pointer" TI="22205" toTI="0"/>\r
+ <type Family="typedef" Name="xTaskHandle" Line="68" ID="22556" toTI="22205"/>\r
+ <parameter Name="pxTask" TI="22556" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="843" Addr="0x0" Param="Yes"/>\r
+ <variable Name="pxTCB" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="844" Addr="0x0" TI="23146"/>\r
+ <variable Name="uxReturn" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="845" Addr="0x4" TI="22207"/>\r
+ </function >\r
+ <function Name="vTaskPlaceOnEventList" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1499">\r
+ <parameter Name="pxEventList" TI="23286" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1499" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="xTicksToWait" TI="22288" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1499" Addr="0x1" Param="Yes"/>\r
+ <variable Name="xTimeToWake" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1500" Addr="0x3" TI="22288"/>\r
+ </function >\r
+ <function Name="vTaskIncrementTick" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1369">\r
+ <variable Name="pxTemp" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1378" Addr="0x2" TI="22909"/>\r
+ <variable Name="pxTCB" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1390" Addr="0x4" TI="23146"/>\r
+ </function >\r
+ <function Name="xTaskResumeAll" TI="22181" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1167">\r
+ <variable Name="pxTCB" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1168" Addr="0x5" TI="23146"/>\r
+ <variable Name="xAlreadyYielded" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1169" Addr="0x4" TI="22181"/>\r
+ <variable Name="xYieldRequired" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1184" Addr="0x6" TI="22181"/>\r
+ </function >\r
+ <function Name="vTaskResume" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1034">\r
+ <type Family="Pointer" TI="22205" toTI="0"/>\r
+ <type Family="typedef" Name="xTaskHandle" Line="68" ID="22556" toTI="22205"/>\r
+ <parameter Name="pxTaskToResume" TI="22556" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1034" Addr="0x0" Param="Yes"/>\r
+ <variable Name="pxTCB" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1035" Addr="0x5" TI="23146"/>\r
+ </function >\r
+ <function Name="vTaskSuspend" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="963">\r
+ <type Family="Pointer" TI="22205" toTI="0"/>\r
+ <type Family="typedef" Name="xTaskHandle" Line="68" ID="22556" toTI="22205"/>\r
+ <parameter Name="pxTaskToSuspend" TI="22556" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="963" Addr="0x0" Param="Yes"/>\r
+ <variable Name="pxTCB" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="964" Addr="0x4" TI="23146"/>\r
+ </function >\r
+ <function Name="vTaskPrioritySet" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="865">\r
+ <type Family="Pointer" TI="22205" toTI="0"/>\r
+ <type Family="typedef" Name="xTaskHandle" Line="68" ID="22556" toTI="22205"/>\r
+ <parameter Name="pxTask" TI="22556" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="865" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="uxNewPriority" TI="22207" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="865" Addr="0x1" Param="Yes"/>\r
+ <variable Name="pxTCB" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="866" Addr="0x4" TI="23146"/>\r
+ <variable Name="uxCurrentPriority" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="867" Addr="0x1" TI="22207"/>\r
+ <variable Name="xYieldRequired" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="867" Addr="0x7" TI="22207"/>\r
+ </function >\r
+ <function Name="vTaskDelay" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="784">\r
+ <parameter Name="xTicksToDelay" TI="22288" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="784" Addr="0x0" Param="Yes"/>\r
+ <variable Name="xTimeToWake" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="785" Addr="0x4" TI="22288"/>\r
+ <variable Name="xAlreadyYielded" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="786" Addr="0x0" TI="22181"/>\r
+ </function >\r
+ <function Name="vTaskDelayUntil" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="709">\r
+ <parameter Name="pxPreviousWakeTime" TI="23044" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="709" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="xTimeIncrement" TI="22288" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="709" Addr="0x1" Param="Yes"/>\r
+ <variable Name="xTimeToWake" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="710" Addr="0x5" TI="22288"/>\r
+ <variable Name="xAlreadyYielded" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="711" Addr="0x0" TI="22181"/>\r
+ </function >\r
+ <function Name="vTaskDelete" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="649">\r
+ <type Family="Pointer" TI="22205" toTI="0"/>\r
+ <type Family="typedef" Name="xTaskHandle" Line="68" ID="22556" toTI="22205"/>\r
+ <parameter Name="pxTaskToDelete" TI="22556" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="649" Addr="0x0" Param="Yes"/>\r
+ <variable Name="pxTCB" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="650" Addr="0x4" TI="23146"/>\r
+ </function >\r
+ <function Name="vTaskEndScheduler" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1148">\r
+ </function >\r
+ <function Name="prvIdleTask" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1678">\r
+ <type Family="Pointer" TI="22205" toTI="0"/>\r
+ <parameter Name="pvParameters" TI="22205" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1678" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="pxTCB" TI="23146" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1678" Addr="0x4" Param="Yes"/>\r
+ </function >\r
+ <type Family="Pointer" TI="24618" toTI="24624"/>\r
+ <function Name="xTaskCreate" TI="22181" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="528">\r
+ <type Family="Pointer" TI="22260" toTI="22266"/>\r
+ <type Family="typedef" Name="pdTASK_CODE" Line="41" ID="22249" toTI="22260"/>\r
+ <parameter Name="pvTaskCode" TI="22249" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="528" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="pcName" TI="24613" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="528" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="usStackDepth" TI="22228" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="528" Addr="0x2" Param="Yes"/>\r
+ <type Family="Pointer" TI="22205" toTI="0"/>\r
+ <parameter Name="pvParameters" TI="22205" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="528" Addr="0x3" Param="Yes"/>\r
+ <parameter Name="uxPriority" TI="22207" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="528" Addr="0x34000000" Param="Yes"/>\r
+ <type Family="Pointer" TI="22205" toTI="0"/>\r
+ <type Family="typedef" Name="xTaskHandle" Line="68" ID="22556" toTI="22205"/>\r
+ <type Family="Pointer" TI="23135" toTI="22556"/>\r
+ <parameter Name="pxCreatedTask" TI="23135" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="528" Addr="0x34000004" Param="Yes"/>\r
+ <variable Name="xReturn" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="529" Addr="0x0" TI="22181"/>\r
+ <variable Name="pxNewTCB" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="530" Addr="0x7" TI="23146"/>\r
+ <variable Name="pxTopOfStack" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="541" Addr="0x0" TI="22743"/>\r
+ </function >\r
+ <function Name="vTaskStartScheduler" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1111">\r
+ <variable Name="xReturn" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="1112" Addr="0x0" TI="22181"/>\r
+ </function >\r
+ <type Family="array" ID="24989" toTI="22545"/>\r
+ <variable Name="pxReadyTasksLists" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="279" Addr="0x200001F8" TI="24989"/>\r
+ <variable Name="xDelayedTaskList1" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="280" Addr="0x20000298" TI="22545"/>\r
+ <variable Name="xDelayedTaskList2" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="281" Addr="0x200002AC" TI="22545"/>\r
+ <variable Name="pxDelayedTaskList" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="282" Addr="0x20000274" TI="25077"/>\r
+ <variable Name="pxOverflowDelayedTaskList" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="283" Addr="0x20000270" TI="25077"/>\r
+ <variable Name="xPendingReadyList" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="284" Addr="0x200001DC" TI="22545"/>\r
+ <variable Name="xTasksWaitingTermination" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="288" Addr="0x2000027C" TI="25136"/>\r
+ <variable Name="uxTasksDeleted" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="289" Addr="0x20000290" TI="22283"/>\r
+ <variable Name="xSuspendedTaskList" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="295" Addr="0x200001C8" TI="22545"/>\r
+ <variable Name="uxCurrentNumberOfTasks" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="300" Addr="0x2000026C" TI="22283"/>\r
+ <variable Name="xTickCount" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="301" Addr="0x20000268" TI="25213"/>\r
+ <variable Name="uxTopUsedPriority" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="302" Addr="0x200002C0" TI="22207"/>\r
+ <variable Name="uxTopReadyPriority" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="303" Addr="0x200001F4" TI="22283"/>\r
+ <variable Name="xSchedulerRunning" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="304" Addr="0x20000294" TI="22278"/>\r
+ <variable Name="uxSchedulerSuspended" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="305" Addr="0x200001F0" TI="22283"/>\r
+ <variable Name="uxMissedTicks" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="306" Addr="0x20000278" TI="22283"/>\r
+ <variable Name="xMissedYield" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="307" Addr="0x2000025C" TI="22278"/>\r
+ <variable Name="xNumOfOverflows" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="308" Addr="0x20000264" TI="22278"/>\r
+ <variable Name="pxCurrentTCB" FileName="C:\E\Dev\FreeRTOS\Source\tasks.c" Line="275" Addr="0x20000260" TI="25363"/>\r
+ </module>\r
+ <module Name="C:\E\Dev\FreeRTOS\Source\list.c" >\r
+ <type Family="Base" Name="unsigned int" ID="25394"/>\r
+ <type Family="Base" Name="int" ID="25401"/>\r
+ <type Family="Base" Name="long int" ID="25408"/>\r
+ <type Family="Base" Name="long long int" ID="25415"/>\r
+ <type Family="Base" Name="unsigned char" ID="25425"/>\r
+ <type Family="Pointer" TI="25432" toTI="0"/>\r
+ <type Family="Base" Name="long unsigned int" ID="25434"/>\r
+ <type Family="Base" Name="short int" ID="25441"/>\r
+ <type Family="Base" Name="char" ID="25448"/>\r
+ <type Family="Base" Name="short unsigned int" ID="25455"/>\r
+ <type Family="Base" Name="long long unsigned int" ID="25462"/>\r
+ <type Family="Base" Name="signed char" ID="25469"/>\r
+ <type Family="typedef" Name="portTickType" Line="74" ID="25481" toTI="25434"/>\r
+ <type Family="ComponentList" Name="xLIST_ITEM" Line="82" ID="25492">\r
+ <Component Name="xItemValue" TI="25504" Line="83" Offs="0"/>\r
+ <type Family="Pointer" TI="25575" toTI="25581"/>\r
+ <Component Name="pxNext" TI="25518" Line="84" Offs="4"/>\r
+ <Component Name="pxPrevious" TI="25532" Line="85" Offs="8"/>\r
+ <type Family="Pointer" TI="25432" toTI="0"/>\r
+ <Component Name="pvOwner" TI="25546" Line="86" Offs="12"/>\r
+ <type Family="Pointer" TI="25432" toTI="0"/>\r
+ <Component Name="pvContainer" TI="25560" Line="87" Offs="16"/>\r
+ </type>\r
+ <type Family="typedef" Name="xListItem" Line="89" ID="25590" toTI="25492"/>\r
+ <type Family="ComponentList" Name="xMINI_LIST_ITEM" Line="92" ID="25601">\r
+ <Component Name="xItemValue" TI="25613" Line="93" Offs="0"/>\r
+ <Component Name="pxNext" TI="25627" Line="94" Offs="4"/>\r
+ <Component Name="pxPrevious" TI="25641" Line="95" Offs="8"/>\r
+ </type>\r
+ <type Family="typedef" Name="xMiniListItem" Line="97" ID="25656" toTI="25601"/>\r
+ <type Family="ComponentList" Name="xLIST" Line="103" ID="25667">\r
+ <Component Name="uxNumberOfItems" TI="25679" Line="104" Offs="0"/>\r
+ <type Family="Pointer" TI="25722" toTI="25728"/>\r
+ <Component Name="pxIndex" TI="25693" Line="105" Offs="4"/>\r
+ <Component Name="xListEnd" TI="25707" Line="106" Offs="8"/>\r
+ </type>\r
+ <type Family="typedef" Name="xList" Line="107" ID="25738" toTI="25667"/>\r
+ <function Name="vListInitialise" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\list.c" Line="94">\r
+ <type Family="Pointer" TI="25786" toTI="25738"/>\r
+ <parameter Name="pxList" TI="25786" FileName="C:\E\Dev\FreeRTOS\Source\list.c" Line="94" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="vListInitialiseItem" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\list.c" Line="114">\r
+ <type Family="Pointer" TI="25829" toTI="25590"/>\r
+ <parameter Name="pxItem" TI="25829" FileName="C:\E\Dev\FreeRTOS\Source\list.c" Line="114" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="vListInsertEnd" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\list.c" Line="121">\r
+ <parameter Name="pxList" TI="25786" FileName="C:\E\Dev\FreeRTOS\Source\list.c" Line="121" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="pxNewListItem" TI="25829" FileName="C:\E\Dev\FreeRTOS\Source\list.c" Line="121" Addr="0x1" Param="Yes"/>\r
+ <variable Name="pxIndex" FileName="C:\E\Dev\FreeRTOS\Source\list.c" Line="122" Addr="0x2" TI="25722"/>\r
+ </function >\r
+ <function Name="vListInsert" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\list.c" Line="144">\r
+ <parameter Name="pxList" TI="25786" FileName="C:\E\Dev\FreeRTOS\Source\list.c" Line="144" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="pxNewListItem" TI="25829" FileName="C:\E\Dev\FreeRTOS\Source\list.c" Line="144" Addr="0x1" Param="Yes"/>\r
+ <variable Name="pxIterator" FileName="C:\E\Dev\FreeRTOS\Source\list.c" Line="145" Addr="0x2" TI="25722"/>\r
+ <variable Name="xValueOfInsertion" FileName="C:\E\Dev\FreeRTOS\Source\list.c" Line="146" Addr="0xC" TI="25481"/>\r
+ </function >\r
+ <function Name="vListRemove" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\list.c" Line="185">\r
+ <parameter Name="pxItemToRemove" TI="25829" FileName="C:\E\Dev\FreeRTOS\Source\list.c" Line="185" Addr="0x0" Param="Yes"/>\r
+ <variable Name="pxList" FileName="C:\E\Dev\FreeRTOS\Source\list.c" Line="186" Addr="0x2" TI="25786"/>\r
+ </function >\r
+ </module>\r
+ <module Name="C:\E\Dev\FreeRTOS\Source\queue.c" >\r
+ <type Family="Base" Name="unsigned int" ID="26061"/>\r
+ <type Family="typedef" Name="size_t" Line="213" ID="26050" toTI="26061"/>\r
+ <type Family="Base" Name="int" ID="26068"/>\r
+ <type Family="Base" Name="long int" ID="26075"/>\r
+ <type Family="Base" Name="long long int" ID="26082"/>\r
+ <type Family="Base" Name="unsigned char" ID="26092"/>\r
+ <type Family="Pointer" TI="26099" toTI="0"/>\r
+ <type Family="Base" Name="long unsigned int" ID="26101"/>\r
+ <type Family="Base" Name="short int" ID="26108"/>\r
+ <type Family="Base" Name="char" ID="26115"/>\r
+ <type Family="Base" Name="short unsigned int" ID="26122"/>\r
+ <type Family="Base" Name="long long unsigned int" ID="26129"/>\r
+ <type Family="Base" Name="signed char" ID="26136"/>\r
+ <type Family="typedef" Name="portTickType" Line="74" ID="26148" toTI="26101"/>\r
+ <type Family="ComponentList" Name="xLIST_ITEM" Line="82" ID="26159">\r
+ <Component Name="xItemValue" TI="26171" Line="83" Offs="0"/>\r
+ <type Family="Pointer" TI="26242" toTI="26248"/>\r
+ <Component Name="pxNext" TI="26185" Line="84" Offs="4"/>\r
+ <Component Name="pxPrevious" TI="26199" Line="85" Offs="8"/>\r
+ <type Family="Pointer" TI="26099" toTI="0"/>\r
+ <Component Name="pvOwner" TI="26213" Line="86" Offs="12"/>\r
+ <type Family="Pointer" TI="26099" toTI="0"/>\r
+ <Component Name="pvContainer" TI="26227" Line="87" Offs="16"/>\r
+ </type>\r
+ <type Family="typedef" Name="xListItem" Line="89" ID="26257" toTI="26159"/>\r
+ <type Family="ComponentList" Name="xMINI_LIST_ITEM" Line="92" ID="26268">\r
+ <Component Name="xItemValue" TI="26280" Line="93" Offs="0"/>\r
+ <Component Name="pxNext" TI="26294" Line="94" Offs="4"/>\r
+ <Component Name="pxPrevious" TI="26308" Line="95" Offs="8"/>\r
+ </type>\r
+ <type Family="typedef" Name="xMiniListItem" Line="97" ID="26323" toTI="26268"/>\r
+ <type Family="ComponentList" Name="xLIST" Line="103" ID="26334">\r
+ <Component Name="uxNumberOfItems" TI="26346" Line="104" Offs="0"/>\r
+ <type Family="Pointer" TI="26389" toTI="26395"/>\r
+ <Component Name="pxIndex" TI="26360" Line="105" Offs="4"/>\r
+ <Component Name="xListEnd" TI="26374" Line="106" Offs="8"/>\r
+ </type>\r
+ <type Family="typedef" Name="xList" Line="107" ID="26405" toTI="26334"/>\r
+ <type Family="ComponentList" Name="xTIME_OUT" Line="74" ID="26416">\r
+ <Component Name="xOverflowCount" TI="26428" Line="75" Offs="0"/>\r
+ <Component Name="xTimeOnEntering" TI="26442" Line="76" Offs="4"/>\r
+ </type>\r
+ <type Family="typedef" Name="xTimeOutType" Line="77" ID="26457" toTI="26416"/>\r
+ <type Family="ComponentList" Name="QueueDefinition" Line="108" ID="26468">\r
+ <type Family="Pointer" TI="26635" toTI="26136"/>\r
+ <Component Name="pcHead" TI="26480" Line="109" Offs="0"/>\r
+ <Component Name="pcTail" TI="26494" Line="110" Offs="4"/>\r
+ <Component Name="pcWriteTo" TI="26508" Line="112" Offs="8"/>\r
+ <Component Name="pcReadFrom" TI="26522" Line="113" Offs="12"/>\r
+ <Component Name="xTasksWaitingToSend" TI="26536" Line="115" Offs="16"/>\r
+ <Component Name="xTasksWaitingToReceive" TI="26550" Line="116" Offs="36"/>\r
+ <Component Name="uxMessagesWaiting" TI="26564" Line="118" Offs="56"/>\r
+ <Component Name="uxLength" TI="26578" Line="119" Offs="60"/>\r
+ <Component Name="uxItemSize" TI="26592" Line="120" Offs="64"/>\r
+ <Component Name="xRxLock" TI="26606" Line="122" Offs="68"/>\r
+ <Component Name="xTxLock" TI="26620" Line="123" Offs="72"/>\r
+ </type>\r
+ <type Family="typedef" Name="xQUEUE" Line="124" ID="26641" toTI="26468"/>\r
+ <type Family="Pointer" TI="26663" toTI="26641"/>\r
+ <type Family="typedef" Name="xQueueHandle" Line="132" ID="26652" toTI="26663"/>\r
+ <function Name="vQueueDelete" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="713">\r
+ <parameter Name="pxQueue" TI="26652" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="713" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="uxQueueMessagesWaiting" TI="26101" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="701">\r
+ <parameter Name="pxQueue" TI="26773" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="701" Addr="0x0" Param="Yes"/>\r
+ <variable Name="uxReturn" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="702" Addr="0x4" TI="26101"/>\r
+ </function >\r
+ <function Name="prvCopyDataFromQueue" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="757">\r
+ <parameter Name="pxQueue" TI="26836" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="757" Addr="0x0" Param="Yes"/>\r
+ <type Family="Pointer" TI="26841" toTI="26847"/>\r
+ <parameter Name="pvBuffer" TI="26841" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="757" Addr="0x1" Param="Yes"/>\r
+ </function >\r
+ <type Family="Pointer" TI="26841" toTI="26847"/>\r
+ <function Name="xQueueReceiveFromISR" TI="26075" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="653">\r
+ <parameter Name="pxQueue" TI="26652" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="653" Addr="0x0" Param="Yes"/>\r
+ <type Family="Pointer" TI="26841" toTI="26847"/>\r
+ <parameter Name="pvBuffer" TI="26943" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="653" Addr="0x1" Param="Yes"/>\r
+ <type Family="Pointer" TI="26948" toTI="26075"/>\r
+ <parameter Name="pxTaskWoken" TI="26948" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="653" Addr="0x2" Param="Yes"/>\r
+ <variable Name="xReturn" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="654" Addr="0x0" TI="26075"/>\r
+ </function >\r
+ <type Family="Pointer" TI="26841" toTI="26847"/>\r
+ <function Name="prvUnlockQueue" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="771">\r
+ <parameter Name="pxQueue" TI="26652" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="771" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="xQueueGenericReceive" TI="26075" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="519">\r
+ <parameter Name="pxQueue" TI="26652" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="519" Addr="0x0" Param="Yes"/>\r
+ <type Family="Pointer" TI="26841" toTI="26847"/>\r
+ <parameter Name="pvBuffer" TI="26943" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="519" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="xTicksToWait" TI="26148" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="519" Addr="0x2" Param="Yes"/>\r
+ <parameter Name="xJustPeeking" TI="26075" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="519" Addr="0x3" Param="Yes"/>\r
+ <variable Name="xReturn" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="520" Addr="0x6" TI="26075"/>\r
+ <variable Name="xTimeOut" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="521" Addr="0x340FFFE0" TI="26457"/>\r
+ <variable Name="pcOriginalReadPosition" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="522" Addr="0x4" TI="26635"/>\r
+ </function >\r
+ <function Name="prvCopyDataToQueue" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="720">\r
+ <parameter Name="pxQueue" TI="26663" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="720" Addr="0x0" Param="Yes"/>\r
+ <type Family="Pointer" TI="26841" toTI="26847"/>\r
+ <parameter Name="pvItemToQueue" TI="26841" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="720" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="xPosition" TI="26075" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="720" Addr="0x2" Param="Yes"/>\r
+ </function >\r
+ <function Name="xQueueGenericSendFromISR" TI="26075" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="477">\r
+ <parameter Name="pxQueue" TI="26652" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="477" Addr="0x0" Param="Yes"/>\r
+ <type Family="Pointer" TI="26841" toTI="26847"/>\r
+ <parameter Name="pvItemToQueue" TI="26943" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="477" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="xTaskPreviouslyWoken" TI="26075" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="477" Addr="0x2" Param="Yes"/>\r
+ <parameter Name="xCopyPosition" TI="26075" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="477" Addr="0x3" Param="Yes"/>\r
+ </function >\r
+ <function Name="xQueueGenericSend" TI="26075" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="300">\r
+ <parameter Name="pxQueue" TI="26652" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="300" Addr="0x0" Param="Yes"/>\r
+ <type Family="Pointer" TI="26841" toTI="26847"/>\r
+ <parameter Name="pvItemToQueue" TI="26943" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="300" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="xTicksToWait" TI="26148" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="300" Addr="0x2" Param="Yes"/>\r
+ <parameter Name="xCopyPosition" TI="26075" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="300" Addr="0x3" Param="Yes"/>\r
+ <variable Name="xReturn" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="301" Addr="0x7" TI="26075"/>\r
+ <variable Name="xTimeOut" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="302" Addr="0x340FFFD8" TI="26457"/>\r
+ </function >\r
+ <function Name="xQueueCreateMutex" TI="26652" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="260">\r
+ <variable Name="pxNewQueue" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="261" Addr="0x5" TI="26663"/>\r
+ </function >\r
+ <function Name="xQueueCreate" TI="26652" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="210">\r
+ <parameter Name="uxQueueLength" TI="26101" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="210" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="uxItemSize" TI="26101" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="210" Addr="0x1" Param="Yes"/>\r
+ <variable Name="pxNewQueue" FileName="C:\E\Dev\FreeRTOS\Source\queue.c" Line="211" Addr="0x4" TI="26663"/>\r
+ </function >\r
+ </module>\r
+ <module Name="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" >\r
+ <type Family="Base" Name="int" ID="27752"/>\r
+ <type Family="Base" Name="unsigned int" ID="27759"/>\r
+ <type Family="Pointer" TI="27777" toTI="27783"/>\r
+ <type Family="typedef" Name="pdTASK_CODE" Line="41" ID="27766" toTI="27777"/>\r
+ <type Family="Pointer" TI="27777" toTI="27783"/>\r
+ <type Family="Pointer" TI="27795" toTI="0"/>\r
+ <type Family="Base" Name="long int" ID="27797"/>\r
+ <type Family="Base" Name="short int" ID="27804"/>\r
+ <type Family="Base" Name="signed char" ID="27811"/>\r
+ <type Family="Base" Name="long unsigned int" ID="27818"/>\r
+ <type Family="Base" Name="short unsigned int" ID="27825"/>\r
+ <type Family="Base" Name="unsigned char" ID="27832"/>\r
+ <type Family="Pointer" TI="27916" toTI="27818"/>\r
+ <function Name="pxPortInitialiseStack" TI="27916" FileName="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" Line="111">\r
+ <parameter Name="pxTopOfStack" TI="27916" FileName="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" Line="111" Addr="0x0" Param="Yes"/>\r
+ <type Family="Pointer" TI="27777" toTI="27783"/>\r
+ <type Family="typedef" Name="pdTASK_CODE" Line="41" ID="27766" toTI="27777"/>\r
+ <parameter Name="pxCode" TI="27766" FileName="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" Line="111" Addr="0x1" Param="Yes"/>\r
+ <type Family="Pointer" TI="27795" toTI="0"/>\r
+ <parameter Name="pvParameters" TI="27795" FileName="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" Line="111" Addr="0x2" Param="Yes"/>\r
+ </function >\r
+ <function Name="prvSetPSP" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" Line="129">\r
+ <parameter Name="ulValue" TI="27818" FileName="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" Line="129" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="prvSetMSP" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" Line="136">\r
+ <parameter Name="ulValue" TI="27818" FileName="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" Line="136" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="vPortEndScheduler" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" Line="169">\r
+ </function >\r
+ <function Name="vPortYieldFromISR" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" Line="176">\r
+ </function >\r
+ <function Name="vPortEnterCritical" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" Line="187">\r
+ </function >\r
+ <function Name="vPortExitCritical" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" Line="194">\r
+ </function >\r
+ <function Name="xPortPendSVHandler" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" Line="204">\r
+ </function >\r
+ <function Name="xPortSysTickHandler" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" Line="251">\r
+ </function >\r
+ <function Name="xPortStartScheduler" TI="27797" FileName="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" Line="146">\r
+ </function >\r
+ <function Name="vPortIncrementTick" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" Line="317">\r
+ </function >\r
+ <function Name="vPortSwitchContext" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" Line="309">\r
+ </function >\r
+ <variable Name="ulKernelPriority" FileName="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" Line="82" Addr="0x8006E18" TI="27839"/>\r
+ <variable Name="uxCriticalNesting" FileName="C:\E\Dev\FreeRTOS\Source\portable\GCC\ARM_CM3\port.c" Line="86" Addr="0x20000084" TI="27818"/>\r
+ </module>\r
+ <module Name="C:\E\Dev\FreeRTOS\Source\portable\MemMang\heap_2.c" >\r
+ <type Family="Base" Name="unsigned int" ID="28286"/>\r
+ <type Family="typedef" Name="size_t" Line="213" ID="28275" toTI="28286"/>\r
+ <type Family="Base" Name="int" ID="28293"/>\r
+ <type Family="Base" Name="long int" ID="28300"/>\r
+ <type Family="Base" Name="long long int" ID="28307"/>\r
+ <type Family="Base" Name="unsigned char" ID="28317"/>\r
+ <type Family="Pointer" TI="28324" toTI="0"/>\r
+ <type Family="Base" Name="long unsigned int" ID="28326"/>\r
+ <type Family="Pointer" TI="28333" toTI="28317"/>\r
+ <type Family="Base" Name="short int" ID="28339"/>\r
+ <type Family="Base" Name="char" ID="28346"/>\r
+ <type Family="Base" Name="short unsigned int" ID="28353"/>\r
+ <type Family="Base" Name="long long unsigned int" ID="28360"/>\r
+ <type Family="Base" Name="signed char" ID="28367"/>\r
+ <type Family="ComponentList" Name="xRTOS_HEAP" Line="75" ID="28379">\r
+ <Component Name="ulDummy" TI="28392" Line="76" Offs="0"/>\r
+ <type Family="array" ID="28421" toTI="28317"/>\r
+ <Component Name="ucHeap" TI="28406" Line="77" Offs="4"/>\r
+ </type>\r
+ <type Family="ComponentList" Name="A_BLOCK_LINK" Line="83" ID="28438">\r
+ <type Family="Pointer" TI="28479" toTI="28438"/>\r
+ <Component Name="pxNextFreeBlock" TI="28450" Line="84" Offs="0"/>\r
+ <Component Name="xBlockSize" TI="28464" Line="85" Offs="4"/>\r
+ </type>\r
+ <type Family="typedef" Name="xBlockLink" Line="86" ID="28485" toTI="28438"/>\r
+ <function Name="vPortFree" TI="0" FileName="C:\E\Dev\FreeRTOS\Source\portable\MemMang\heap_2.c" Line="223">\r
+ <type Family="Pointer" TI="28324" toTI="0"/>\r
+ <parameter Name="pv" TI="28324" FileName="C:\E\Dev\FreeRTOS\Source\portable\MemMang\heap_2.c" Line="223" Addr="0x0" Param="Yes"/>\r
+ <type Family="Pointer" TI="28600" toTI="28485"/>\r
+ <variable Name="pxLink" FileName="C:\E\Dev\FreeRTOS\Source\portable\MemMang\heap_2.c" Line="225" Addr="0x4" TI="28600"/>\r
+ <variable Name="pxIterator" FileName="C:\E\Dev\FreeRTOS\Source\portable\MemMang\heap_2.c" Line="239" Addr="0x1" TI="28600"/>\r
+ <variable Name="xBlockSize" FileName="C:\E\Dev\FreeRTOS\Source\portable\MemMang\heap_2.c" Line="239" Addr="0x0" TI="28275"/>\r
+ </function >\r
+ <type Family="Pointer" TI="28324" toTI="0"/>\r
+ <function Name="pvPortMalloc" TI="28324" FileName="C:\E\Dev\FreeRTOS\Source\portable\MemMang\heap_2.c" Line="145">\r
+ <parameter Name="xWantedSize" TI="28275" FileName="C:\E\Dev\FreeRTOS\Source\portable\MemMang\heap_2.c" Line="145" Addr="0x0" Param="Yes"/>\r
+ <variable Name="pxBlock" FileName="C:\E\Dev\FreeRTOS\Source\portable\MemMang\heap_2.c" Line="146" Addr="0x2" TI="28600"/>\r
+ <variable Name="pxPreviousBlock" FileName="C:\E\Dev\FreeRTOS\Source\portable\MemMang\heap_2.c" Line="146" Addr="0xC" TI="28600"/>\r
+ <variable Name="pxNewBlockLink" FileName="C:\E\Dev\FreeRTOS\Source\portable\MemMang\heap_2.c" Line="146" Addr="0xC" TI="28600"/>\r
+ <type Family="Pointer" TI="28324" toTI="0"/>\r
+ <variable Name="pvReturn" FileName="C:\E\Dev\FreeRTOS\Source\portable\MemMang\heap_2.c" Line="148" Addr="0x4" TI="28324"/>\r
+ <variable Name="pxIterator" FileName="C:\E\Dev\FreeRTOS\Source\portable\MemMang\heap_2.c" Line="211" Addr="0x1" TI="28600"/>\r
+ <variable Name="xBlockSize" FileName="C:\E\Dev\FreeRTOS\Source\portable\MemMang\heap_2.c" Line="211" Addr="0x0" TI="28275"/>\r
+ <variable Name="xHeapHasBeenInitialised" FileName="C:\E\Dev\FreeRTOS\Source\portable\MemMang\heap_2.c" Line="147" Addr="0x200002CC" TI="28300"/>\r
+ </function >\r
+ <variable Name="xHeap" FileName="C:\E\Dev\FreeRTOS\Source\portable\MemMang\heap_2.c" Line="78" Addr="0x200002D0" TI="28379"/>\r
+ <variable Name="xStart" FileName="C:\E\Dev\FreeRTOS\Source\portable\MemMang\heap_2.c" Line="93" Addr="0x200002C4" TI="28485"/>\r
+ <variable Name="xEnd" FileName="C:\E\Dev\FreeRTOS\Source\portable\MemMang\heap_2.c" Line="93" Addr="0x200046D4" TI="28485"/>\r
+ </module>\r
+ <module Name="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" >\r
+ <type Family="Base" Name="signed char" ID="28890"/>\r
+ <type Family="Base" Name="unsigned char" ID="28897"/>\r
+ <type Family="Base" Name="short int" ID="28904"/>\r
+ <type Family="Base" Name="short unsigned int" ID="28911"/>\r
+ <type Family="Base" Name="int" ID="28918"/>\r
+ <type Family="Base" Name="unsigned int" ID="28925"/>\r
+ <type Family="Base" Name="long long int" ID="28932"/>\r
+ <type Family="Base" Name="long long unsigned int" ID="28939"/>\r
+ <type Family="Base" Name="long int" ID="28946"/>\r
+ <type Family="Base" Name="long unsigned int" ID="28956"/>\r
+ <type Family="typedef" Name="clock_t" Line="104" ID="28963" toTI="28956"/>\r
+ <type Family="typedef" Name="time_t" Line="109" ID="28974" toTI="28946"/>\r
+ <type Family="Base" Name="char" ID="29002"/>\r
+ <type Family="Pointer" TI="28996" toTI="29002"/>\r
+ <type Family="typedef" Name="caddr_t" Line="126" ID="28985" toTI="28996"/>\r
+ <type Family="typedef" Name="ino_t" Line="133" ID="29009" toTI="28911"/>\r
+ <type Family="typedef" Name="dev_t" Line="166" ID="29020" toTI="28904"/>\r
+ <type Family="typedef" Name="off_t" Line="171" ID="29031" toTI="28946"/>\r
+ <type Family="typedef" Name="uid_t" Line="173" ID="29042" toTI="28911"/>\r
+ <type Family="typedef" Name="gid_t" Line="174" ID="29053" toTI="28911"/>\r
+ <type Family="typedef" Name="mode_t" Line="195" ID="29064" toTI="28925"/>\r
+ <type Family="typedef" Name="nlink_t" Line="200" ID="29075" toTI="28911"/>\r
+ <type Family="typedef" Name="suseconds_t" Line="263" ID="29086" toTI="28946"/>\r
+ <type Family="Pointer" TI="29098" toTI="29104"/>\r
+ <type Family="ComponentList" Name="stat" Line="26" ID="29109">\r
+ <Component Name="st_dev" TI="29121" Line="27" Offs="0"/>\r
+ <Component Name="st_ino" TI="29135" Line="28" Offs="2"/>\r
+ <Component Name="st_mode" TI="29149" Line="29" Offs="4"/>\r
+ <Component Name="st_nlink" TI="29163" Line="30" Offs="8"/>\r
+ <Component Name="st_uid" TI="29177" Line="31" Offs="10"/>\r
+ <Component Name="st_gid" TI="29191" Line="32" Offs="12"/>\r
+ <Component Name="st_rdev" TI="29205" Line="33" Offs="14"/>\r
+ <Component Name="st_size" TI="29219" Line="34" Offs="16"/>\r
+ <Component Name="st_atime" TI="29233" Line="41" Offs="20"/>\r
+ <Component Name="st_spare1" TI="29247" Line="42" Offs="24"/>\r
+ <Component Name="st_mtime" TI="29261" Line="43" Offs="28"/>\r
+ <Component Name="st_spare2" TI="29275" Line="44" Offs="32"/>\r
+ <Component Name="st_ctime" TI="29289" Line="45" Offs="36"/>\r
+ <Component Name="st_spare3" TI="29303" Line="46" Offs="40"/>\r
+ <Component Name="st_blksize" TI="29317" Line="47" Offs="44"/>\r
+ <Component Name="st_blocks" TI="29331" Line="48" Offs="48"/>\r
+ <type Family="array" ID="29360" toTI="28946"/>\r
+ <Component Name="st_spare4" TI="29345" Line="49" Offs="52"/>\r
+ </type>\r
+ <type Family="ComponentList" Name="timeval" Line="16" ID="29376">\r
+ <Component Name="tv_sec" TI="29388" Line="17" Offs="0"/>\r
+ <Component Name="tv_usec" TI="29402" Line="18" Offs="4"/>\r
+ </type>\r
+ <type Family="ComponentList" Name="timezone" Line="21" ID="29417">\r
+ <Component Name="tz_minuteswest" TI="29429" Line="22" Offs="0"/>\r
+ <Component Name="tz_dsttime" TI="29443" Line="23" Offs="4"/>\r
+ </type>\r
+ <type Family="ComponentList" Name="tms" Line="16" ID="29458">\r
+ <Component Name="tms_utime" TI="29470" Line="17" Offs="0"/>\r
+ <Component Name="tms_stime" TI="29484" Line="18" Offs="4"/>\r
+ <Component Name="tms_cutime" TI="29498" Line="19" Offs="8"/>\r
+ <Component Name="tms_cstime" TI="29512" Line="20" Offs="12"/>\r
+ </type>\r
+ <type Family="ComponentList" Line="79" ID="29527">\r
+ <Component Name="handle" TI="29535" Line="80" Offs="0"/>\r
+ <Component Name="pos" TI="29549" Line="81" Offs="4"/>\r
+ </type>\r
+ <type Family="typedef" Name="poslog" Line="83" ID="29564" toTI="29527"/>\r
+ <function Name="_read" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="173">\r
+ <parameter Name="file" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="173" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="ptr" TI="28996" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="173" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="len" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="173" Addr="0x2" Param="Yes"/>\r
+ </function >\r
+ <function Name="_lseek" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="180">\r
+ <parameter Name="file" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="180" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="ptr" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="180" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="dir" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="180" Addr="0x2" Param="Yes"/>\r
+ </function >\r
+ <function Name="_open" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="203">\r
+ <parameter Name="path" TI="29098" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="203" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="flags" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="203" Addr="0x34000000" Param="Yes"/>\r
+ </function >\r
+ <function Name="_close" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="208">\r
+ <parameter Name="file" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="208" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="_exit" TI="0" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="213">\r
+ <parameter Name="n" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="213" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="_kill" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="219">\r
+ <parameter Name="n" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="219" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="m" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="219" Addr="0x1" Param="Yes"/>\r
+ </function >\r
+ <function Name="_fstat" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="247">\r
+ <parameter Name="file" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="247" Addr="0x0" Param="Yes"/>\r
+ <type Family="Pointer" TI="29958" toTI="29109"/>\r
+ <parameter Name="st" TI="29958" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="247" Addr="0x1" Param="Yes"/>\r
+ </function >\r
+ <function Name="_stat" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="253">\r
+ <parameter Name="fname" TI="29098" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="253" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="st" TI="29958" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="253" Addr="0x1" Param="Yes"/>\r
+ </function >\r
+ <function Name="_link" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="259">\r
+ </function >\r
+ <function Name="_unlink" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="264">\r
+ </function >\r
+ <function Name="_raise" TI="0" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="269">\r
+ </function >\r
+ <function Name="_getpid" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="274">\r
+ <parameter Name="n" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="274" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="_gettimeofday" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="279">\r
+ <type Family="Pointer" TI="30214" toTI="29376"/>\r
+ <parameter Name="tp" TI="30214" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="279" Addr="0x0" Param="Yes"/>\r
+ <type Family="Pointer" TI="30220" toTI="29417"/>\r
+ <parameter Name="tzp" TI="30220" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="279" Addr="0x1" Param="Yes"/>\r
+ <variable Name="value" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="285" Addr="0x3" TI="28918"/>\r
+ </function >\r
+ <function Name="_times" TI="28963" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="304">\r
+ <type Family="Pointer" TI="30284" toTI="29458"/>\r
+ <parameter Name="tp" TI="30284" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="304" Addr="0x0" Param="Yes"/>\r
+ <variable Name="timeval" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="305" Addr="0x1" TI="28963"/>\r
+ </function >\r
+ <function Name="isatty" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="322">\r
+ <parameter Name="fd" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="322" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="_rename" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="336">\r
+ <parameter Name="oldpath" TI="29098" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="336" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="newpath" TI="29098" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="336" Addr="0x1" Param="Yes"/>\r
+ </function >\r
+ <function Name="_system" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="328">\r
+ <parameter Name="s" TI="29098" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="328" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="_write" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="189">\r
+ <parameter Name="file" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="189" Addr="0x0" Param="Yes"/>\r
+ <parameter Name="ptr" TI="28996" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="189" Addr="0x1" Param="Yes"/>\r
+ <parameter Name="len" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="189" Addr="0x2" Param="Yes"/>\r
+ <variable Name="todo" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="190" Addr="0x4" TI="28918"/>\r
+ </function >\r
+ <function Name="_sbrk" TI="28985" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="224">\r
+ <parameter Name="incr" TI="28918" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="224" Addr="0x0" Param="Yes"/>\r
+ <variable Name="prev_heap_end" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="227" Addr="0x2" TI="28996"/>\r
+ <variable Name="heap_end" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="226" Addr="0x0" TI="28996"/>\r
+ </function >\r
+ <type Family="array" ID="30651" toTI="29564"/>\r
+ <variable Name="stack_ptr" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\syscalls.c" Line="53" Addr="0xD" TI="28996"/>\r
+ </module>\r
+ <module Name="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\STM32F10X_IO_putchar.c" >\r
+ <type Family="Base" Name="long int" ID="30735"/>\r
+ <type Family="Base" Name="short int" ID="30742"/>\r
+ <type Family="Base" Name="signed char" ID="30749"/>\r
+ <type Family="Base" Name="long unsigned int" ID="30767"/>\r
+ <type Family="typedef" Name="u32" Line="36" ID="30756" toTI="30767"/>\r
+ <type Family="Base" Name="short unsigned int" ID="30785"/>\r
+ <type Family="typedef" Name="u16" Line="37" ID="30774" toTI="30785"/>\r
+ <type Family="Base" Name="unsigned char" ID="30792"/>\r
+ <type Family="ComponentList" Line="200" ID="30854">\r
+ <Component Name="CRL" TI="30862" Line="201" Offs="0"/>\r
+ <Component Name="CRH" TI="30876" Line="202" Offs="4"/>\r
+ <Component Name="IDR" TI="30890" Line="203" Offs="8"/>\r
+ <Component Name="ODR" TI="30904" Line="204" Offs="12"/>\r
+ <Component Name="BSRR" TI="30918" Line="205" Offs="16"/>\r
+ <Component Name="BRR" TI="30932" Line="206" Offs="20"/>\r
+ <Component Name="LCKR" TI="30946" Line="207" Offs="24"/>\r
+ </type>\r
+ <type Family="ComponentList" Line="445" ID="30961">\r
+ <Component Name="SR" TI="30970" Line="446" Offs="0"/>\r
+ <Component Name="RESERVED0" TI="30984" Line="447" Offs="2"/>\r
+ <Component Name="DR" TI="30999" Line="448" Offs="4"/>\r
+ <Component Name="RESERVED1" TI="31013" Line="449" Offs="6"/>\r
+ <Component Name="BRR" TI="31028" Line="450" Offs="8"/>\r
+ <Component Name="RESERVED2" TI="31043" Line="451" Offs="10"/>\r
+ <Component Name="CR1" TI="31058" Line="452" Offs="12"/>\r
+ <Component Name="RESERVED3" TI="31073" Line="453" Offs="14"/>\r
+ <Component Name="CR2" TI="31088" Line="454" Offs="16"/>\r
+ <Component Name="RESERVED4" TI="31103" Line="455" Offs="18"/>\r
+ <Component Name="CR3" TI="31118" Line="456" Offs="20"/>\r
+ <Component Name="RESERVED5" TI="31133" Line="457" Offs="22"/>\r
+ <Component Name="GTPR" TI="31148" Line="458" Offs="24"/>\r
+ <Component Name="RESERVED6" TI="31163" Line="459" Offs="26"/>\r
+ </type>\r
+ <type Family="typedef" Name="GPIOSpeed_TypeDef" Line="36" ID="31206" toTI="31179"/>\r
+ <type Family="typedef" Name="GPIOMode_TypeDef" Line="51" ID="31275" toTI="31217"/>\r
+ <type Family="ComponentList" Line="60" ID="31286">\r
+ <Component Name="GPIO_Pin" TI="31294" Line="61" Offs="0"/>\r
+ <Component Name="GPIO_Speed" TI="31308" Line="62" Offs="2"/>\r
+ <Component Name="GPIO_Mode" TI="31322" Line="63" Offs="3"/>\r
+ </type>\r
+ <type Family="typedef" Name="GPIO_InitTypeDef" Line="64" ID="31337" toTI="31286"/>\r
+ <type Family="ComponentList" Line="32" ID="31348">\r
+ <Component Name="USART_BaudRate" TI="31356" Line="33" Offs="0"/>\r
+ <Component Name="USART_WordLength" TI="31370" Line="34" Offs="4"/>\r
+ <Component Name="USART_StopBits" TI="31384" Line="35" Offs="6"/>\r
+ <Component Name="USART_Parity" TI="31398" Line="36" Offs="8"/>\r
+ <Component Name="USART_HardwareFlowControl" TI="31412" Line="37" Offs="10"/>\r
+ <Component Name="USART_Mode" TI="31426" Line="38" Offs="12"/>\r
+ <Component Name="USART_Clock" TI="31440" Line="39" Offs="14"/>\r
+ <Component Name="USART_CPOL" TI="31454" Line="40" Offs="16"/>\r
+ <Component Name="USART_CPHA" TI="31468" Line="41" Offs="18"/>\r
+ <Component Name="USART_LastBit" TI="31482" Line="42" Offs="20"/>\r
+ </type>\r
+ <type Family="typedef" Name="USART_InitTypeDef" Line="43" ID="31497" toTI="31348"/>\r
+ <function Name="__io_SetMainOscFreq" TI="0" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\STM32F10X_IO_putchar.c" Line="29">\r
+ <type Family="Base" Name="unsigned int" ID="31545"/>\r
+ <parameter Name="NewFreq" TI="31545" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\STM32F10X_IO_putchar.c" Line="29" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="__io_init" TI="0" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\STM32F10X_IO_putchar.c" Line="35">\r
+ <variable Name="GPIO_InitStructure" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\STM32F10X_IO_putchar.c" Line="36" Addr="0x340FFFEC" TI="31337"/>\r
+ <variable Name="USART_InitStructure" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\STM32F10X_IO_putchar.c" Line="37" Addr="0x340FFFD4" TI="31497"/>\r
+ </function >\r
+ <type Family="Base" Name="int" ID="31657"/>\r
+ <function Name="__io_getchar" TI="31657" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\STM32F10X_IO_putchar.c" Line="122">\r
+ </function >\r
+ <function Name="getchar" TI="31657" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\STM32F10X_IO_putchar.c" Line="142">\r
+ </function >\r
+ <function Name="__io_putchar" TI="0" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\STM32F10X_IO_putchar.c" Line="94">\r
+ <type Family="Base" Name="char" ID="31727"/>\r
+ <parameter Name="c" TI="31727" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\STM32F10X_IO_putchar.c" Line="94" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <function Name="putchar" TI="31657" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\STM32F10X_IO_putchar.c" Line="116">\r
+ <parameter Name="c" TI="31657" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\STM32F10X_IO_putchar.c" Line="116" Addr="0x0" Param="Yes"/>\r
+ </function >\r
+ <variable Name="__io_init_done" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\STM32F10X_IO_putchar.c" Line="23" Addr="0x200046DC" TI="30792"/>\r
+ <variable Name="__io_Main_Osc" FileName="C:\Program Files\Raisonance\Ride\lib\ARM\io_putchar\STM32F10X_IO_putchar.c" Line="25" Addr="0x0" TI="31545"/>\r
+ </module>\r
+ </modulelist>\r
+</aoffile>\r
+\r
--- /dev/null
+\r
+<ApplicationBuild Header="RTOSDemo" Extern=".\RTOSDemo.rapp" Path=".\RTOSDemo.rapp" OutputFile=".\RTOSDemo.elf" sate="98" >\r
+ <Group Header="ST_Library" Marker="-1" OutputFile="" sate="96" >\r
+ <NodeC Path=".\ST_Code\led.c" Header="led.c" Marker="-1" OutputFile=".\led.o" sate="0" >\r
+ <Options> </Options>\r
+ \r
+ </NodeC>\r
+ <NodeC Path=".\ST_Code\crt0_STM32x.c" Header="crt0_STM32x.c" Marker="-1" OutputFile=".\crt0_STM32x.o" sate="0" >\r
+ <Options> </Options>\r
+ \r
+ </NodeC>\r
+ <NodeC Path=".\ST_Code\lcd.c" Header="lcd.c" Marker="-1" OutputFile=".\lcd.o" sate="0" >\r
+ <Options> </Options>\r
+ \r
+ </NodeC>\r
+ <NodeC Path=".\ST_Code\Util.c" Header="Util.c" Marker="-1" OutputFile=".\Util.o" sate="0" >\r
+ <Options> </Options>\r
+ \r
+ </NodeC>\r
+ <NodeC Path=".\ST_Code\draw.c" Header="draw.c" Marker="-1" OutputFile=".\draw.o" sate="0" >\r
+ <Options> </Options>\r
+ \r
+ </NodeC>\r
+ <NodeC Path=".\ST_Code\mems.c" Header="mems.c" Marker="-1" OutputFile=".\mems.o" sate="0" />\r
+ <NodeH Path=".\ST_Code\stm32f10x_conf.h" Header="stm32f10x_conf.h" Marker="-1" OutputFile="" sate="0" />\r
+ <NodeC Path=".\ST_Code\buzzer.c" Header="buzzer.c" Marker="-1" OutputFile=".\buzzer.o" sate="0" />\r
+ <NodeC Path=".\ST_Code\pointer.c" Header="pointer.c" Marker="-1" OutputFile=".\pointer.o" sate="0" />\r
+ \r
+ </Group>\r
+ <Group Header="Demo_Source" Marker="-1" OutputFile="" sate="96" >\r
+ <NodeC Path=".\main.c" Header="main.c" Marker="-1" OutputFile=".\main.o" sate="0" />\r
+ <NodeC Path=".\ParTest\ParTest.c" Header="ParTest.c" Marker="-1" OutputFile=".\ParTest.o" sate="0" />\r
+ <NodeH Path=".\FreeRTOSConfig.h" Header="FreeRTOSConfig.h" Marker="-1" OutputFile="" sate="0" />\r
+ <NodeC Path=".\timertest.c" Header="timertest.c" Marker="-1" OutputFile=".\timertest.o" sate="0" />\r
+ <NodeC Path=".\printf-stdarg.c" Header="printf-stdarg.c" Marker="-1" OutputFile=".\printf-stdarg.o" sate="0" >\r
+ <Options/>\r
+ \r
+ </NodeC>\r
+ <NodeC Path="..\Common\Minimal\GenQTest.c" Header="GenQTest.c" Marker="-1" OutputFile=".\GenQTest.o" sate="0" />\r
+ <NodeC Path="..\Common\Minimal\BlockQ.c" Header="BlockQ.c" Marker="-1" OutputFile=".\BlockQ.o" sate="0" />\r
+ <NodeC Path="..\Common\Minimal\blocktim.c" Header="blocktim.c" Marker="-1" OutputFile=".\blocktim.o" sate="0" />\r
+ <NodeC Path="..\Common\Minimal\QPeek.c" Header="QPeek.c" Marker="-1" OutputFile=".\QPeek.o" sate="0" />\r
+ <NodeC Path="..\Common\Minimal\PollQ.c" Header="PollQ.c" Marker="-1" OutputFile=".\PollQ.o" sate="0" />\r
+ \r
+ </Group>\r
+ <Group Header="FreeRTOS.org_Source" Marker="-1" OutputFile="" sate="96" >\r
+ <NodeC Path="..\..\Source\tasks.c" Header="tasks.c" Marker="-1" OutputFile=".\tasks.o" sate="0" >\r
+ <Options/>\r
+ \r
+ </NodeC>\r
+ <NodeC Path="..\..\Source\list.c" Header="list.c" Marker="-1" OutputFile=".\list.o" sate="0" >\r
+ <Options/>\r
+ \r
+ </NodeC>\r
+ <NodeC Path="..\..\Source\queue.c" Header="queue.c" Marker="-1" OutputFile=".\queue.o" sate="0" >\r
+ <Options/>\r
+ \r
+ </NodeC>\r
+ <NodeC Path="..\..\Source\portable\GCC\ARM_CM3\port.c" Header="port.c" Marker="-1" OutputFile=".\port.o" sate="0" />\r
+ <NodeC Path="..\..\Source\portable\MemMang\heap_2.c" Header="heap_2.c" Marker="-1" OutputFile=".\heap_2.o" sate="0" />\r
+ \r
+ </Group>\r
+ <Options>\r
+ <Config Header="Standard" >\r
+ <Set Header="ApplicationBuild" >\r
+ <Section Header="General" >\r
+ <Property Header="TargetFamily" Value="ARM" />\r
+ \r
+ </Section>\r
+ <Section Header="Directories" >\r
+ <Property Header="IncDir" Value="$(ApplicationDir)\..\..\Source\include;$(ApplicationDir)\..\Common\include;$(ApplicationDir)\ST_Code;$(RkitLib)\ARM\include;." Removable="1" />\r
+ \r
+ </Section>\r
+ \r
+ </Set>\r
+ <Set Header="Target" >\r
+ <Section Header="ProcessorARM" >\r
+ <Property Header="Processor" Value="STM32F103RBT6" />\r
+ \r
+ </Section>\r
+ <Section Header="ToolSetARM" >\r
+ <Property Header="BuildToolSetARM" Value="ARM\\GNU.config" Removable="1" />\r
+ \r
+ </Section>\r
+ \r
+ </Set>\r
+ <Set Header="LD" >\r
+ <Section Header="Startup" >\r
+ <Property Header="DEFAULTSTARTUP" Value="No" Removable="1" />\r
+ <Property Header="File" Value="" Removable="1" />\r
+ \r
+ </Section>\r
+ \r
+ </Set>\r
+ <Set Header="GCC" >\r
+ <Section Header="Defines" >\r
+ <Property Header="Defines" Value="GCC_ARMCM3" Removable="1" />\r
+ \r
+ </Section>\r
+ <Section Header="OPTIMIZE" >\r
+ <Property Header="Optimize" Value="-O1" Removable="1" />\r
+ \r
+ </Section>\r
+ \r
+ </Set>\r
+ </Config>\r
+ </Options>\r
+</ApplicationBuild>
\ No newline at end of file
--- /dev/null
+\r
+<Project Header="Project 'RTOSDemo'" Path=".\RTOSDemo.rprj" Project="Yes" OutputFile="" sate="96" ActiveApp="RTOSDemo" >\r
+ <ApplicationBuild Header="RTOSDemo" Extern=".\RTOSDemo.rapp" Path=".\RTOSDemo.rapp" OutputFile=".\RTOSDemo.elf" sate="98" ></ApplicationBuild>\r
+</Project>
\ No newline at end of file
--- /dev/null
+/********************* (C) COPYRIGHT 2007 RAISONANCE S.A.S. *******************/\r
+/**\r
+*\r
+* @file Util.c\r
+* @brief Various utilities for STM32 CircleOS.\r
+* @author RT\r
+* @date 07/2007\r
+*\r
+**/\r
+/******************************************************************************/\r
+\r
+/* Includes ------------------------------------------------------------------*/\r
+\r
+#include "circle.h"\r
+#include "adc.h"\r
+\r
+/// @cond Internal\r
+\r
+/* Private defines -----------------------------------------------------------*/\r
+#define GPIO_USB_PIN GPIO_Pin_1\r
+#define GPIOx_USB GPIOA\r
+#define OsVersion "V 1.7" /*!< CircleOS version string. */\r
+\r
+/* Private typedef -----------------------------------------------------------*/\r
+enum eSpeed CurrentSpeed;\r
+\r
+/* Private variables ---------------------------------------------------------*/\r
+RCC_ClocksTypeDef RCC_ClockFreq;\r
+int dummycounter = 0;\r
+u8 fTemperatureInFahrenheit = 0; /*!< 1 : Fahrenheit, 0 : Celcius (default). */\r
+\r
+/* Private function prototypes -----------------------------------------------*/\r
+static void _int2str( char* ptr, s32 X, u16 digit, int flagunsigned, int fillwithzero );\r
+\r
+/* Private functions ---------------------------------------------------------*/\r
+\r
+/*******************************************************************************\r
+*\r
+* _int2str\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Translate a 32 bit word into a string.\r
+*\r
+* @param[in,out] ptr A pointer to a string large enough to contain\r
+* the translated 32 bit word.\r
+* @param[in] X The 32 bit word to translate.\r
+* @param[in] digit The amount of digits wanted in the result string.\r
+* @param[in] flagunsigned Is the input word unsigned?\r
+* @param[in] fillwithzero Fill with zeros or spaces.\r
+*\r
+**/\r
+/******************************************************************************/\r
+static void _int2str( char* ptr, s32 X, u16 digit, int flagunsigned, int fillwithzero )\r
+ {\r
+ u8 c;\r
+ u8 fFirst = 0;\r
+ u8 fNeg = 0;\r
+ u32 DIG = 1;\r
+ int i;\r
+\r
+ for( i = 1; i < digit; i++ )\r
+ {\r
+ DIG *= 10;\r
+ }\r
+\r
+ if( !flagunsigned && ( X < 0 ) )\r
+ {\r
+ fNeg = 1;\r
+ X = -X;\r
+ }\r
+\r
+ u32 r = X;\r
+\r
+ for( i = 0; i < digit; i++, DIG /= 10 )\r
+ {\r
+ c = (r/DIG);\r
+ r -= (c*DIG);\r
+\r
+ if( fillwithzero || fFirst || c || ( i == ( digit - 1 ) ) )\r
+ {\r
+ if( ( fFirst == 0 ) && !flagunsigned )\r
+ {\r
+ *ptr++ = fNeg ? '-' : ' ';\r
+ }\r
+\r
+ *ptr++ = c + 0x30;\r
+ fFirst = 1;\r
+ }\r
+ else\r
+ {\r
+ *ptr++ = ' ';\r
+ }\r
+ }\r
+\r
+ *ptr++ = 0;\r
+ }\r
+\r
+/* Public functions for CircleOS ---------------------------------------------*/\r
+\r
+/*******************************************************************************\r
+*\r
+* delay_unit\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Called by starting_delay().\r
+*\r
+* @note Not in main.c to avoid inlining.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void delay_unit( void )\r
+ {\r
+ dummycounter++;\r
+ }\r
+\r
+/// @endcond\r
+\r
+/* Public functions ----------------------------------------------------------*/\r
+\r
+/*******************************************************************************\r
+*\r
+* UTIL_GetBat\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Return the batterie tension in mV.\r
+*\r
+* @return Batterie tension in mV.\r
+*\r
+**/\r
+/******************************************************************************/\r
+u16 UTIL_GetBat( void )\r
+ {\r
+#ifdef _ADC\r
+ u16 vbat;\r
+\r
+ // Measure VBAT\r
+ vbat = ADC_ConvertedValue[0]; //*( (u16*)ADC1_DR_Address ); // <=== note changed \r
+ vbat = vbat & 0xFFF;\r
+ vbat = ( vbat * VDD_VOLTAGE_MV ) / 0x1000;\r
+\r
+ return vbat;\r
+#else\r
+ return 0;\r
+#endif\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* UTIL_GetTemp\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Return the Temperature: degrees / 10, Celcius or Fahrenheit.\r
+*\r
+* @return The temperature (C or F) (averaging of several channels).\r
+*\r
+**/\r
+/******************************************************************************/\r
+u16 UTIL_GetTemp( void )\r
+ {\r
+ s32 temp;\r
+ s16 *p=&ADC_ConvertedValue[1]; //intent; point to first of 8 results from same source - use a short name for it!\r
+ \r
+ // Measure temp\r
+ //temp = ADC_ConvertedValue[1];//*( (u16*)ADC1_DR_Address ); \r
+ temp = (p[0]+p[1]+p[2]+p[3]+p[4]+p[5]+p[6]+p[7])/8; //take avg of burst of 8 temp reads. may only help reject hi freq noise a bit\r
+ //will not help reduce mains ripple because conversions are SO FAST!!\r
+ temp = temp & 0xFFF;\r
+ temp = ( temp * VDD_VOLTAGE_MV ) / 0x1000; //finds mV \r
+ temp = (((1400-temp)*100000)/448)+25000; //gives approx temp x 1000 degrees C\r
+ \r
+ //Fahrenheit = 32 + 9 / 5 * Celsius\r
+ if ( fTemperatureInFahrenheit ) \r
+ {\r
+ temp = 32000 + (9 * temp) / 5 ;\r
+ }\r
+ \r
+ return temp / 100;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* UTIL_SetTempMode\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Set the temperature mode (F/C)\r
+*\r
+* @param[in] mode 0: Celcius, 1: Fahrenheit \r
+*\r
+**/\r
+/******************************************************************************/\r
+void UTIL_SetTempMode ( int mode )\r
+ {\r
+ fTemperatureInFahrenheit = mode; \r
+ \r
+ return;\r
+ }\r
+\r
+\r
+/*******************************************************************************\r
+*\r
+* UTIL_GetUsb\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Return the USB connexion state.\r
+*\r
+* @return The USB connexion state.\r
+*\r
+**/\r
+/******************************************************************************/\r
+u8 UTIL_GetUsb( void )\r
+ {\r
+ GPIO_InitStructure.GPIO_Pin = GPIO_USB_PIN;\r
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;\r
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;\r
+\r
+ GPIO_Init( GPIOx_USB, &GPIO_InitStructure );\r
+\r
+ return ( GPIO_ReadInputDataBit( GPIOx_USB, GPIO_USB_PIN ) == Bit_SET );\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* UTIL_uint2str\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Convert an <b>unsigned</b> integer into a string.\r
+*\r
+* @param [out] ptr The output string.\r
+* @param [in] X The unsigned value to convert.\r
+* @param [in] digit The number of digits in the output string.\r
+* @param [in] fillwithzero \li 0 fill with blanks.\r
+* \li 1 fill with zeros.\r
+*\r
+**/\r
+/********************************************************************************/\r
+void UTIL_uint2str( char* ptr, u32 X, u16 digit, int fillwithzero )\r
+ {\r
+ _int2str( ptr, X, digit, 1, fillwithzero);\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* UTIL_int2str\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Convert a <b>signed</b> integer into a string.\r
+*\r
+* @param [out] ptr The output string.\r
+* @param [in] X The unsigned value to convert.\r
+* @param [in] digit The number of digits in the output string.\r
+* @param [in] fillwithzero \li 0 fill with blanks.\r
+* \li 1 fill with zeros.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void UTIL_int2str( char* ptr, s32 X, u16 digit, int fillwithzero )\r
+ {\r
+ _int2str( ptr, X, digit, 0, fillwithzero);\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* UTIL_SetPll\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Set clock frequency (lower to save energy)\r
+*\r
+* @param [in] speed New clock speed from very low to very fast.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void UTIL_SetPll( enum eSpeed speed )\r
+ {\r
+ /* Select PLL as system clock source */\r
+ RCC_SYSCLKConfig( RCC_SYSCLKSource_HSI );\r
+\r
+ /* Enable PLL */\r
+ RCC_PLLCmd( DISABLE );\r
+\r
+ if( ( speed < SPEED_VERY_LOW ) || ( speed > SPEED_VERY_HIGH ) )\r
+ {\r
+ speed = SPEED_MEDIUM;\r
+ } \r
+\r
+ CurrentSpeed = speed; \r
+\r
+ switch( speed )\r
+ {\r
+ // 18 MHz\r
+ case SPEED_VERY_LOW :\r
+ /* PLLCLK = 6MHz * 3 = 18 MHz */\r
+ RCC_PLLConfig( RCC_PLLSource_HSE_Div2, RCC_PLLMul_3 );\r
+ break;\r
+\r
+ // 24MHz\r
+ case SPEED_LOW :\r
+ /* PLLCLK = 12MHz * 2 = 24 MHz */\r
+ RCC_PLLConfig( RCC_PLLSource_HSE_Div1, RCC_PLLMul_2 );\r
+ break;\r
+\r
+ // 36MHz\r
+ case SPEED_MEDIUM : \r
+ default :\r
+ /* PLLCLK = 12MHz * 3 = 36 MHz */\r
+ RCC_PLLConfig( RCC_PLLSource_HSE_Div1, RCC_PLLMul_3 );\r
+ break;\r
+\r
+ // 48MHz\r
+ case SPEED_HIGH :\r
+ /* PLLCLK = 12MHz * 4 = 48 MHz */\r
+ RCC_PLLConfig( RCC_PLLSource_HSE_Div1, RCC_PLLMul_4 );\r
+ break;\r
+\r
+ // 72MHz\r
+ case SPEED_VERY_HIGH :\r
+ /* PLLCLK = 12MHz * 6 = 72 MHz */\r
+ RCC_PLLConfig( RCC_PLLSource_HSE_Div1, RCC_PLLMul_6 );\r
+ break;\r
+ }\r
+\r
+ /* Enable PLL */\r
+ RCC_PLLCmd( ENABLE );\r
+\r
+ /* Wait till PLL is ready */\r
+ while( RCC_GetFlagStatus( RCC_FLAG_PLLRDY ) == RESET )\r
+ { ; }\r
+\r
+ /* Select PLL as system clock source */\r
+ RCC_SYSCLKConfig( RCC_SYSCLKSource_PLLCLK );\r
+\r
+ /* Wait till PLL is used as system clock source */\r
+ while( RCC_GetSYSCLKSource() != 0x08 )\r
+ { ; }\r
+\r
+ /* This function fills a RCC_ClocksTypeDef structure with the current frequencies\r
+ of different on chip clocks (for debug purpose) */\r
+ RCC_GetClocksFreq( &RCC_ClockFreq );\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* UTIL_GetPll\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Get clock frequency\r
+*\r
+* @return Current clock speed from very low to very fast.\r
+*\r
+**/\r
+/******************************************************************************/\r
+enum eSpeed UTIL_GetPll( void )\r
+ {\r
+ return CurrentSpeed;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* UTIL_GetVersion\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Get CircleOS version.\r
+*\r
+* @return A pointer to a string containing the CircleOS version.\r
+*\r
+**/\r
+/******************************************************************************/\r
+const char* UTIL_GetVersion( void )\r
+ {\r
+ return OsVersion;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* UTIL_ReadBackupRegister\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Reads data from the specified Data Backup Register.\r
+*\r
+* @param[in] BKP_DR Specifies the Data Backup Register. This parameter can be BKP_DRx where x:[1, 10]\r
+*\r
+* @return The content of the specified Data Backup Register.\r
+*\r
+**/\r
+/******************************************************************************/\r
+u16 UTIL_ReadBackupRegister( u16 BKP_DR )\r
+ {\r
+ return (*(vu16 *)( BKP_BASE + 4 * BKP_DR ) );\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* UTIL_WriteBackupRegister\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Writes data to the specified Data Backup Register.\r
+*\r
+* @param[in] BKP_DR Specifies the Data Backup Register. This parameter can be BKP_DRx where x:[1, 10]\r
+* @param[in] Data The data to write.\r
+*\r
+**/\r
+/********************************************************************************/\r
+void UTIL_WriteBackupRegister( u16 BKP_DR, u16 Data )\r
+ {\r
+ *(vu16 *)( BKP_BASE + 4 * BKP_DR ) = Data;\r
+ }\r
+\r
+\r
+/*******************************************************************************\r
+*\r
+* UTIL_SetIrqHandler\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Redirect an IRQ handler.\r
+*\r
+* @param[in] Offs Address in the NVIC table\r
+* @param[in] pHDL Pointer to the handler.\r
+*\r
+**/\r
+/********************************************************************************/\r
+void UTIL_SetIrqHandler( int Offs, tHandler pHDL )\r
+ {\r
+ if ( (Offs >= 8) && (Offs<0x100) )\r
+ *(tHandler *)( CIRCLEOS_RAM_BASE + Offs ) = pHDL;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* UTIL_GetIrqHandler\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Get the current IRQ handler.\r
+* Since (V1.6) the vector table is relocated in RAM, the vectors can be easily modified\r
+* by the applications. \r
+*\r
+* @param[in] Offs Address in the NVIC table\r
+* @return A pointer to the current handler.\r
+*\r
+**/\r
+/********************************************************************************/\r
+tHandler UTIL_GetIrqHandler( int Offs )\r
+ {\r
+ if ( (Offs >= 8) && (Offs<0x100) )\r
+ return *(tHandler *)( CIRCLEOS_RAM_BASE + Offs );\r
+ }\r
+\r
+\r
+\r
+/*******************************************************************************\r
+*\r
+* UTIL_SetSchHandler\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Redirect a SCHEDULER handler.\r
+* Set the current SCHEDULER handler. With UTIL_GetSchHandler(), these functions \r
+* allow to take the control of the different handler. You can: \r
+* - replace them (get-Set)by your own handler\r
+* - disable a handler: UTIL_SetSchHandler(Ix,0); \r
+* - create a new handler (using the unused handlers).\r
+* See scheduler.c to understand further...\r
+*\r
+* @param[in] Ix ID if the SCH Handler\r
+* @param[in] pHDL Pointer to the handler.\r
+*\r
+**/\r
+/********************************************************************************/\r
+void UTIL_SetSchHandler( enum eSchHandler Ix, tHandler pHDL )\r
+ {\r
+ if (Ix<SCH_HDL_MAX)\r
+ SchHandler[Ix] = pHDL;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* UTIL_GetSchHandler\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Get the current SCHEDULER handler. With UTIL_SetSchHandler(), these functions \r
+* allow to take the control of the different handler. You can: \r
+* - replace them (get-Set)by your own handler\r
+* - disable a handler: UTIL_SetSchHandler(Ix,0); \r
+* - create a new handler (using the unused handlers).\r
+* See scheduler.c to understand further...\r
+*\r
+* @param[in] Ix ID is the SCH Handler\r
+* @return A pointer to the current handler.\r
+*\r
+**/\r
+/********************************************************************************/\r
+tHandler UTIL_GetSchHandler( enum eSchHandler Ix )\r
+ {\r
+ if ( Ix<SCH_HDL_MAX ) \r
+ return SchHandler [Ix] ; \r
+ }\r
+\r
--- /dev/null
+/********************* (C) COPYRIGHT 2007 RAISONANCE S.A.S. *******************/\r
+/**\r
+*\r
+* @file adc.h\r
+* @brief ADC initialization header file.\r
+* @author FL\r
+* @date 07/2007\r
+*\r
+**/\r
+/******************************************************************************/\r
+\r
+/* Define to prevent recursive inclusion ---------------------------------------*/\r
+#ifndef __ADC_H\r
+#define __ADC_H\r
+\r
+#define ADC1_DR_Address ((u32)0x4001244C)\r
+\r
+#endif /*__ADC_H */\r
--- /dev/null
+/********************* (C) COPYRIGHT 2007 RAISONANCE S.A.S. *******************/\r
+/**\r
+*\r
+* @file buzzer.c\r
+* @brief Buzzer dedicated functions with RTTTL format support.\r
+* @author IB\r
+* @date 07/2007\r
+*\r
+**/\r
+/******************************************************************************/\r
+\r
+/* Includes ------------------------------------------------------------------*/\r
+#include "circle.h"\r
+\r
+/// @cond Internal\r
+\r
+/* Private typedef -----------------------------------------------------------*/\r
+\r
+/*! Octaves */\r
+enum eOctave {\r
+ OCT_440 = 0, /*!< o = 5 */\r
+ OCT_880 = 1, /*!< o = 6 */\r
+ OCT_1760 = 2, /*!< o = 7 */\r
+ OCT_3520 = 3, /*!< o = 8 */\r
+ OCT_7040 = 4 /*!< o = 9 */\r
+ } octave;\r
+\r
+/*! Notes */\r
+enum eNotes {\r
+ NOTE_PAUSE = 0, /*!< P */\r
+ NOTE_LA = 1, /*!< A */\r
+ NOTE_LA_H = 8+1, /*!< A# */\r
+ NOTE_SI = 2, /*!< B */\r
+ NOTE_DO = 3, /*!< C */\r
+ NOTE_DO_H = 8+3, /*!< C# */\r
+ NOTE_RE = 4, /*!< D */\r
+ NOTE_RE_H = 8+4, /*!< D# */\r
+ NOTE_MI = 5, /*!< E */\r
+ NOTE_FA = 6, /*!< F */\r
+ NOTE_FA_H = 8+6, /*!< F# */\r
+ NOTE_SOL = 7, /*!< G */\r
+ NOTE_SOL_H = 8+7 /*!< G# */\r
+ } note;\r
+\r
+/* Private define ------------------------------------------------------------*/\r
+#define BUZZER_SHORTBEEP_DURATION 100\r
+#define BUZZER_LONGBEEP_DURATION 1000\r
+#define RTTTL_SEP ':'\r
+ \r
+/* Private macro -------------------------------------------------------------*/\r
+/* Private variables ---------------------------------------------------------*/\r
+int buzz_counter = 0;\r
+int buzz_in_progress = 0;\r
+static TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;\r
+static TIM_OCInitTypeDef TIM_OCInitStructure;\r
+u16 CCR_Val = 0x2EE0;\r
+enum BUZZER_mode Buzzer_Mode = BUZZER_UNDEF;\r
+u32 Buzzer_Counter = 0;\r
+\r
+// For the melody.\r
+const u8* CurrentMelody = 0;\r
+const u8* CurrentMelodySTART = 0;\r
+u8 DefaultOctave = OCT_880;\r
+u8 DefaultDuration = 4;\r
+u16 DefaultBeats = 63;\r
+\r
+u16 Note_Freq [16] = {\r
+ 0, //pause\r
+ 440, //A=LA\r
+ 494, //B=SI\r
+ 524, //C=DO\r
+ 588, //D=RE\r
+ 660, //E=MI\r
+ 698, //F=FA\r
+ 784, //G=SOL\r
+ 0, // "8+n" for "NOTE#"\r
+ 466, //A#=LA#\r
+ 0,\r
+ 544, //C#=DO#\r
+ 622, //D#=RE#\r
+ 0,\r
+ 740, //F#=FA#\r
+ 830 //G#=SOL#\r
+ };\r
+\r
+/* Private function prototypes -----------------------------------------------*/\r
+static void PlayMusic( void );\r
+static void BUZZER_SetFrequency( u16 freq );\r
+\r
+/* Private functions ---------------------------------------------------------*/\r
+\r
+/*******************************************************************************\r
+*\r
+* PlayMusic\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Play the next note of the current melody.\r
+*\r
+**/\r
+/******************************************************************************/\r
+static void PlayMusic( void )\r
+ {\r
+ u8 duration = DefaultDuration;\r
+ u8 c;\r
+\r
+ // Discard blank characters\r
+ while ( *CurrentMelody == ' ')\r
+ {\r
+ CurrentMelody++;\r
+ }\r
+\r
+ // Check whether a duration is present.\r
+ if ( (*CurrentMelody > '0') && (*CurrentMelody < '9') )\r
+ {\r
+ duration = *CurrentMelody++ - '0';\r
+\r
+ if ( (*CurrentMelody > '0') && (*CurrentMelody < '9') )\r
+ {\r
+ duration *= 10;\r
+ duration += (*CurrentMelody++ - '0');\r
+ }\r
+ }\r
+\r
+ Buzzer_Counter = ( (32/duration) * 256L * 32L) / DefaultBeats;\r
+ Buzzer_Counter*= (RCC_ClockFreq.SYSCLK_Frequency / 12000000L); //Adapt to HCLK1\r
+\r
+ //read the note\r
+ c = *CurrentMelody++;\r
+\r
+ if ( (c >= 'a') && (c <= 'z') )\r
+ {\r
+ c+=('A'-'a');\r
+ }\r
+\r
+ if ( c == 'P' )\r
+ {\r
+ note = NOTE_PAUSE;\r
+ }\r
+ else if ( (c >= 'A') && (c <= 'G') )\r
+ {\r
+ note = (c - 'A') + NOTE_LA;\r
+\r
+ if ( *CurrentMelody == '#' )\r
+ {\r
+ note|=0x8;\r
+ CurrentMelody++;\r
+ }\r
+ }\r
+\r
+ octave = DefaultOctave;\r
+ c = *CurrentMelody;\r
+\r
+ if ( (c>= '5') && (c<= '8') )\r
+ {\r
+ octave = OCT_440 + (c-'5');\r
+ CurrentMelody++;\r
+ }\r
+\r
+ BUZZER_SetFrequency ( (Note_Freq [ note ] * (1<<octave)));\r
+\r
+ //discard delimiter and ignore special duration\r
+ while ( (c = *CurrentMelody++) != 0 )\r
+ {\r
+ if ( c==',')\r
+ break;\r
+ }\r
+\r
+ if ( *(CurrentMelody-1)==0 )\r
+ {\r
+ CurrentMelody = 0;\r
+ }\r
+\r
+ if ( c == 0 )\r
+ {\r
+ BUZZER_SetMode ( BUZZER_OFF );\r
+ }\r
+ }\r
+\r
+/***********************************************************************************\r
+*\r
+* BUZZER_SetFrequency\r
+*\r
+************************************************************************************/\r
+/**\r
+*\r
+* Set the buzzer frequency\r
+*\r
+* @param[in] freq New frequency.\r
+*\r
+**/\r
+/********************************************************************************/\r
+void BUZZER_SetFrequency ( u16 freq )\r
+ {\r
+ /* Calculate the frequency (depend on the PCLK1 clock value) */\r
+ CCR_Val = (RCC_ClockFreq.PCLK1_Frequency / freq);\r
+\r
+ TIM_TimeBaseStructure.TIM_Period = CCR_Val * 2;\r
+ TIM_TimeBaseStructure.TIM_Prescaler = 0x0;\r
+ TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;\r
+ TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;\r
+\r
+ TIM_TimeBaseInit( TIM3, &TIM_TimeBaseStructure );\r
+\r
+ /* Output Compare Toggle Mode configuration: Channel3 */\r
+ TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;\r
+ TIM_OCInitStructure.TIM_Channel = TIM_Channel_3;\r
+ TIM_OCInitStructure.TIM_Pulse = CCR_Val;\r
+\r
+ TIM_OCInit( TIM3, &TIM_OCInitStructure );\r
+ TIM_OC3PreloadConfig( TIM3, TIM_OCPreload_Enable );\r
+ }\r
+\r
+/* Public functions for CircleOS ---------------------------------------------*/\r
+\r
+/*******************************************************************************\r
+*\r
+* BUZZER_Init\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Buzzer Initialization\r
+*\r
+* @attention This function must <b>NOT</b> be called by the user.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void BUZZER_Init( void )\r
+ {\r
+ GPIO_InitTypeDef GPIO_InitStructure;\r
+\r
+ /* Enable GPIOB clock */\r
+ RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE );\r
+\r
+ /* GPIOB Configuration: TIM3 3in Output */\r
+ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;\r
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;\r
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;\r
+\r
+ GPIO_Init( GPIOB, &GPIO_InitStructure );\r
+\r
+ /* TIM3 Configuration ------------------------------------------------------*/\r
+ /* TIM3CLK = 18 MHz, Prescaler = 0x0, TIM3 counter clock = 18 MHz */\r
+ /* CC update rate = TIM3 counter clock / (2* CCR_Val) ~= 750 Hz */\r
+\r
+ /* Enable TIM3 clock */\r
+ RCC_APB1PeriphClockCmd( RCC_APB1Periph_TIM3, ENABLE );\r
+ TIM_DeInit( TIM3 );\r
+ TIM_TimeBaseStructInit( &TIM_TimeBaseStructure );\r
+ TIM_OCStructInit( &TIM_OCInitStructure );\r
+\r
+ /* Time base configuration */\r
+ TIM_TimeBaseStructure.TIM_Period = 0xFFFF;\r
+ TIM_TimeBaseStructure.TIM_Prescaler = 0x0;\r
+ TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;\r
+ TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;\r
+\r
+ TIM_TimeBaseInit( TIM3, &TIM_TimeBaseStructure );\r
+\r
+ /* Output Compare Toggle Mode configuration: Channel3 */\r
+ TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle;\r
+ TIM_OCInitStructure.TIM_Channel = TIM_Channel_3;\r
+ TIM_OCInitStructure.TIM_Pulse = CCR_Val;\r
+\r
+ TIM_OCInit( TIM3, &TIM_OCInitStructure );\r
+ TIM_OC3PreloadConfig( TIM3, TIM_OCPreload_Disable );\r
+ BUZZER_SetFrequency( 440 );\r
+\r
+ /* Enable TIM3 IT */\r
+ TIM_ITConfig( TIM3, TIM_IT_CC3, ENABLE );\r
+\r
+ Buzzer_Mode = BUZZER_OFF;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* BUZZER_Handler\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Called by the CircleOS scheduler to manage Buzzer tasks.\r
+*\r
+* @attention This function must <b>NOT</b> be called by the user.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void BUZZER_Handler( void )\r
+ {\r
+ int fSetOFF = 0;\r
+\r
+ if ( Buzzer_Mode == BUZZER_PLAYMUSIC )\r
+ {\r
+ if ( Buzzer_Counter == 0 )\r
+ {\r
+ PlayMusic();\r
+ }\r
+ else \r
+ {\r
+ Buzzer_Counter--;\r
+ }\r
+\r
+ return;\r
+ }\r
+ else if ( Buzzer_Mode == BUZZER_SHORTBEEP )\r
+ {\r
+ if ( Buzzer_Counter++ == (BUZZER_SHORTBEEP_DURATION) ) \r
+ {\r
+ Buzzer_Mode = BUZZER_OFF;\r
+\r
+ return;\r
+ }\r
+ if ( Buzzer_Counter == (BUZZER_SHORTBEEP_DURATION/2) )\r
+ {\r
+ fSetOFF = 1;\r
+ }\r
+ }\r
+ else if ( Buzzer_Mode == BUZZER_LONGBEEP )\r
+ {\r
+ if ( Buzzer_Counter++ == (BUZZER_LONGBEEP_DURATION) )\r
+ {\r
+ Buzzer_Mode = BUZZER_OFF;\r
+\r
+ return;\r
+ }\r
+ if ( Buzzer_Counter > (BUZZER_LONGBEEP_DURATION/2) )\r
+ {\r
+ fSetOFF = 1;\r
+ }\r
+ }\r
+\r
+ if ( fSetOFF == 1 )\r
+ {\r
+ TIM_Cmd(TIM3, DISABLE);\r
+ }\r
+ }\r
+\r
+/// @endcond\r
+\r
+/* Public functions ----------------------------------------------------------*/\r
+\r
+/*******************************************************************************\r
+*\r
+* BUZZER_GetMode\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Get the current buzzer mode.\r
+*\r
+* @return Current buzzer mode.\r
+*\r
+**/\r
+/******************************************************************************/\r
+enum BUZZER_mode BUZZER_GetMode( void )\r
+ {\r
+ return Buzzer_Mode;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* BUZZER_SetMode\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Set new buzzer mode\r
+*\r
+* @param[in] mode New buzzer mode.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void BUZZER_SetMode( enum BUZZER_mode mode )\r
+ {\r
+ Buzzer_Mode = mode;\r
+ Buzzer_Counter = 0;\r
+\r
+ switch ( mode )\r
+ {\r
+ case BUZZER_PLAYMUSIC :\r
+ PlayMusic(); //start melody\r
+ /* no break */\r
+\r
+ case BUZZER_LONGBEEP :\r
+ case BUZZER_SHORTBEEP :\r
+ case BUZZER_ON :\r
+ TIM_Cmd( TIM3, ENABLE );\r
+ break;\r
+\r
+ case BUZZER_OFF :\r
+ TIM_Cmd( TIM3, DISABLE );\r
+ break;\r
+ }\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* BUZZER_PlayMusic\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Plays the provided melody that follows the RTTTL Format.\r
+*\r
+* Official Specification\r
+* @verbatim\r
+<ringing-tones-text-transfer-language> :=\r
+ <name> <sep> [<defaults>] <sep> <note-command>+\r
+<name> := <char>+ ; maximum name length 10 characters\r
+<sep> := ":"\r
+<defaults> :=\r
+ <def-note-duration> |\r
+ <def-note-scale> |\r
+ <def-beats>\r
+<def-note-duration> := "d=" <duration>\r
+<def-note-scale> := "o=" <scale>\r
+<def-beats> := "b=" <beats-per-minute>\r
+<beats-per-minute> := 25,28,...,900 ; decimal value\r
+; If not specified, defaults are\r
+ ;\r
+ ; 4 = duration\r
+ ; 6 = scale\r
+ ; 63 = beats-per-minute\r
+<note-command> :=\r
+ [<duration>] <note> [<scale>] [<special-duration>] <delimiter>\r
+ <duration> :=\r
+ "1" | ; Full 1/1 note\r
+ "2" | ; 1/2 note\r
+ "4" | ; 1/4 note\r
+ "8" | ; 1/8 note\r
+ "16" | ; 1/16 note\r
+ "32" | ; 1/32 note\r
+<note> :=\r
+ "P" | ; pause\r
+ "C" |\r
+ "C#" |\r
+ "D" |\r
+ "D#" |\r
+ "E" |\r
+ "F" |\r
+ "F#" |\r
+ "G" |\r
+ "G#" |\r
+ "A" |\r
+ "A#" |\r
+ "B"\r
+<scale> :=\r
+ "5" | ; Note A is 440Hz\r
+ "6" | ; Note A is 880Hz\r
+ "7" | ; Note A is 1.76 kHz\r
+ "8" ; Note A is 3.52 kHz\r
+<special-duration> :=\r
+ "." ; Dotted note\r
+<delimiter> := ","\r
+@endverbatim\r
+*\r
+* @param[in] melody New melody to play on buzzer.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void BUZZER_PlayMusic (const u8 *melody )\r
+ {\r
+ u8 c;\r
+ u8 default_id = 0;\r
+ u16 default_val = 0;\r
+\r
+ DefaultOctave = OCT_880; // Default for the default Octave.\r
+ DefaultDuration = 4; // Default for the default Duration.\r
+ DefaultBeats = 63;\r
+ CurrentMelody = melody;\r
+ CurrentMelodySTART = melody;\r
+\r
+ while( *CurrentMelody != RTTTL_SEP )\r
+ {\r
+ if( *CurrentMelody == 0 ) \r
+ {\r
+ return;\r
+ }\r
+\r
+ // Discard the melody name.\r
+ CurrentMelody++; \r
+ }\r
+\r
+ // Now read the defaults if any.\r
+ for( ++CurrentMelody; *CurrentMelody != RTTTL_SEP; CurrentMelody++ )\r
+ {\r
+ if( *CurrentMelody == 0 ) \r
+ {\r
+ return;\r
+ }\r
+\r
+ // Discard any blank.\r
+ while ( *CurrentMelody == ' ' ) \r
+ {\r
+ CurrentMelody++;\r
+ }\r
+\r
+ c = *CurrentMelody;\r
+\r
+ if ( c == RTTTL_SEP )\r
+ {\r
+ break;\r
+ }\r
+\r
+ if ( (c >= 'a') && (c <= 'z') )\r
+ {\r
+ c+=('A'-'a');\r
+ }\r
+\r
+ if ( (c >= 'A') && (c <= 'Z') )\r
+ {\r
+ default_id = c;\r
+ continue;\r
+ }\r
+\r
+ if ( (c >= '0') && (c <= '9') )\r
+ {\r
+ default_val *= 10;\r
+ default_val += (c-'0');\r
+ c = * (CurrentMelody + 1 );\r
+\r
+ if ( (c >= '0') && (c <= '9') )\r
+ {\r
+ continue;\r
+ }\r
+\r
+ if ( default_id == 'D' )\r
+ {\r
+ DefaultDuration = default_val;\r
+ }\r
+ else if ( default_id == 'O' )\r
+ {\r
+ DefaultOctave = default_val - 5;\r
+\r
+ if ( DefaultOctave > OCT_7040 )\r
+ DefaultOctave = OCT_440;\r
+ }\r
+ else if ( default_id == 'B' )\r
+ {\r
+ DefaultBeats = default_val;\r
+\r
+ if ( ( DefaultBeats == 0 ) || ( DefaultBeats > 500 ) )\r
+ DefaultBeats = 63;\r
+ }\r
+\r
+ default_val = 0;\r
+ default_id = 0;\r
+ }\r
+ }\r
+\r
+ BUZZER_SetMode( BUZZER_PLAYMUSIC );\r
+ }\r
--- /dev/null
+/********************* (C) COPYRIGHT 2007 RAISONANCE S.A.S. *******************/\r
+/**\r
+*\r
+* @file circle.h\r
+* @brief General header for the CircleOS project.\r
+* @author FL\r
+* @date 07/2007\r
+* @version 1.5\r
+*\r
+* It contains the list of the utilities functions organized by sections \r
+* (MEMS, LCD, POINTER, ...)\r
+*\r
+* @date 10/2007\r
+* @version 1.5 types of OutX_F64 and OutX_F256 changed to u32 (same for Y and Z)\r
+**/\r
+/******************************************************************************/\r
+\r
+#include "scheduler.h"\r
+\r
+/* Define to prevent recursive inclusion -------------------------------------*/\r
+#ifndef __CIRCLE_H\r
+#define __CIRCLE_H\r
+\r
+//-------------------------------- General -------------------------------------\r
+/* Defines ------------------------------------------------------------------*/\r
+#define VDD_VOLTAGE_MV 3300 //Voltage (mV) of the STM32\r
+#define FA_TABLE 0x8006000\r
+#define TIM2 ((TIM_TypeDef *) TIM2_BASE)\r
+#define CIRCLEOS_RAM_BASE 0x20004000\r
+\r
+/* Variables ----------------------------------------------------------------*/\r
+extern GPIO_InitTypeDef GPIO_InitStructure;\r
+\r
+/* Utilities -----------------------------------------------------------------*/\r
+void UTIL_uint2str( char *ptr , u32 X, u16 digit, int fillwithzero );\r
+void UTIL_int2str( char *ptr , s32 X, u16 digit, int fillwithzero );\r
+u16 UTIL_ReadBackupRegister( u16 BKP_DR );\r
+void UTIL_WriteBackupRegister( u16 BKP_DR, u16 Data );\r
+u16 UTIL_GetBat( void );\r
+u8 UTIL_GetUsb( void );\r
+u16 UTIL_GetTemp ( void ) ;\r
+void UTIL_SetTempMode ( int mode );\r
+//typedef void (*tHandler) ( void );\r
+void UTIL_SetIrqHandler ( int , tHandler );\r
+tHandler UTIL_GetIrqHandler ( int );\r
+extern u16 ADC_ConvertedValue[17];\r
+\r
+\r
+extern enum eSpeed\r
+ {\r
+ SPEED_VERY_LOW = 1,\r
+ SPEED_LOW = 2,\r
+ SPEED_MEDIUM = 3,\r
+ SPEED_HIGH = 4,\r
+ SPEED_VERY_HIGH = 5\r
+ } CurrentSpeed;\r
+\r
+enum eSchHandler\r
+ {\r
+ LED_SCHHDL_ID = 0,\r
+ BUTTON_SCHHDL_ID = 1,\r
+ BUZZER_SCHHDL_ID = 2,\r
+ MENU_SCHHDL_ID = 3,\r
+ POINTER_SCHHDL_ID = 4,\r
+ LCD_SCHHDL_ID = 5,\r
+ DRAW_SCHHDL_ID = 6,\r
+ RTC_SCHHDL_ID = 7,\r
+\r
+ UNUSED0_SCHHDL_ID = 8,\r
+ UNUSED1_SCHHDL_ID = 9,\r
+ UNUSED2_SCHHDL_ID = 10,\r
+ UNUSED3_SCHHDL_ID = 11,\r
+ UNUSED4_SCHHDL_ID = 12,\r
+ UNUSED5_SCHHDL_ID = 13,\r
+ UNUSED6_SCHHDL_ID = 14,\r
+ UNUSED7_SCHHDL_ID = 15 \r
+ } dummy_var ; //for doxygen\r
+\r
+void UTIL_SetSchHandler ( enum eSchHandler , tHandler );\r
+tHandler UTIL_GetSchHandler ( enum eSchHandler );\r
+#define NULL_SCHHDL (0)\r
+#define LAST_SCHHDL ((tHandler)(-1))\r
+\r
+\r
+void UTIL_SetPll( enum eSpeed speed );\r
+const char* UTIL_GetVersion( void );\r
+enum eSpeed UTIL_GetPll( void );\r
+extern RCC_ClocksTypeDef RCC_ClockFreq;\r
+extern u8 fTemperatureInFahrenheit; /*!< 1 : Fahrenheit, 0 : Celcius (default). */\r
+\r
+\r
+//--------------------------------- MEMS ------------------------------------\r
+\r
+/* Exported types ------------------------------------------------------------*/\r
+typedef enum\r
+ {\r
+ V12=0,\r
+ V3=1,\r
+ V6=2,\r
+ V9=3\r
+} Rotate_H12_V_Match_TypeDef;\r
+\r
+typedef struct\r
+ {\r
+ s16 OutX ;\r
+ s16 OutX_F4 ;\r
+ s16 OutX_F16 ;\r
+ s32 OutX_F64 ;\r
+ s32 OutX_F256 ;\r
+ s16 OutY ;\r
+ s16 OutY_F4 ;\r
+ s16 OutY_F16 ;\r
+ s32 OutY_F64 ;\r
+ s32 OutY_F256 ;\r
+ s16 OutZ ;\r
+ s16 OutZ_F4 ;\r
+ s16 OutZ_F16 ;\r
+ s32 OutZ_F64 ;\r
+ s32 OutZ_F256 ;\r
+ s16 Shocked ;\r
+ s16 RELATIVE_X ;\r
+ s16 RELATIVE_Y ;\r
+ s16 DoubleClick ;\r
+ } tMEMS_Info;\r
+\r
+extern tMEMS_Info MEMS_Info;\r
+\r
+/* Exported functions --------------------------------------------------------*/\r
+void MEMS_Init(void);\r
+void MEMS_Handler(void);\r
+void MEMS_GetPosition(s16 * pX, s16* pY);\r
+void MEMS_SetNeutral( void );\r
+void MEMS_GetRotation(Rotate_H12_V_Match_TypeDef * H12);\r
+tMEMS_Info* MEMS_GetInfo (void);\r
+u8 MEMS_ReadID(void);\r
+\r
+//---------------------------------- LED -------------------------------------\r
+\r
+/* Exported types ------------------------------------------------------------*/\r
+enum LED_mode { LED_UNDEF = -1, LED_OFF = 0, LED_ON = 1, LED_BLINKING_LF = 2, LED_BLINKING_HF = 3 };\r
+enum LED_id { LED_GREEN = 0, LED_RED = 1};\r
+\r
+/* Exported functions --------------------------------------------------------*/\r
+void LED_Init (void);\r
+void LED_Handler_hw ( enum LED_id id );\r
+void LED_Handler ( void );\r
+void LED_Set ( enum LED_id id, enum LED_mode mode );\r
+\r
+//-------------------------------- ADC --------------------------------------\r
+\r
+/* Exported functions --------------------------------------------------------*/\r
+void ADConverter_Init (void);\r
+\r
+\r
+//==============================================================================\r
+//-------------------------------- SHUTDOWN ---------------------------------\r
+/* Exported functions --------------------------------------------------------*/\r
+void SHUTDOWN_Action (void);\r
+\r
+//-------------------------------- BUTTON -----------------------------------\r
+/* Exported types ------------------------------------------------------------*/\r
+enum BUTTON_mode { BUTTON_DISABLED = -1, BUTTON_ONOFF = 0,\r
+ BUTTON_ONOFF_FORMAIN = 1, BUTTON_WITHCLICK = 2 };\r
+enum BUTTON_state { BUTTON_UNDEF = -1, BUTTON_RELEASED = 0, BUTTON_PUSHED = 1,\r
+ BUTTON_PUSHED_FORMAIN = 2 , BUTTON_CLICK = 3, BUTTON_DBLCLICK = 4 };\r
+\r
+/* Exported functions -------------------------------------------------------*/\r
+void BUTTON_Init (void);\r
+void BUTTON_Handler(void);\r
+enum BUTTON_state BUTTON_GetState();\r
+void BUTTON_SetMode( enum BUTTON_mode mode);\r
+enum BUTTON_mode BUTTON_GetMode ( void ) ;\r
+void BUTTON_WaitForRelease();\r
+\r
+//-------------------------------- POINTER ----------------------------------\r
+\r
+/* Exported types ------------------------------------------------------------*/\r
+enum POINTER_mode { POINTER_UNDEF = -1, POINTER_OFF = 0, POINTER_ON = 1, POINTER_MENU = 2, POINTER_APPLICATION = 3, POINTER_RESTORE_LESS = 4 };\r
+enum POINTER_state { POINTER_S_UNDEF = -1, POINTER_S_DISABLED = 0, POINTER_S_ENABLED = 1 };\r
+\r
+/* Exported defines ----------------------------------------------------------*/\r
+#define POINTER_WIDTH 7\r
+\r
+typedef struct\r
+ {\r
+ s16 xPos ;\r
+ s16 yPos ;\r
+ s16 shift_PosX ;\r
+ s16 shift_PosY ;\r
+ s16 X_PosMin ;\r
+ s16 Y_PosMin ;\r
+ s16 X_PosMax ;\r
+ s16 Y_PosMax ;\r
+ } tPointer_Info;\r
+\r
+extern tPointer_Info POINTER_Info ;\r
+\r
+/* Exported vars -------------------------------------------------------------*/\r
+extern unsigned char *BallPointerBmpSize;\r
+extern unsigned char BallPointerBmp [POINTER_WIDTH], *CurrentPointerBmp,*CurrentPointerSize;\r
+extern u16 CurrentPointerColor;\r
+extern u16 BallColor;\r
+extern s16 POINTER_X_PosMin;\r
+extern s16 POINTER_Y_PosMin;\r
+extern s16 POINTER_X_PosMax;\r
+extern s16 POINTER_Y_PosMax;\r
+extern unsigned char PointerAreaStore [2*POINTER_WIDTH*POINTER_WIDTH];\r
+\r
+/* Exported functions --------------------------------------------------------*/\r
+extern void POINTER_Init ( void ) ;\r
+void POINTER_Handler(void);\r
+u16 POINTER_GetCurrentAngleStart ( void );\r
+void POINTER_SetCurrentAngleStart ( u16 );\r
+u16 POINTER_GetCurrentSpeedOnAngle ( void );\r
+void POINTER_SetCurrentSpeedOnAngle ( u16 newspeed );\r
+void POINTER_SetMode( enum POINTER_mode mode);\r
+void POINTER_SetCurrentPointer( unsigned char width, unsigned char height, unsigned char *bmp);\r
+enum POINTER_state POINTER_GetState(void);\r
+void POINTER_Draw (u8 Line, u8 Column, u8 Width, u8 Height, u8 *Bmp);\r
+void POINTER_SetRect ( s16 x, s16 y, s16 width, s16 height ); //Restrict the move of the pointer to a rectangle\r
+void POINTER_SetRectScreen ( void ); //Remove any space restriction for the pointer moves.\r
+void POINTER_Save (u8 Line, u8 Column, u8 Width, u8 Height);\r
+void POINTER_Restore (u8 Line, u8 Column, u8 Width, u8 Height);\r
+u16 POINTER_GetPos(void); //Return the poistion of the cursor (x=lower byte, y = upperbyte)\r
+void POINTER_SetPos ( u16 x, u16 y );\r
+typedef void (*tAppPtrMgr) ( int , int );\r
+void POINTER_SetApplication_Pointer_Mgr( tAppPtrMgr mgr );\r
+tPointer_Info* POINTER_GetInfo ( void );\r
+u16 POINTER_GetColor ( void ) ;\r
+void POINTER_SetColor ( u16 color );\r
+enum POINTER_mode POINTER_GetMode( void );\r
+void POINTER_SetCurrentAreaStore ( u8 *ptr );\r
+void LCD_SetRotateScreen ( u8 RotateScreen);\r
+u8 LCD_GetRotateScreen ();\r
+void LCD_SetScreenOrientation (Rotate_H12_V_Match_TypeDef ScreenOrientation);\r
+Rotate_H12_V_Match_TypeDef LCD_GetScreenOrientation ();\r
+\r
+//---------------------------------- LCD -----------------------------------\r
+\r
+/* Exported defines ----------------------------------------------------------*/\r
+//RGB is 16-bit coded as G2G1G0B4 B3B2B1B0 R4R3R2R1 R0G5G4G3\r
+#define RGB_MAKE(xR,xG,xB) ( ( (xG&0x07)<<13 ) + ( (xG)>>5 ) + \\r
+ ( ((xB)>>3) << 8 ) + \\r
+ ( ((xR)>>3) << 3 ) )\r
+#define RGB_RED 0x00F8\r
+#define RGB_BLACK 0x0000\r
+#define RGB_WHITE 0xffff\r
+#define RGB_BLUE 0x1F00\r
+#define RGB_GREEN 0xE007\r
+#define RGB_YELLOW (RGB_GREEN|RGB_RED)\r
+#define RGB_MAGENTA (RGB_BLUE|RGB_RED)\r
+#define RGB_LIGHTBLUE (RGB_BLUE|RGB_GREEN)\r
+#define RGB_ORANGE (RGB_RED | 0xE001) //green/2 + red\r
+#define RGB_PINK (RGB_MAGENTA | 0xE001) //green/2 + magenta\r
+\r
+// SCREEN Infos\r
+#define SCREEN_WIDTH 128\r
+#define SCREEN_HEIGHT 128\r
+#define CHIP_SCREEN_WIDTH 132\r
+#define CHIP_SCREEN_HEIGHT 132\r
+\r
+// Characters Infos\r
+#define CHAR_WIDTH 7\r
+#define CHAR_HEIGHT 14\r
+\r
+// PWM rates.\r
+#define BACKLIGHTMIN 0x1000 /*!< Minimal PWM rate. */\r
+#define DEFAULT_CCR_BACKLIGHTSTART 0x8000 /*!< Default PWM rate. */\r
+\r
+/* Exported vars -------------------------------------------------------------*/\r
+extern Rotate_H12_V_Match_TypeDef Screen_Orientation;\r
+extern int rotate_screen;\r
+\r
+/* Exported functions --------------------------------------------------------*/\r
+void LCD_Init(void);\r
+void LCD_Handler(void);\r
+void LCD_SetRect_For_Cmd( s16 x, s16 y, s16 width, s16 height );\r
+u16 LCD_GetPixel( u8 x, u8 y );\r
+void LCD_DrawPixel( u8 x, u8 y, u16 Pixel );\r
+void LCD_SendLCDCmd( u8 Cmd );\r
+void LCD_SendLCDData( u8 Data );\r
+u32 LCD_ReadLCDData( void );\r
+void LCD_FillRect( u16 x, u16 y, u16 width, u16 height, u16 color );\r
+void LCD_DrawRect( u16 x, u16 y, u16 width, u16 height, u16 color );\r
+void LCD_DisplayChar( u8 x, u8 y, u8 Ascii, u16 TextColor, u16 BGndColor, u16 CharMagniCoeff );\r
+void LCD_RectRead( u16 x, u16 y, u16 width, u16 height, u8* bmp );\r
+void LCD_SetBackLight (u32 newBacklightStart);\r
+u32 LCD_GetBackLight ( void );\r
+void LCD_SetBackLightOff( void );\r
+void LCD_SetBackLightOn( void );\r
+\r
+#include "lcd.h"\r
+\r
+//---------------------------------- DRAW ----------------------------------\r
+\r
+/* Exported functions --------------------------------------------------------*/\r
+void DRAW_Init(void);\r
+void DRAW_Clear(void);\r
+void DRAW_Handler(void);\r
+void DRAW_SetDefaultColor (void);\r
+void DRAW_SetImage(const u16 *imageptr, u8 x, u8 y, u8 width, u8 height);\r
+void DRAW_SetImageBW(const u8 *imageptr, u8 x, u8 y, u8 width, u8 height);\r
+void DRAW_SetLogoBW(void);\r
+void DRAW_DisplayVbat(u8 x, u8 y);\r
+void DRAW_DisplayTime(u8 x, u8 y);\r
+void DRAW_DisplayTemp(u8 x, u8 y);\r
+void DRAW_DisplayString( u8 x, u8 y, const u8 *ptr, u8 len );\r
+void DRAW_DisplayStringInverted( u8 x, u8 y, const u8 *ptr, u8 len );\r
+u16 DRAW_GetCharMagniCoeff(void);\r
+void DRAW_SetCharMagniCoeff(u16 Coeff);\r
+u16 DRAW_GetTextColor(void);\r
+void DRAW_SetTextColor(u16 Color);\r
+u16 DRAW_GetBGndColor(void);\r
+void DRAW_SetBGndColor(u16 Color);\r
+void DRAW_Batt( void );\r
+void DRAW_Line (s16 x1, s16 y1, s16 x2, s16 y2, u16 color );\r
+\r
+/* Exported vars -------------------------------------------------------------*/\r
+extern int fDisplayTime;\r
+\r
+\r
+//-------------------------------- BUZZER -----------------------------------\r
+\r
+/* Exported defines ----------------------------------------------------------*/\r
+#define BUZZER_BEEP BUZZER_SHORTBEEP\r
+\r
+/* Exported type def ---------------------------------------------------------*/\r
+enum BUZZER_mode { BUZZER_UNDEF = -1, BUZZER_OFF = 0, BUZZER_ON = 1,\r
+ BUZZER_SHORTBEEP = 2, BUZZER_LONGBEEP = 3, BUZZER_PLAYMUSIC = 4 };\r
+\r
+/* Exported type functions ---------------------------------------------------*/\r
+void BUZZER_Init(void);\r
+void BUZZER_Handler(void);\r
+void BUZZER_SetMode( enum BUZZER_mode mode);\r
+enum BUZZER_mode BUZZER_GetMode( void );\r
+void BUZZER_PlayMusic (const u8 *melody );\r
+\r
+//--------------------------------- MENU -----------------------------------\r
+\r
+/* Exported defines ----------------------------------------------------------*/\r
+#define MENU_MAXITEM 6\r
+#define APP_VOID ((tMenuItem *)(-1))\r
+#define MAX_APP_MENU_SIZE 10\r
+#define MAXAPP 64\r
+#define MAX_MENUAPP_SIZE 3\r
+#define REMOVE_MENU 0x01\r
+#define APP_MENU 0x02\r
+\r
+enum MENU_code { MENU_LEAVE = 0, MENU_CONTINUE = 1, MENU_REFRESH = 2,\r
+ MENU_CHANGE = 3, MENU_CONTINUE_COMMAND = 4};\r
+\r
+/* Exported type def ---------------------------------------------------------*/\r
+typedef struct\r
+ {\r
+ const char *Text;\r
+ enum MENU_code (*Fct_Init) ( void );\r
+ enum MENU_code (*Fct_Manage)( void );\r
+ int fMenuFlag;\r
+ } tMenuItem;\r
+\r
+typedef struct\r
+ {\r
+ unsigned fdispTitle : 1;\r
+ const char *Title;\r
+ int NbItems;\r
+ int LgMax;\r
+ int XPos, YPos;\r
+ int XSize, YSize;\r
+ unsigned int SelectedItem;\r
+ tMenuItem Items[MENU_MAXITEM];\r
+ } tMenu;\r
+\r
+/* Exported vars -------------------------------------------------------------*/\r
+extern tMenu MainMenu, *CurrentMenu;\r
+extern tMenuItem *CurrentCommand;\r
+extern int BGndColor_Menu;\r
+extern int TextColor_Menu;\r
+\r
+/* Exported type functions ---------------------------------------------------*/\r
+enum MENU_code fColor ( void ) ;\r
+void MENU_Set ( tMenu *mptr );\r
+void MENU_Handler ( void ) ;\r
+extern enum MENU_code MENU_Quit ( void );\r
+void MENU_Remove ( void ) ;\r
+void MENU_Question ( char *str, int *answer );\r
+void MENU_Print ( char *str );\r
+enum MENU_code MENU_SetLevel_Ini( void );\r
+enum MENU_code MENU_SetLevel_Mgr( u32 *value, u32 value_range [] ) ;\r
+void MENU_ClearCurrentCommand( void );\r
+void MENU_SetLevelTitle(u8* title);\r
+void MENU_SetTextColor ( int TextColor );\r
+int MENU_GetTextColor ( void );\r
+void MENU_SetBGndColor ( int BGndColor );\r
+int MENU_GetBGndColor ( void );\r
+extern enum MENU_code fQuit ( void ) ;\r
+void MENU_ClearCurrentMenu(void);\r
+\r
+//-------------------------------- BACKLIGHT --------------------------------\r
+\r
+/* Exported type functions ---------------------------------------------------*/\r
+void BackLight_Configuration (void);\r
+void ManageBackLight (void);\r
+void BackLight_Change (void);\r
+\r
+//-------------------------------- RTC --------------------------------------\r
+\r
+/* Exported type functions ---------------------------------------------------*/\r
+void RTC_Init(void);\r
+void RTC_SetTime (u32 THH, u32 TMM, u32 TSS);\r
+void RTC_GetTime (u32 * THH, u32 * TMM, u32 * TSS);\r
+void RTC_DisplayTime ( void );\r
+\r
+//Backup registers\r
+#define BKP_SYS1 1\r
+#define BKP_SYS2 2\r
+#define BKP_SYS3 3\r
+#define BKP_SYS4 4\r
+#define BKP_SYS5 5\r
+#define BKP_SYS6 6\r
+#define BKP_USER1 7\r
+#define BKP_USER2 8\r
+#define BKP_USER3 9\r
+#define BKP_USER4 10\r
+\r
+#define BKP_PLL (BKP_SYS2)\r
+#define BKP_BKLIGHT (BKP_SYS3)\r
+\r
+//--------------------------------- Application --------------------------------\r
+void (*Application_Pointer_Mgr) ( int sposX, int sposY);\r
+\r
+#endif /*__CIRCLE_H */\r
--- /dev/null
+/********************* (C) COPYRIGHT 2007 RAISONANCE S.A.S. *******************/\r
+/**\r
+*\r
+* @file circle_api.h\r
+* @brief General header for the STM32-circle projects.\r
+* @author FL\r
+* @date 07/2007\r
+* @version 1.2\r
+* @date 10/2007\r
+* @version 1.5 types of OutX_F64 and OutX_F256 changed to u32 (same for Y and Z)\r
+* @date 10/2007\r
+* @version 1.6 Add the IRQ handler replacement\r
+*\r
+* It contains the list of the utilities functions organized by sections\r
+* (MEMS, LCD, POINTER, ...)\r
+*\r
+**/\r
+/*******************************************************************************\r
+*\r
+* Use this header with version 1.5 or later of the OS.\r
+*\r
+* For a complete documentation on the CircleOS, please go to:\r
+* http://www.stm32circle.com\r
+*\r
+*******************************************************************************/\r
+\r
+#include "stm32f10x_lib.h"\r
+\r
+/* Define to prevent recursive inclusion -------------------------------------*/\r
+#ifndef __CIRCLE_API_H\r
+#define __CIRCLE_API_H\r
+\r
+//-------------------------------- General -------------------------------------\r
+\r
+/**\r
+* @enum eSpeed\r
+* @brief Clock speeds.\r
+*\r
+* Available clock speeds.\r
+**/\r
+extern enum eSpeed\r
+ {\r
+ SPEED_VERY_LOW = 1,\r
+ SPEED_LOW = 2,\r
+ SPEED_MEDIUM = 3,\r
+ SPEED_HIGH = 4,\r
+ SPEED_VERY_HIGH = 5\r
+ } CurrentSpeed;\r
+enum eSchHandler\r
+ {\r
+ LED_SCHHDL_ID = 0,\r
+ BUTTON_SCHHDL_ID = 1,\r
+ BUZZER_SCHHDL_ID = 2,\r
+ MENU_SCHHDL_ID = 3,\r
+ POINTER_SCHHDL_ID = 4,\r
+ LCD_SCHHDL_ID = 5,\r
+ DRAW_SCHHDL_ID = 6,\r
+ RTC_SCHHDL_ID = 7,\r
+\r
+ UNUSED0_SCHHDL_ID = 8,\r
+ UNUSED1_SCHHDL_ID = 9,\r
+ UNUSED2_SCHHDL_ID = 10,\r
+ UNUSED3_SCHHDL_ID = 11,\r
+ UNUSED4_SCHHDL_ID = 12,\r
+ UNUSED5_SCHHDL_ID = 13,\r
+ UNUSED6_SCHHDL_ID = 14,\r
+ UNUSED7_SCHHDL_ID = 15 \r
+ }; \r
+\r
+\r
+/// @cond Internal\r
+\r
+extern RCC_ClocksTypeDef RCC_ClockFreq;\r
+\r
+/* Typedefs ------------------------------------------------------------------*/\r
+typedef u32 (*tCircleFunc0 ) (void);\r
+typedef u32 (*tCircleFunc1 ) (u32 param1);\r
+typedef u32 (*tCircleFunc2 ) (u32 param1, u32 param2);\r
+typedef u32 (*tCircleFunc3 ) (u32 param1, u32 param2, u32 param3);\r
+typedef u32 (*tCircleFunc4 ) (u32 param1, u32 param2, u32 param3, u32 param4);\r
+typedef u32 (*tCircleFunc5 ) (u32 param1, u32 param2, u32 param3, u32 param4, u32 param5);\r
+typedef u32 (*tCircleFunc6 ) (u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6);\r
+\r
+extern tCircleFunc0 (*ptrCircle_API) [];\r
+\r
+/* Defines -------------------------------------------------------------------*/\r
+#define Circle_API (*ptrCircle_API)\r
+\r
+#define POINTER_ID 0x00\r
+#define DRAW_ID 0x20\r
+#define LCD_ID 0x40\r
+#define LED_ID 0x60\r
+#define MEMS_ID 0x70\r
+#define BUTTON_ID 0x80\r
+#define BUZZER_ID 0x90\r
+#define MENU_ID 0xA0\r
+#define UTIL_ID 0xB0\r
+#define RTC_ID 0xC0\r
+\r
+// UTIL functions definition.\r
+#define UTIL_SET_PLL_ID (UTIL_ID + 0) // Set clock frequency.\r
+#define UTIL_GET_PLL_ID (UTIL_ID + 1) // Get clock frequency.\r
+#define UTIL_UINT2STR_ID (UTIL_ID + 2) // Convert an unsigned integer into a string.\r
+#define UTIL_INT2STR_ID (UTIL_ID + 3) // Convert a signed integer into a string.\r
+#define UTIL_GET_VERSION_ID (UTIL_ID + 4) // Get CircleOS version.\r
+#define UTIL_READ_BACKUPREGISTER_ID (UTIL_ID + 5) // Reads data from the specified Data Backup Register.\r
+#define UTIL_WRITE_BACKUPREGISTER_ID (UTIL_ID + 6) // Writes data to the specified Data Backup Register.\r
+#define UTIL_GET_BAT_ID (UTIL_ID + 7) // Return the batterie tension in mV.\r
+#define UTIL_GET_USB_ID (UTIL_ID + 8) // Return the USB connexion state.\r
+#define UTIL_SET_IRQ_HANDLER_ID (UTIL_ID + 9) // Replace an irq handler\r
+#define UTIL_GET_IRQ_HANDLER_ID (UTIL_ID + 10) // Get the current irq handler\r
+#define UTIL_SET_SCH_HANDLER_ID (UTIL_ID + 11) // Replace an irq handler\r
+#define UTIL_GET_SCH_HANDLER_ID (UTIL_ID + 12) // Get the current irq handler\r
+#define UTIL_GET_TEMP_ID (UTIL_ID + 13) // Return the temperature (1/100 C)\r
+#define UTIL_SET_TEMPMODE_ID (UTIL_ID + 14) // Set the temperature mode (0: mCelcius, 1: mFahrenheit\r
+typedef void (*tHandler) (void);\r
+\r
+// Prototypes.\r
+#define UTIL_SetPll(a) ((tCircleFunc1)(Circle_API [UTIL_SET_PLL_ID])) ((u32)(a)) // void UTIL_SetPll( enum eSpeed speed );\r
+#define UTIL_GetPll() (u32) (((tCircleFunc0)(Circle_API [UTIL_GET_PLL_ID])) ()) // enum eSpeed UTIL_GetPll( void );\r
+#define UTIL_uint2str(a,b,c,d) ((tCircleFunc4)(Circle_API [UTIL_UINT2STR_ID])) ((u32)(a),(u32)(b),(u32)(c),(u32)(d)) // void uint2str( char* ptr , u32 X, u16 digit, int fillwithzero );\r
+#define UTIL_int2str(a,b,c,d) ((tCircleFunc4)(Circle_API [UTIL_INT2STR_ID])) ((u32)(a),(u32)(b),(u32)(c),(u32)(d)) // void int2str( char* ptr , s32 X, u16 digit, int fillwithzero );\r
+#define UTIL_GetVersion() (u32) (((tCircleFunc0)(Circle_API [UTIL_GET_VERSION_ID])) ()) // char* UTIL_GetVersion( void );\r
+#define UTIL_ReadBackupRegister(a) (u32) (((tCircleFunc1)(Circle_API [UTIL_READ_BACKUPREGISTER_ID])) ((u32)(a))) // u16 UTIL_ReadBackupRegister( u16 BKP_DR );\r
+#define UTIL_WriteBackupRegister(a,b) ((tCircleFunc2)(Circle_API [UTIL_WRITE_BACKUPREGISTER_ID])) ((u32)(a),(u32)(b)) // void UTIL_WriteBackupRegister( u16 BKP_DR, u16 Data );\r
+#define UTIL_GetBat() (u32) (((tCircleFunc0)(Circle_API [UTIL_GET_BAT_ID])) ()) // u16 UTIL_GetBat( void );\r
+#define UTIL_GetUsb() (u32) (((tCircleFunc0)(Circle_API [UTIL_GET_USB_ID])) ()) // u8 UTIL_GetUsb( void );\r
+#define UTIL_SetIrqHandler(a,b) (((tCircleFunc2)(Circle_API [UTIL_SET_IRQ_HANDLER_ID])) ((int)a,(tHandler)b)) // void UTIL_SetIrqHandler ( int , tHandler );\r
+#define UTIL_GetIrqHandler(a) (u32) (((tCircleFunc1)(Circle_API [UTIL_GET_IRQ_HANDLER_ID])) ((int)a)) // tHandler* UTIL_GetIrqHandler ( int );\r
+#define UTIL_SetSchHandler(a,b) (((tCircleFunc2)(Circle_API [UTIL_SET_SCH_HANDLER_ID])) ((int)a,(tHandler)b)) // void UTIL_SetSchHandler ( int , tHandler );\r
+#define UTIL_GetSchHandler(a) (u32) (((tCircleFunc1)(Circle_API [UTIL_GET_SCH_HANDLER_ID])) ((int)a)) // tHandler* UTIL_GetSchHandler ( int );\r
+#define UTIL_GetTemp() (u32) (((tCircleFunc0)(Circle_API [UTIL_GET_TEMP_ID])) ()) // u16 UTIL_GetTemp( void );\r
+#define UTIL_SetTempMode(a) (((tCircleFunc1)(Circle_API [UTIL_SET_TEMPMODE_ID])) ((int)a)) // void UTIL_SetTempMode( int mode );\r
+\r
+/// @endcond\r
+\r
+//--------------------------------- MEMS ------------------------------------\r
+\r
+/* Exported types ------------------------------------------------------------*/\r
+\r
+/**\r
+* @enum Rotate_H12_V_Match_TypeDef\r
+* @brief The 4 possible rotations.\r
+*\r
+* The 4 possible MEM rotations.\r
+**/\r
+typedef enum\r
+ {\r
+ V12 = 0, /*!< No rotation. */\r
+ V3 = 1, /*!< Rotation to the right.*/\r
+ V6 = 2, /*!< Rotation to the left. */\r
+ V9 = 3 /*!< Half a rotation. */\r
+ } Rotate_H12_V_Match_TypeDef;\r
+\r
+/**\r
+* @struct tMEMS_Info\r
+* @brief MEMS state description.\r
+**/\r
+typedef struct\r
+ {\r
+ s16 OutX; /*!< MEMS X position. */\r
+ s16 OutX_F4; /*!< MEMS X position filtered on 4 values. */\r
+ s16 OutX_F16; /*!< MEMS X position filtered on 16 values. */\r
+ s32 OutX_F64; /*!< MEMS X position filtered on 64 values. */\r
+ s32 OutX_F256; /*!< MEMS X position filtered on 256 values. */\r
+ s16 OutY; /*!< MEMS Y position. */\r
+ s16 OutY_F4; /*!< MEMS Y position filtered on 4 values. */\r
+ s16 OutY_F16; /*!< MEMS Y position filtered on 16 values. */\r
+ s32 OutY_F64; /*!< MEMS Y position filtered on 64 values. */\r
+ s32 OutY_F256; /*!< MEMS Y position filtered on 256 values. */\r
+ s16 OutZ; /*!< MEMS Z position. */\r
+ s16 OutZ_F4; /*!< MEMS Z position filtered on 4 values. */\r
+ s16 OutZ_F16; /*!< MEMS Z position filtered on 16 values. */\r
+ s32 OutZ_F64; /*!< MEMS Z position filtered on 64 values. */\r
+ s32 OutZ_F256; /*!< MEMS Z position filtered on 256 values. */\r
+ s16 Shocked; /*!< MEMS shock counter (incremented...) */\r
+ s16 RELATIVE_X; /*!< MEMS relative X position. */\r
+ s16 RELATIVE_Y; /*!< MEMS relative Y position. */\r
+ s16 DoubleClick; /*!< MEMS DoubleClick counter(incremented...)*/\r
+ } tMEMS_Info;\r
+\r
+/// @cond Internal\r
+\r
+/* Exported defines ----------------------------------------------------------*/\r
+\r
+// MEMS functions definition\r
+#define MEMS_GET_POSITION_ID (MEMS_ID + 0) // Return the current (relative) Mems information\r
+#define MEMS_GET_ROTATION_ID (MEMS_ID + 1) // Return the current screen orientation of the circle\r
+#define MEMS_SET_NEUTRAL_ID (MEMS_ID + 2) // Set the current position as "neutral position"\r
+#define MEMS_GET_INFO_ID (MEMS_ID + 3) // Return Mems informations\r
+\r
+// Prototypes\r
+#define MEMS_GetPosition(a,b) ((tCircleFunc2)(Circle_API [MEMS_GET_POSITION_ID])) ((u32)(a),(u32)(b)) // void MEMS_GetPosition(s16 * pX, s16* pY);\r
+#define MEMS_GetRotation(a) ((tCircleFunc1)(Circle_API [MEMS_GET_ROTATION_ID])) ((u32)(a)) // void MEMS_GetRotation(Rotate_H12_V_Match_TypeDef * H12);\r
+#define MEMS_SetNeutral() ((tCircleFunc0)(Circle_API [MEMS_GET_ROTATION_ID])) () // void MEMS_SetNeutral( void );\r
+#define MEMS_GetInfo() ( (tMEMS_Info*) (((tCircleFunc0)(Circle_API [MEMS_GET_INFO_ID])) ())) // tMEMS_Info* MEMS_GetInfo (void)\r
+\r
+/// @endcond\r
+\r
+//-------------------------------- POINTER ----------------------------------\r
+\r
+/* Exported types ------------------------------------------------------------*/\r
+\r
+/**\r
+* @enum POINTER_mode\r
+* @brief Available pointer modes.\r
+*\r
+* Description of all the available pointer modes in CircleOS.\r
+**/\r
+enum POINTER_mode\r
+ {\r
+ POINTER_UNDEF = -1, /*!< Pointer's mode is unknown! */\r
+ POINTER_OFF = 0, /*!< Pointer isn't managed and displayed. */\r
+ POINTER_ON = 1, /*!< Pointer mode used in main screen. */\r
+ POINTER_MENU = 2, /*!< Pointer management is used to select item menu (but pointer isn't displayed). */\r
+ POINTER_APPLICATION = 3, /*!< The managment of pointer depend of extern application. */\r
+ POINTER_RESTORE_LESS = 4 /*!< The background isn't restored (to go faster). */\r
+ };\r
+\r
+/**\r
+* @enum POINTER_state\r
+* @brief The different pointer modes.\r
+*\r
+* Despite beeing in a undefined state, the pointer can be disabled or enable.\r
+**/\r
+enum POINTER_state\r
+ {\r
+ POINTER_S_UNDEF = -1, /*!< Pointer state is unknown! */\r
+ POINTER_S_DISABLED = 0, /*!< Pointer is disabled. */\r
+ POINTER_S_ENABLED = 1 /*!< Pointer is enabled. */\r
+ };\r
+\r
+/**\r
+* @struct tPointer_Info\r
+* @brief Pointer position description.\r
+**/\r
+typedef struct\r
+ {\r
+ s16 xPos; /*!< X position of pointer. */\r
+ s16 yPos; /*!< Y position of pointer. */\r
+ s16 shift_PosX; /*!< Pointer speed on X axis. */\r
+ s16 shift_PosY; /*!< Pointer speed on Y axis */\r
+ s16 X_PosMin; /*!< Minimum position on X axis. */\r
+ s16 Y_PosMin; /*!< Minimum position on Y axis. */\r
+ s16 X_PosMax; /*!< Maximum position on X axis. */\r
+ s16 Y_PosMax; /*!< Maximum position on Y axis. */\r
+ } tPointer_Info;\r
+\r
+/// @cond Internal\r
+\r
+/* Exported defines ---------------------------------------------------------*/\r
+#define POINTER_WIDTH 7\r
+\r
+// POINTER functions definition\r
+#define POINTER_SET_RECT_ID (POINTER_ID + 0) // Set new limits for the move of the pointer\r
+#define POINTER_SETRECTSCREEN_ID (POINTER_ID + 1) // Remove any space restriction for the pointer moves.\r
+#define POINTER_GETCURRENTANGLESTART_ID (POINTER_ID + 2) // Return the current minimum angle to move pointer\r
+#define POINTER_SETCURRENTANGLESTART_ID (POINTER_ID + 3) // Set the current minimum angle to move pointer\r
+#define POINTER_GETCURRENTSPEEDONANGLE_ID (POINTER_ID + 4) // Return the ratio speed / angle\r
+#define POINTER_SETCURRENTSPEEDONANGLE_ID (POINTER_ID + 5) // Set the ratio speed / angle\r
+#define POINTER_SETMODE_ID (POINTER_ID + 6) // Change the current mode of the pointer management\r
+#define POINTER_GETMODE_ID (POINTER_ID + 7) // Return the current mode of the pointer management\r
+#define POINTER_SETCURRENTPOINTER_ID (POINTER_ID + 8) // Set the dimention and bitmap of pointer\r
+#define POINTER_GETSTATE_ID (POINTER_ID + 9) // Return the current state\r
+#define POINTER_DRAW_ID (POINTER_ID + 10) // Draw a pointer\r
+#define POINTER_SAVE_ID (POINTER_ID + 11) // Save the background of the pointer\r
+#define POINTER_RESTORE_ID (POINTER_ID + 12) // Restore the background of the pointer\r
+#define POINTER_GETPOSITION_ID (POINTER_ID + 13) // Return the poistion of the cursor (x=lower byte, y = upperbyte)\r
+#define POINTER_SETPOSITION_ID (POINTER_ID + 14) // Force the position of the pointer in the screen\r
+#define POINTER_SETAPPLICATION_POINTER_MGR_ID (POINTER_ID + 15) // Set the application pointer manager\r
+#define POINTER_SETCOLOR_ID (POINTER_ID + 16) // Set pointer color\r
+#define POINTER_GETCOLOR_ID (POINTER_ID + 17) // Return pointer color\r
+#define POINTER_GETINFO_ID (POINTER_ID + 18) // Return pointer informations\r
+#define POINTER_SET_CURRENT_AREASTORE_ID (POINTER_ID + 19) // Change the current storage area\r
+\r
+// Prototypes\r
+#define POINTER_SetRect(a,b,c,d) ((tCircleFunc4)(Circle_API [POINTER_SET_RECT_ID])) ((u32)(a),(u32)(b),(u32)(c),(u32)(d)) //void POINTER_SetRect ( s16 x, s16 y, s16 width, s16 height ); //Restrict the move of the pointer to a rectangle\r
+#define POINTER_SetRectScreen() ((tCircleFunc0)(Circle_API [POINTER_SETRECTSCREEN_ID])) () //void POINTER_SetRectScreen ( void );\r
+#define POINTER_GetCurrentAngleStart() (u16) (((tCircleFunc0)(Circle_API [POINTER_GETCURRENTANGLESTART_ID])) ()) //u16 POINTER_GetCurrentAngleStart ( void );\r
+#define POINTER_SetCurrentAngleStart(a) ((tCircleFunc1)(Circle_API [POINTER_SETCURRENTANGLESTART_ID])) ((u32)(a)) //void POINTER_SetCurrentAngleStart ( u16 );\r
+#define POINTER_GetCurrentSpeedOnAngle() (u16) (((tCircleFunc0)(Circle_API [POINTER_GETCURRENTSPEEDONANGLE_ID])) ()) //u16 POINTER_GetCurrentSpeedOnAngle ( void );\r
+#define POINTER_SetCurrentSpeedOnAngle(a) ((tCircleFunc1)(Circle_API [POINTER_SETCURRENTSPEEDONANGLE_ID])) ((u32)(a)) //void POINTER_SetCurrentSpeedOnAngle ( u16 newspeed );\r
+#define POINTER_SetMode(a) ((tCircleFunc1)(Circle_API [POINTER_SETMODE_ID])) ((u32)(a)) //void POINTER_SetMode( enum POINTER_mode mode);\r
+#define POINTER_GetMode() (enum POINTER_mode) (((tCircleFunc0)(Circle_API [POINTER_GETMODE_ID])) ()) //enum POINTER_mode POINTER_GetMode( void );\r
+#define POINTER_SetCurrentPointer(a,b,c) ((tCircleFunc3)(Circle_API [POINTER_SETCURRENTPOINTER_ID])) ((u32)(a),(u32)(b),(u32)(c)) //void POINTER_SetCurrentPointer( unsigned char width, unsigned char height, unsigned char *bmp);\r
+#define POINTER_GetState() (enum POINTER_state) (((tCircleFunc0)(Circle_API [POINTER_GETSTATE_ID])) ()) //enum POINTER_state POINTER_GetState(void);\r
+#define POINTER_Draw(a,b,c,d,e) ((tCircleFunc5)(Circle_API [POINTER_DRAW_ID])) ((u32)(a),(u32)(b),(u32)(c),(u32)(d),(u32)(e)) //void POINTER_Draw (u8 Line, u8 Column, u8 Width, u8 Height, u8 *Bmp);\r
+#define POINTER_Save(a,b,c,d) ((tCircleFunc4)(Circle_API [POINTER_SAVE_ID])) ((u32)(a),(u32)(b),(u32)(c),(u32)(d)) //void POINTER_Save (u8 Line, u8 Column, u8 Width, u8 Height);\r
+#define POINTER_Restore(a,b,c,d) ((tCircleFunc4)(Circle_API [POINTER_RESTORE_ID])) ((u32)(a),(u32)(b),(u32)(c),(u32)(d)) //void POINTER_Restore (u8 Line, u8 Column, u8 Width, u8 Height);\r
+#define POINTER_GetPos() (u16) (((tCircleFunc0)(Circle_API [POINTER_GETPOSITION_ID])) ()) //u16 POINTER_GetPos(void);\r
+#define POINTER_SetPos(a,b) ((tCircleFunc2)(Circle_API [POINTER_SETPOSITION_ID])) ((u32)(a),(u32)(b)) //void POINTER_SetPos ( u16 x, u16 y );\r
+#define POINTER_SetApplication_Pointer_Mgr(a) ((tCircleFunc1)(Circle_API [POINTER_SETAPPLICATION_POINTER_MGR_ID])) ((u32)(a)) //void POINTER_SetApplication_Pointer_Mgr( tAppPtrMgr mgr );\r
+#define POINTER_SetColor(a) ((tCircleFunc1)(Circle_API [POINTER_SETCOLOR_ID])) ((u32)(a)) //void POINTER_SetColor ( u16 color )\r
+#define POINTER_GetColor() (u16) (((tCircleFunc0)(Circle_API [POINTER_GETCOLOR_ID])) ()) //u16 POINTER_GetColor ( void )\r
+#define POINTER_GetInfo() (tPointer_Info*) (((tCircleFunc0)(Circle_API [POINTER_GETINFO_ID])) ()) //tPointer_Info* POINTER_GetInfo ( void )\r
+#define POINTER_SetCurrentAreaStore(a) ((tCircleFunc1)(Circle_API [POINTER_SET_CURRENT_AREASTORE_ID])) ((u32)(a)) //void POINTER_SetCurrentAreaStore ( u8 *ptr )\r
+\r
+/// @endcond\r
+\r
+//-------------------------------- BUTTON -----------------------------------\r
+\r
+/* Exported types ------------------------------------------------------------*/\r
+\r
+/**\r
+* @enum BUTTON_mode\r
+* @brief Available button modes.\r
+*\r
+* List of all the available button mode in the CircleOS.\r
+**/\r
+enum BUTTON_mode\r
+ {\r
+ BUTTON_DISABLED = -1, /*!< No action on the button is detected. */\r
+ BUTTON_ONOFF = 0, /*!< Detect ON/OFF pression type. */\r
+ BUTTON_ONOFF_FORMAIN = 1, /*!< Special mode for main screen. */\r
+ BUTTON_WITHCLICK = 2 /*!< Currently unused. */\r
+ };\r
+\r
+/**\r
+* @enum BUTTON_state\r
+* @brief CircleOS button states.\r
+*\r
+* Description of the button states provided by CircleOS.\r
+**/\r
+enum BUTTON_state\r
+ {\r
+ BUTTON_UNDEF = -1, /*!< Undefined state. */\r
+ BUTTON_RELEASED = 0, /*!< Button is released. */\r
+ BUTTON_PUSHED = 1, /*!< Button was just pushed. */\r
+ BUTTON_PUSHED_FORMAIN = 2, /*!< Same as BUTTON_PUSHED when button mode is BUTTON_ONOFF_FORMAIN. */\r
+ BUTTON_CLICK = 3, /*!< Currently unused. */\r
+ BUTTON_DBLCLICK = 4 /*!< Currently unused. */\r
+ };\r
+\r
+/// @cond Internal\r
+\r
+/* Exported defines ----------------------------------------------------------*/\r
+\r
+// BUTTON functions definition\r
+#define BUTTON_GETSTATE_ID (BUTTON_ID + 0) // Return state of button\r
+#define BUTTON_SETMODE_ID (BUTTON_ID + 1) // Set button mode\r
+#define BUTTON_GETMODE_ID (BUTTON_ID + 2) // Return button mode\r
+#define BUTTON_WAITFORRELEASE_ID (BUTTON_ID + 3) // Disable temporarily any new button event\r
+\r
+// Prototypes\r
+#define BUTTON_GetState() (enum BUTTON_state) (((tCircleFunc0)(Circle_API [BUTTON_GETSTATE_ID])) ()) // enum BUTTON_state BUTTON_GetState(void);\r
+#define BUTTON_SetMode(a); ((tCircleFunc1)(Circle_API [BUTTON_SETMODE_ID])) ((u32)(a)) // void BUTTON_SetMode( enum BUTTON_mode mode);\r
+#define BUTTON_GetMode(); (enum BUTTON_mode) (((tCircleFunc0)(Circle_API [BUTTON_GETMODE_ID])) ()) // enum BUTTON_mode BUTTON_GetMode ( void ) ;\r
+#define BUTTON_WaitForRelease() ((tCircleFunc0)(Circle_API [BUTTON_WAITFORRELEASE_ID])) () // void BUTTON_WaitForRelease(void);\r
+\r
+/// @endcond\r
+\r
+//---------------------------------- LCD -----------------------------------\r
+\r
+/* Exported defines ----------------------------------------------------------*/\r
+\r
+// RGB is 16-bit coded as G2G1G0B4 B3B2B1B0 R4R3R2R1 R0G5G4G3\r
+#define RGB_MAKE(xR,xG,xB) ( ( (xG&0x07)<<13 ) + ( (xG)>>5 ) + \\r
+ ( ((xB)>>3) << 8 ) + \\r
+ ( ((xR)>>3) << 3 ) ) /*!< Macro to make a LCD compatible color format from RGB. */\r
+\r
+#define RGB_RED 0x00F8 /*!< Predefined color. */\r
+#define RGB_BLACK 0x0000 /*!< Predefined color. */\r
+#define RGB_WHITE 0xffff /*!< Predefined color. */\r
+#define RGB_BLUE 0x1F00 /*!< Predefined color. */\r
+#define RGB_GREEN 0xE007 /*!< Predefined color. */\r
+#define RGB_YELLOW (RGB_GREEN|RGB_RED) /*!< Predefined color. */\r
+#define RGB_MAGENTA (RGB_BLUE|RGB_RED) /*!< Predefined color. */\r
+#define RGB_LIGHTBLUE (RGB_BLUE|RGB_GREEN) /*!< Predefined color. */\r
+#define RGB_ORANGE (RGB_RED | 0xE001) /*!< Predefined color ( Green/2 + red ). */\r
+#define RGB_PINK (RGB_MAGENTA | 0xE001) /*!< Predefined color ( Green/2 + magenta ). */\r
+\r
+// PWM rates.\r
+#define BACKLIGHTMIN 0x1000 /*!< Minimal PWM rate. */\r
+#define DEFAULT_CCR_BACKLIGHTSTART 0x8000 /*!< Default PWM rate. */\r
+\r
+// SCREEN Infos\r
+#define SCREEN_WIDTH 128 /*!< Width of visible screen in pixels. */\r
+#define SCREEN_HEIGHT 128 /*!< Height of visible screen in pixels. */\r
+#define CHIP_SCREEN_WIDTH 132 /*!< Width of screen driven by LCD controller in pixels. */\r
+#define CHIP_SCREEN_HEIGHT 132 /*!< Height of screen driven by LCD controller in pixels. */\r
+\r
+// Characters Infos\r
+#define CHAR_WIDTH 7 /*!< Width of a character. */\r
+#define CHAR_HEIGHT 14 /*!< Height of a character. */\r
+\r
+/// @cond Internal\r
+\r
+// LCD functions definition\r
+#define LCD_SETRECTFORCMD_ID (LCD_ID + 0) // Define the rectangle (for the next command to be applied)\r
+#define LCD_GETPIXEL_ID (LCD_ID + 1) // Read the value of one pixel\r
+#define LCD_DRAWPIXEL_ID (LCD_ID + 2) // Draw a Graphic image on slave LCD.\r
+#define LCD_SENDLCDCMD_ID (LCD_ID + 3) // Send one byte command to LCD LCD.\r
+#define LCD_SENDLCDDATA_ID (LCD_ID + 4) // Display one byte data to LCD LCD.\r
+#define LCD_READLCDDATA_ID (LCD_ID + 5) // Read LCD byte data displayed on LCD LCD.\r
+#define LCD_FILLRECT_ID (LCD_ID + 6) // Fill a rectangle with one color\r
+#define LCD_DRAWRECT_ID (LCD_ID + 7) // Draw a rectangle with one color\r
+#define LCD_DISPLAYCHAR_ID (LCD_ID + 8) // Display one character\r
+#define LCD_RECTREAD_ID (LCD_ID + 9) // Save a rectangle of the monitor RAM\r
+#define LCD_SETBACKLIGHT_ID (LCD_ID + 10) // Modify the PWM rate\r
+#define LCD_GETBACKLIGHT_ID (LCD_ID + 11) // Return the PWM rate\r
+#define LCD_SETROTATESCREEN_ID (LCD_ID + 12) // Enable/Disable screen rotation\r
+#define LCD_GETROTATESCREEN_ID (LCD_ID + 13) // Return screen rotation mode\r
+#define LCD_SETSCREENORIENTATION_ID (LCD_ID + 14) // Set screen orientation\r
+#define LCD_GETSCREENORIENTATION_ID (LCD_ID + 15) // Return screen orientation\r
+#define LCD_SETBACKLIGHT_OFF_ID (LCD_ID + 16) // Switch the LCD back light off.\r
+#define LCD_SETBACKLIGHT_ON_ID (LCD_ID + 17) // Switch the LCD back light on.\r
+\r
+// Prototypes\r
+#define LCD_SetRect_For_Cmd(a,b,c,d) ((tCircleFunc4)(Circle_API [LCD_SETRECTFORCMD_ID])) ((u32)(a),(u32)(b),(u32)(c),(u32)(d)) //void LCD_SetRect_For_Cmd ( s16 x, s16 y, s16 width, s16 height)\r
+#define LCD_GetPixel(a,b) (u16) (((tCircleFunc2)(Circle_API [LCD_GETPIXEL_ID])) ((u32)(a),(u32)(b))) //u16 LCD_GetPixel (u8 x, u8 y)\r
+#define LCD_DrawPixel(a,b,c) ((tCircleFunc3)(Circle_API [LCD_DRAWPIXEL_ID])) ((u32)(a),(u32)(b),(u32)(c)) //void LCD_SetPixel (u8 x, u8 y, u16 Pixel) ;\r
+#define LCD_SendLCDCmd(a) ((tCircleFunc1)(Circle_API [LCD_SENDLCDCMD_ID])) ((u32)(a)) //void LCD_SendLCDCmd(u8 Cmd);\r
+#define LCD_SendLCDData(a) ((tCircleFunc1)(Circle_API [LCD_SENDLCDDATA_ID])) ((u32)(a)) //void LCD_SendLCDData(u8 Data);\r
+#define LCD_ReadLCDData() (u32) (((tCircleFunc0)(Circle_API [LCD_READLCDDATA_ID])) ()) //u32 LCD_ReadLCDData(void);\r
+#define LCD_FillRect(a,b,c,d,e) ((tCircleFunc5)(Circle_API [LCD_FILLRECT_ID])) ((u32)(a),(u32)(b),(u32)(c),(u32)(d),(u32)(e)) //void LCD_FillRect ( u16 x, u16 y, u16 width, u16 height, u16 color );\r
+#define LCD_DrawRect(a,b,c,d,e) ((tCircleFunc5)(Circle_API [LCD_DRAWRECT_ID])) ((u32)(a),(u32)(b),(u32)(c),(u32)(d),(u32)(e)) //void LCD_DrawRect ( u16 x, u16 y, u16 width, u16 height, u16 color );\r
+#define LCD_DisplayChar(a,b,c,d,e,f) ((tCircleFunc6)(Circle_API [LCD_DISPLAYCHAR_ID])) ((u32)(a),(u32)(b),(u32)(c),(u32)(d),(u32)(e),(u32)(f)) //void LCD_DisplayChar(u8 x, u8 y, u8 Ascii, u16 TextColor, u16 BGndColor, u16 CharMagniCoeff);\r
+#define LCD_RectRead(a,b,c,d,e) ((tCircleFunc5)(Circle_API [LCD_RECTREAD_ID])) ((u32)(a),(u32)(b),(u32)(c),(u32)(d),(u32)(e)) //void LCD_RectRead ( u16 x, u16 y, u16 width, u16 height, u8* bmp );\r
+#define LCD_SetBackLight(a) ((tCircleFunc1)(Circle_API [LCD_SETBACKLIGHT_ID])) ((u32)(a)) //void LCD_SetBackLight(u32 newBaclightStart);\r
+#define LCD_GetBackLight() (u32) (((tCircleFunc0)(Circle_API [LCD_GETBACKLIGHT_ID])) ()) //u32 LCD_GetBackLight(void);\r
+#define LCD_SetRotateScreen(a) ((tCircleFunc1)(Circle_API [LCD_SETROTATESCREEN_ID])) ((u32)(a)) //void LCD_SetRotateScreen ( u8 RotateScreen)\r
+#define LCD_GetRotateScreen() (u32) (((tCircleFunc0)(Circle_API [LCD_GETROTATESCREEN_ID])) ()) //u8 LCD_GetRotateScreen (void)\r
+#define LCD_SetScreenOrientation(a) ((tCircleFunc1)(Circle_API [LCD_SETSCREENORIENTATION_ID])) ((u32)(a)) //void LCD_SetScreenOrientation (Rotate_H12_V_Match_TypeDef ScreenOrientation)\r
+#define LCD_GetScreenOrientation() (u32) (((tCircleFunc0)(Circle_API [LCD_GETSCREENORIENTATION_ID])) ()) //Rotate_H12_V_Match_TypeDef LCD_GetScreenOrientation (void)\r
+#define LCD_SetBackLightOff() ((tCircleFunc0)(Circle_API [LCD_SETBACKLIGHT_OFF_ID])) ()\r
+#define LCD_SetBackLightOn() ((tCircleFunc0)(Circle_API [LCD_SETBACKLIGHT_ON_ID])) ()\r
+\r
+/// @endcond\r
+\r
+//---------------------------------- DRAW ----------------------------------\r
+\r
+/// @cond Internal\r
+\r
+/* Exported defines ----------------------------------------------------------*/\r
+\r
+// DRAW functions definition\r
+#define DRAW_SETDEFAULTCOLOR_ID (DRAW_ID + 0) // Reset colors (bgnd + text)\r
+#define DRAW_CLEAR_ID (DRAW_ID + 1) // Clear the LCD display\r
+#define DRAW_SETIMAGE_ID (DRAW_ID + 2) // Draw a colored image\r
+#define DRAW_SETIMAGEBW_ID (DRAW_ID + 3) // Draw a black and white image\r
+#define DRAW_SETLOGOBW_ID (DRAW_ID + 4) // Draw logo\r
+#define DRAW_DISPLAYVBAT_ID (DRAW_ID + 5) // Display the voltage of battery in ascii\r
+#define DRAW_DISPLAYTIME_ID (DRAW_ID + 6) // Display time in ascii\r
+#define DRAW_DISPLAYSTRING_ID (DRAW_ID + 7) // Display a 17char max string of characters\r
+#define DRAW_DISPLAYSTRINGINVERTED_ID (DRAW_ID + 8) // Display a 17char max string of characters with inverted colors\r
+#define DRAW_GETCHARMAGNICOEFF_ID (DRAW_ID + 9) // Return the magnifying value for the characters\r
+#define DRAW_SETCHARMAGNICOEFF_ID (DRAW_ID + 10) // Set the magnifying value for the characters\r
+#define DRAW_GETTEXTCOLOR_ID (DRAW_ID + 11) // Return the current text color\r
+#define DRAW_SETTEXTCOLOR_ID (DRAW_ID + 12) // Set the current text color\r
+#define DRAW_GETBGNDCOLOR_ID (DRAW_ID + 13) // Return the current background color\r
+#define DRAW_SETBGNDCOLOR_ID (DRAW_ID + 14) // Set the current background color\r
+#define DRAW_LINE_ID (DRAW_ID + 15) // Draw a Line between (using Bresenham algorithm) \r
+\r
+//Prototypes\r
+#define DRAW_SetDefaultColor() ((tCircleFunc0)(Circle_API [DRAW_SETDEFAULTCOLOR_ID])) () //void DRAW_SetDefaultColor (void);\r
+#define DRAW_Clear() ((tCircleFunc0)(Circle_API [DRAW_CLEAR_ID])) () //void DRAW_Clear(void);\r
+#define DRAW_SetImage(a,b,c,d,e) ((tCircleFunc5)(Circle_API [DRAW_SETIMAGE_ID])) ((u32)(a),(u32)(b),(u32)(c),(u32)(d),(u32)(e)) //void DRAW_SetImage(const u16 *imageptr, u8 x, u8 y, u8 width, u8 height);\r
+#define DRAW_SetImageBW(a,b,c,d,e) ((tCircleFunc5)(Circle_API [DRAW_SETIMAGEBW_ID])) ((u32)(a),(u32)(b),(u32)(c),(u32)(d),(u32)(e)) //void DRAW_SetImageBW(const u8 *imageptr, u8 x, u8 y, u8 width, u8 height);\r
+#define DRAW_SetLogoBW() ((tCircleFunc0)(Circle_API [DRAW_SETLOGOBW_ID])) () //void DRAW_SetLogoBW(void);\r
+#define DRAW_DisplayVbat(a,b) ((tCircleFunc2)(Circle_API [DRAW_DISPLAYVBAT_ID])) ((u32)(a),(u32)(b)) //void DRAW_DisplayVbat(u8 x, u8 y);\r
+#define DRAW_DisplayTime(a,b) ((tCircleFunc2)(Circle_API [DRAW_DISPLAYTIME_ID])) ((u32)(a),(u32)(b)) //void DRAW_DisplayTime(u8 x, u8 y);\r
+#define DRAW_DisplayString(a,b,c,d) ((tCircleFunc4)(Circle_API [DRAW_DISPLAYSTRING_ID])) ((u32)(a),(u32)(b),(u32)(c),(u32)(d)) //void DRAW_DisplayString( u8 x, u8 y, u8 *ptr, u8 len );\r
+#define DRAW_DisplayStringInverted(a,b,c,d) ((tCircleFunc4)(Circle_API [DRAW_DISPLAYSTRINGINVERTED_ID])) ((u32)(a),(u32)(b),(u32)(c),(u32)(d)) //void DRAW_DisplayStringInverted( u8 x, u8 y, u8 *ptr, u8 len );\r
+#define DRAW_GetCharMagniCoeff() (u16) (((tCircleFunc0)(Circle_API [DRAW_GETCHARMAGNICOEFF_ID])) ()) //u16 DRAW_GetCharMagniCoeff(void);\r
+#define DRAW_SetCharMagniCoeff(a) ((tCircleFunc1)(Circle_API [DRAW_SETCHARMAGNICOEFF_ID])) ((u32)(a)) //void DRAW_SetCharMagniCoeff(u16 Coeff);\r
+#define DRAW_GetTextColor() (u16) (((tCircleFunc0)(Circle_API [DRAW_GETTEXTCOLOR_ID])) ()) //u16 DRAW_GetTextColor(void);\r
+#define DRAW_SetTextColor(a) ((tCircleFunc1)(Circle_API [DRAW_SETTEXTCOLOR_ID])) ((u32)(a)) //void DRAW_SetTextColor(u16 Color);\r
+#define DRAW_GetBGndColor() (u16) (((tCircleFunc0)(Circle_API [DRAW_GETBGNDCOLOR_ID])) ()) //u16 DRAW_GetBGndColor(void);\r
+#define DRAW_SetBGndColor(a) ((tCircleFunc1)(Circle_API [DRAW_SETBGNDCOLOR_ID])) ((u32)(a)) //void DRAW_SetBGndColor(u16 Color);\r
+#define DRAW_Line(a,b,c,d,e) ((tCircleFunc5)(Circle_API [DRAW_LINE_ID])) ((u32)(a),(u32)(b),(u32)(c),(u32)(d),(u32)(e)) //void DRAW_Line(s16 x1, s16 y1, s16 x2, s16 y2, u16 color );\r
+/// @endcond\r
+\r
+//-------------------------------- BUZZER -----------------------------------\r
+\r
+/* Exported type def ---------------------------------------------------------*/\r
+\r
+/**\r
+* @enum BUZZER_mode\r
+* @brief CircleOS buzzer modes.\r
+*\r
+* Without the undefined mode, the CircleOS provides 5 modes for its buzzer.\r
+**/\r
+enum BUZZER_mode\r
+ {\r
+ BUZZER_UNDEF = -1, /*!< undefined mode for buzzer */\r
+ BUZZER_OFF = 0, /*!< The buzzer is put off. */\r
+ BUZZER_ON = 1, /*!< The buzzer is put on. */\r
+ BUZZER_SHORTBEEP = 2, /*!< Make buzzer to bip for a short time */\r
+ BUZZER_LONGBEEP = 3, /*!< Make buzzer to bip for a long time */\r
+ BUZZER_PLAYMUSIC = 4 /*!< Make buzzer to play a music */\r
+ };\r
+\r
+/// @cond Internal\r
+\r
+/* Exported defines ----------------------------------------------------------*/\r
+#define BUZZER_BEEP BUZZER_SHORTBEEP\r
+\r
+// BUZZER functions definition\r
+#define BUZZER_SETMODE_ID (BUZZER_ID + 0) // Set new buzzer mode\r
+#define BUZZER_GETMODE_ID (BUZZER_ID + 1) // Get the current buzzer mode.\r
+#define BUZZER_PLAY_MUSIC_ID (BUZZER_ID + 2) // Plays the provided melody that follows the RTTTL Format.\r
+\r
+// Prototypes\r
+#define BUZZER_SetMode(a) ((tCircleFunc1)(Circle_API [BUZZER_SETMODE_ID])) ((u32)(a)) //void BUZZER_SetMode( enum BUZZER_mode mode);\r
+#define BUZZER_GetMode() (enum BUZZER_mode) (((tCircleFunc0)(Circle_API [BUZZER_GETMODE_ID])) ()) //enum BUZZER_mode BUZZER_GetMode( void );\r
+#define BUZZER_PlayMusic(a) ((tCircleFunc1)(Circle_API [BUZZER_PLAY_MUSIC_ID])) ((u32)(a)) //void BUZZER_PlayMusic (const u8 *melody );\r
+\r
+/// @endcond\r
+\r
+//--------------------------------- MENU -----------------------------------\r
+\r
+/* Exported defines ----------------------------------------------------------*/\r
+#define REMOVE_MENU 0x01 /*!< Menu flag: remove menu when item selected. */\r
+#define APP_MENU 0x02 /*!< Menu flag: item is an application. */\r
+#define MENU_MAXITEM 8 /*!< Maximum number of item in a menu. */\r
+\r
+/* Exported type def ---------------------------------------------------------*/\r
+\r
+/**\r
+* @struct tMenuItem\r
+* @brief Menu item description.\r
+**/\r
+typedef struct\r
+ {\r
+ const char* Text; /*!< Name of Item displayed in menu */\r
+ enum MENU_code (*Fct_Init) ( void ); /*!< First function launched if item is selected. */\r
+ enum MENU_code (*Fct_Manage)( void ); /*!< Second function launched after a "return MENU_CONTINU_COMMAND" in the first function */\r
+ int fRemoveMenu; /*!< Flag to know if remove menu at end */\r
+ } tMenuItem;\r
+\r
+/**\r
+* @struct tMenu\r
+* @brief Menu description.\r
+**/\r
+typedef struct\r
+ {\r
+ unsigned fdispTitle: 1; /*!< Display title is set. */\r
+ const char* Title; /*!< Menu title. */\r
+ int NbItems; /*!< Number of items in the menu ( must be <= MENU_MAXITEM ) */\r
+ int LgMax; /*!< Unused. */\r
+ int XPos; /*!< X position of menu bottom-left corner. */\r
+ int YPos; /*!< Y position of menu bottom-left corner. */\r
+ int XSize; /*!< Unused. */\r
+ int YSize; /*!< Unused. */\r
+ unsigned int SelectedItem; /*!< ID of selected item (0 for first item, 1 for second item, ...) */\r
+ tMenuItem Items[MENU_MAXITEM]; /*!< Items of menu. */\r
+ } tMenu;\r
+\r
+/**\r
+* @enum MENU_code\r
+* @brief Application return values.\r
+*\r
+* List of all the codes available for CircleOS application return values.\r
+**/\r
+enum MENU_code\r
+ {\r
+ MENU_LEAVE = 0, /*!< Leave application. */\r
+ MENU_CONTINUE = 1, /*!< Continue application. */\r
+ MENU_REFRESH = 2, /*!< Refresh current menu. */\r
+ MENU_CHANGE = 3, /*!< Change current menu. */\r
+ MENU_CONTINUE_COMMAND = 4 /*!< Sent by Ini functions.*/\r
+ };\r
+\r
+/// @cond Internal\r
+\r
+/* Exported defines ----------------------------------------------------------*/\r
+\r
+// MENU functions definition\r
+#define MENU_SET_ID (MENU_ID + 0) // Display a menu\r
+#define MENU_REMOVE_ID (MENU_ID + 1) // Remove the current menu, DRAW_Clear and set pointer mode to "POINTER_ON".\r
+#define MENU_QUESTION_ID (MENU_ID + 2) // Dedicated menu for ask question and yes/no responses\r
+#define MENU_PRINT_ID (MENU_ID + 3) // Display a popup menu with a string.\r
+#define MENU_CLEAR_CURRENT_COMMAND_ID (MENU_ID + 4) // Set CurrentCommand to 0\r
+#define MENU_SET_LEVELTITLE_ID (MENU_ID + 5) // Set the title of level menu managed by MENU_SetLevel_Mgr.\r
+#define MENU_SET_TEXTCOLOR_ID (MENU_ID + 6) // Set the color used for text menu.\r
+#define MENU_GET_TEXTCOLOR_ID (MENU_ID + 7) // Return the color used for text menu.\r
+#define MENU_SET_BGNDCOLOR_ID (MENU_ID + 8) // Set the background color used for menu.\r
+#define MENU_GET_BGNDCOLOR_ID (MENU_ID + 9) // Return the background color used for menu.\r
+#define MENU_QUIT_ID (MENU_ID + 10) // Leave the current menu (stand for "cancel" and do a DRAW_Clear)\r
+#define MENU_SET_LEVELINI_ID (MENU_ID + 11) // Initialise a generic function to set a avalue in the range of [0,4]\r
+#define MENU_CLEAR_CURRENT_MENU_ID (MENU_ID + 12) // Set CurrentMenu to 0\r
+#define MENU_SET_LEVEL_MGR_ID (MENU_ID + 13) // Generic function to set a avalue in the range of [0,4] (handling of the control)\r
+\r
+// Prototypes\r
+#define MENU_Set(a) ((tCircleFunc1)(Circle_API [MENU_SET_ID])) ((u32)(a)) //void MENU_Set ( tMenu *mptr );\r
+#define MENU_Remove() ((tCircleFunc0)(Circle_API [MENU_REMOVE_ID])) () //void MENU_Remove ( void ) ;\r
+#define MENU_Question(a,b) ((tCircleFunc2)(Circle_API [MENU_QUESTION_ID])) ((u32)(a),(u32)(b)) //void MENU_Question ( char *str, int *answer );\r
+#define MENU_Print(a) ((tCircleFunc1)(Circle_API [MENU_PRINT_ID])) ((u32)(a)) //void MENU_Print ( char *str );\r
+#define MENU_ClearCurrentCommand() ((tCircleFunc0)(Circle_API [MENU_CLEAR_CURRENT_COMMAND_ID])) () //void MENU_ClearCurrentCommand(void)\r
+#define MENU_SetLevelTitle(a) ((tCircleFunc1)(Circle_API [MENU_SET_LEVELTITLE_ID])) ((u32)(a)) //void MENU_SetLevelTitle(u8* title)\r
+#define MENU_SetTextColor(a) ((tCircleFunc1)(Circle_API [MENU_SET_TEXTCOLOR_ID])) ((u32)(a)) //void MENU_SetTextColor ( int TextColor )\r
+#define MENU_GetTextColor() (u32) (((tCircleFunc0)(Circle_API [MENU_GET_TEXTCOLOR_ID])) ()) //int MENU_GetTextColor ( void )\r
+#define MENU_SetBGndColor(a) ((tCircleFunc1)(Circle_API [MENU_SET_BGNDCOLOR_ID])) ((u32)(a)) //void MENU_SetBGndColor ( int BGndColor )\r
+#define MENU_GetBGndColor() (u32) (((tCircleFunc0)(Circle_API [MENU_GET_BGNDCOLOR_ID])) ()) //int MENU_GetBGndColor ( void )\r
+#define MENU_Quit() (enum MENU_code) (((tCircleFunc0)(Circle_API [MENU_QUIT_ID])) ()) //enum MENU_code MENU_Quit ( void )\r
+#define MENU_SetLevel_Ini() (enum MENU_code) (((tCircleFunc0)(Circle_API [MENU_SET_LEVELINI_ID])) ()) //enum MENU_code MENU_SetLevel_Ini ( void )\r
+#define MENU_ClearCurrentMenu() ((tCircleFunc0)(Circle_API [MENU_CLEAR_CURRENT_MENU_ID])) () //void MENU_ClearCurrentMenu(void)\r
+#define MENU_SetLevel_Mgr(a,b) (enum MENU_code) ((tCircleFunc2)(Circle_API [MENU_SET_LEVEL_MGR_ID])) ((u32)(a),(u32)(b)) //enum MENU_code MENU_SetLevel_Mgr ( u32 *value, u32 value_range [] )\r
+\r
+/// @endcond\r
+\r
+//---------------------------------- LED -------------------------------------\r
+\r
+/* Exported types ------------------------------------------------------------*/\r
+\r
+/**\r
+* @enum LED_mode\r
+* @brief LED modes.\r
+*\r
+* LEDs may be on, off or blinking slowly or fastly!\r
+**/\r
+enum LED_mode\r
+ {\r
+ LED_UNDEF = -1, /*!< Undefined led mode. */\r
+ LED_OFF = 0, /*!< Put off the led. */\r
+ LED_ON = 1, /*!< Put on the led. */\r
+ LED_BLINKING_LF = 2, /*!< Slow blinking led mode. */\r
+ LED_BLINKING_HF = 3 /*!< Fast blinking led mode. */\r
+ };\r
+\r
+/**\r
+* @enum LED_id\r
+* @brief Available LEDs.\r
+*\r
+* List of all the available LEDs.\r
+**/\r
+enum LED_id\r
+ {\r
+ LED_GREEN = 0, /*!< Green led id. */\r
+ LED_RED = 1 /*!< Red led id. */\r
+ };\r
+\r
+/// @cond Internal\r
+\r
+/* Exported defines ----------------------------------------------------------*/\r
+\r
+// LED functions definition\r
+#define LED_SET_ID (LED_ID + 0) // Set a specified LED in a specified mode.\r
+\r
+// Prototypes\r
+#define LED_Set(a,b) ((tCircleFunc2)(Circle_API [LED_SET_ID])) ((u32)(a),(u32)(b)) //void LED_Set ( enum LED_id id, enum LED_mode mode ) //void LED_Set ( enum LED_id id, enum LED_mode mode );\r
+\r
+/// @endcond\r
+\r
+//-------------------------------- RTC --------------------------------------\r
+\r
+/* Exported defines ----------------------------------------------------------*/\r
+\r
+// Backup registers\r
+#define BKP_SYS1 1 /*!< Backup register reserved for OS */\r
+#define BKP_SYS2 2 /*!< Backup register reserved for OS */\r
+#define BKP_SYS3 3 /*!< Backup register reserved for OS */\r
+#define BKP_SYS4 4 /*!< Backup register reserved for OS */\r
+#define BKP_SYS5 5 /*!< Backup register reserved for OS */\r
+#define BKP_SYS6 6 /*!< Backup register reserved for OS */\r
+\r
+#define BKP_USER1 7 /*!< Backup available for users application */\r
+#define BKP_USER2 8 /*!< Backup available for users application */\r
+#define BKP_USER3 9 /*!< Backup available for users application */\r
+#define BKP_USER4 10 /*!< Backup available for users application */\r
+\r
+/// @cond Internal\r
+\r
+//RTC functions definition\r
+#define RTC_SET_TIME_ID (RTC_ID + 0) // Set current time.\r
+#define RTC_GET_TIME_ID (RTC_ID + 1) // Return current time.\r
+#define RTC_DISPLAY_TIME_ID (RTC_ID + 2) // Display current time on the 6th line at column 0.\r
+\r
+// Prototypes\r
+#define RTC_SetTime(a,b,c) ((tCircleFunc3)(Circle_API [RTC_SET_TIME_ID])) ((u32)(a),(u32)(b),(u32)(c)) //void RTC_SetTime (u32 THH, u32 TMM, u32 TSS);\r
+#define RTC_GetTime(a,b,c) ((tCircleFunc3)(Circle_API [RTC_GET_TIME_ID])) ((u32)(a),(u32)(b),(u32)(c)) //void RTC_GetTime (u32 * THH, u32 * TMM, u32 * TSS);\r
+#define RTC_DisplayTime() ((tCircleFunc0)(Circle_API [RTC_DISPLAY_TIME_ID])) () //void RTC_DisplayTime ( void );\r
+\r
+/// @endcond\r
+\r
+//--------------------------------- Application -------------------------------\r
+typedef void (*tAppPtrMgr) ( int , int );\r
+\r
+#endif /*__CIRCLE_API_H */\r
--- /dev/null
+/******************** (C) COPYRIGHT 2007 STMicroelectronics ********************\r
+* File Name : stm32f10x_vector.c\r
+* Author : MCD Tools Team\r
+* Date First Issued : 05/14/2007\r
+* Description : This file contains the vector table for STM32F10x.\r
+* After Reset the Cortex-M3 processor is in Thread mode,\r
+* priority is Privileged, and the Stack is set to Main.\r
+********************************************************************************\r
+* History:\r
+* 05/14/2007: V0.2\r
+*\r
+********************************************************************************\r
+* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS\r
+* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.\r
+* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,\r
+* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE\r
+* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING\r
+* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
+*******************************************************************************/\r
+\r
+/* Includes ----------------------------------------------------------------------*/\r
+\r
+void NMIException(void);\r
+void HardFaultException(void);\r
+void MemManageException(void);\r
+void BusFaultException(void);\r
+void UsageFaultException(void);\r
+void DebugMonitor(void);\r
+void SVCHandler(void);\r
+void PendSVC(void);\r
+void SysTickHandler(void);\r
+void WWDG_IRQHandler(void);\r
+void PVD_IRQHandler(void);\r
+void TAMPER_IRQHandler(void);\r
+void RTC_IRQHandler(void);\r
+void FLASH_IRQHandler(void);\r
+void RCC_IRQHandler(void);\r
+void EXTI0_IRQHandler(void);\r
+void EXTI1_IRQHandler(void);\r
+void EXTI2_IRQHandler(void);\r
+void EXTI3_IRQHandler(void);\r
+void EXTI4_IRQHandler(void);\r
+void DMAChannel1_IRQHandler(void);\r
+void DMAChannel2_IRQHandler(void);\r
+void DMAChannel3_IRQHandler(void);\r
+void DMAChannel4_IRQHandler(void);\r
+void DMAChannel5_IRQHandler(void);\r
+void DMAChannel6_IRQHandler(void);\r
+void DMAChannel7_IRQHandler(void);\r
+void ADC_IRQHandler(void);\r
+void USB_HP_CAN_TX_IRQHandler(void);\r
+void USB_LP_CAN_RX0_IRQHandler(void);\r
+void CAN_RX1_IRQHandler(void);\r
+void CAN_SCE_IRQHandler(void);\r
+void EXTI9_5_IRQHandler(void);\r
+void TIM1_BRK_IRQHandler(void);\r
+void TIM1_UP_IRQHandler(void);\r
+void TIM1_TRG_COM_IRQHandler(void);\r
+void TIM1_CC_IRQHandler(void);\r
+void TIM2_IRQHandler(void);\r
+void TIM3_IRQHandler(void);\r
+void TIM4_IRQHandler(void);\r
+void I2C1_EV_IRQHandler(void);\r
+void I2C1_ER_IRQHandler(void);\r
+void I2C2_EV_IRQHandler(void);\r
+void I2C2_ER_IRQHandler(void);\r
+void SPI1_IRQHandler(void);\r
+void SPI2_IRQHandler(void);\r
+void USART1_IRQHandler(void);\r
+void USART2_IRQHandler(void);\r
+void USART3_IRQHandler(void);\r
+void EXTI15_10_IRQHandler(void);\r
+void RTCAlarm_IRQHandler(void);\r
+void USBWakeUp_IRQHandler(void);\r
+\r
+\r
+/* Exported types --------------------------------------------------------------*/\r
+/* Exported constants --------------------------------------------------------*/\r
+extern unsigned long _etext;\r
+extern unsigned long _sidata; /* start address for the initialization values of the .data section. defined in linker script */\r
+extern unsigned long _sdata; /* start address for the .data section. defined in linker script */\r
+extern unsigned long _edata; /* end address for the .data section. defined in linker script */\r
+\r
+extern unsigned long _sbss; /* start address for the .bss section. defined in linker script */\r
+extern unsigned long _ebss; /* end address for the .bss section. defined in linker script */\r
+\r
+extern void _estack; /* init value for the stack pointer. defined in linker script */\r
+\r
+\r
+\r
+/* Private typedef -----------------------------------------------------------*/\r
+/* function prototypes ------------------------------------------------------*/\r
+void Reset_Handler(void) __attribute__((__interrupt__));\r
+extern int main(void);\r
+extern void xPortPendSVHandler(void);\r
+extern void xPortSysTickHandler(void);\r
+extern void vTimer2IntHandler( void );\r
+\r
+\r
+/******************************************************************************\r
+*\r
+* The minimal vector table for a Cortex M3. Note that the proper constructs\r
+* must be placed on this to ensure that it ends up at physical address\r
+* 0x0000.0000.\r
+*\r
+******************************************************************************/\r
+\r
+\r
+__attribute__ ((section(".isr_vector")))\r
+void (* const g_pfnVectors[])(void) =\r
+{\r
+ &_estack, // The initial stack pointer\r
+ Reset_Handler, // The reset handler\r
+ NMIException,\r
+ HardFaultException,\r
+ MemManageException,\r
+ BusFaultException,\r
+ UsageFaultException,\r
+ 0, 0, 0, 0, /* Reserved */ \r
+ SVCHandler,\r
+ DebugMonitor,\r
+ 0, /* Reserved */\r
+ xPortPendSVHandler,\r
+ xPortSysTickHandler,\r
+ WWDG_IRQHandler,\r
+ PVD_IRQHandler,\r
+ TAMPER_IRQHandler,\r
+ RTC_IRQHandler,\r
+ FLASH_IRQHandler,\r
+ RCC_IRQHandler,\r
+ EXTI0_IRQHandler,\r
+ EXTI1_IRQHandler,\r
+ EXTI2_IRQHandler,\r
+ EXTI3_IRQHandler,\r
+ EXTI4_IRQHandler,\r
+ DMAChannel1_IRQHandler,\r
+ DMAChannel2_IRQHandler,\r
+ DMAChannel3_IRQHandler,\r
+ DMAChannel4_IRQHandler,\r
+ DMAChannel5_IRQHandler,\r
+ DMAChannel6_IRQHandler,\r
+ DMAChannel7_IRQHandler,\r
+ ADC_IRQHandler,\r
+ USB_HP_CAN_TX_IRQHandler,\r
+ USB_LP_CAN_RX0_IRQHandler,\r
+ CAN_RX1_IRQHandler,\r
+ CAN_SCE_IRQHandler,\r
+ EXTI9_5_IRQHandler,\r
+ TIM1_BRK_IRQHandler,\r
+ TIM1_UP_IRQHandler,\r
+ TIM1_TRG_COM_IRQHandler,\r
+ TIM1_CC_IRQHandler,\r
+ vTimer2IntHandler,\r
+ TIM3_IRQHandler,\r
+ TIM4_IRQHandler,\r
+ I2C1_EV_IRQHandler,\r
+ I2C1_ER_IRQHandler,\r
+ I2C2_EV_IRQHandler,\r
+ I2C2_ER_IRQHandler,\r
+ SPI1_IRQHandler,\r
+ SPI2_IRQHandler,\r
+ USART1_IRQHandler,\r
+ USART2_IRQHandler,\r
+ USART3_IRQHandler,\r
+ EXTI15_10_IRQHandler,\r
+ RTCAlarm_IRQHandler,\r
+ USBWakeUp_IRQHandler,\r
+ 0,\r
+ 0,\r
+ 0,\r
+ 0,\r
+ 0,\r
+ 0,\r
+ 0,\r
+ (unsigned long)0xF108F85F //this is a workaround for boot in RAM mode.\r
+};\r
+\r
+/*******************************************************************************\r
+* Function Name : Reset_Handler\r
+* Description : This is the code that gets called when the processor first starts execution\r
+* following a reset event. Only the absolutely necessary set is performed,\r
+* after which the application supplied main() routine is called. \r
+* Input :\r
+* Output :\r
+* Return :\r
+*******************************************************************************/\r
+void Reset_Handler(void)\r
+{\r
+ unsigned long *pulSrc, *pulDest;\r
+\r
+ //\r
+ // Copy the data segment initializers from flash to SRAM.\r
+ //\r
+ pulSrc = &_sidata;\r
+ for(pulDest = &_sdata; pulDest < &_edata; )\r
+ {\r
+ *(pulDest++) = *(pulSrc++);\r
+ }\r
+\r
+ //\r
+ // Zero fill the bss segment.\r
+ //\r
+ for(pulDest = &_sbss; pulDest < &_ebss; )\r
+ {\r
+ *(pulDest++) = 0;\r
+ }\r
+\r
+ //\r
+ // Call the application's entry point.\r
+ //\r
+ main();\r
+}\r
+\r
+\r
+/********************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/\r
+\r
+\r
--- /dev/null
+/********************* (C) COPYRIGHT 2007 RAISONANCE S.A.S. *******************/\r
+/**\r
+*\r
+* @file draw.c\r
+* @brief Various utilities for drawings (characters, ..)\r
+* @author FL\r
+* @author IB\r
+* @date 07/2007\r
+*\r
+**/\r
+/******************************************************************************/\r
+\r
+/* Includes ------------------------------------------------------------------*/\r
+#include "circle.h"\r
+\r
+/// @cond Internal\r
+\r
+/* Private define ------------------------------------------------------------*/\r
+#define V9_MADCTRVAL 0x90\r
+#define V12_MADCTRVAL 0x30\r
+#define V3_MADCTRVAL 0x50\r
+#define V6_MADCTRVAL 0xF0\r
+\r
+#define ROTATE_DIVISER 500\r
+\r
+/* Private variables ---------------------------------------------------------*/\r
+\r
+static u16 CharMagniCoeff = 1; /*!< Current character magnify coefficient. */\r
+static u16 BGndColor; /*!< Current background color. */\r
+static u16 TextColor; /*!< Current text color. */\r
+\r
+int fDisplayTime = 0;\r
+u16 BatState;\r
+u16 OldBatState;\r
+u32 OldTHH;\r
+u32 OldTMM;\r
+u32 OldTSS;\r
+u32 OldTemp; //FL071107\r
+u16 xBat;\r
+u16 yBat;\r
+u16 widthBat;\r
+u16 heightBat;\r
+u8 UsbState,OldUsbState;\r
+static int divider_coord = 0;\r
+\r
+// Screen orientation management\r
+int rotate_counter = 0;\r
+Rotate_H12_V_Match_TypeDef previous_H12 = V9;\r
+Rotate_H12_V_Match_TypeDef previous_previous_H12 = V9;\r
+Rotate_H12_V_Match_TypeDef H12;\r
+Rotate_H12_V_Match_TypeDef CurrentScreenOrientation;\r
+int CurrentRotateScreen = 1;\r
+\r
+extern s16 XInit;\r
+extern s16 YInit;\r
+\r
+/* Private functions ---------------------------------------------------------*/\r
+\r
+/*******************************************************************************\r
+*\r
+* vbattoa\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* This function convert an u16 in ascii radix 10\r
+*\r
+* @param[out] ptr A pointer to a string where the converted value will be put.\r
+* @param[in] X The value to convert.\r
+*\r
+* @see DRAW_DisplayVbat\r
+*\r
+**/\r
+/******************************************************************************/\r
+static void vbattoa( char* ptr, u16 X )\r
+ {\r
+ u8 c;\r
+ u16 r = 0;\r
+\r
+ // 1 000 digit\r
+ c = ((X-r)/1000);\r
+ r = r + (c*1000);\r
+ *ptr++ = c + 0x30;\r
+\r
+ // dot\r
+ *ptr++ = '.';\r
+\r
+ // 100 digit\r
+ c = ((X-r)/100);\r
+ r = r + (c*100);\r
+ *ptr++ = c + 0x30;\r
+\r
+ // 10 digit\r
+ c = ((X-r)/10);\r
+ r = r + (c*10);\r
+ *ptr++ = c + 0x30;\r
+\r
+ // Volt\r
+ *ptr++ = 'V';\r
+ *ptr++ = 0;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* DRAW_DisplayStringWithMode\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* This function is used to display a 17char max string of\r
+* characters on the LCD display on the selected line.\r
+* Note:\r
+* this function is the user interface to use the LCD driver.\r
+*\r
+* @param[in] x The horizontal screen coordinate where to draw the string.\r
+* @param[in] y The vertical screen coordinate where to draw the string.\r
+* @param[in] ptr Pointer to string to display.\r
+* @param[in] len String size.\r
+* @param[in] mode Display mode: 0 normal, 1 inverted colors.\r
+*\r
+* @warning The (0x0) point in on the low left corner.\r
+*\r
+* @see DRAW_DisplayString\r
+* @see DRAW_DisplayStringInverted\r
+*\r
+**/\r
+/******************************************************************************/\r
+static void DRAW_DisplayStringWithMode( u8 x, u8 y, const u8* ptr, u8 len, int mode )\r
+ {\r
+ u8 ref_x = x, i = 0;\r
+\r
+ /* Send the string character by character on LCD */\r
+ while ((*ptr!=0)&&(i<18))\r
+ {\r
+ /* Display one character on LCD */\r
+ LCD_DisplayChar( ref_x, y, *ptr, mode ? BGndColor : TextColor, mode ? TextColor : BGndColor, CharMagniCoeff );\r
+\r
+ /* Increment the column position by 7 */\r
+ ref_x+= (7*CharMagniCoeff);\r
+\r
+ /* Point on the next character */\r
+ ptr++;\r
+\r
+ /* Increment the character counter */\r
+ i++;\r
+ /* If we reach the maximum Line character */\r
+ }\r
+\r
+ while ( i < len )\r
+ {\r
+ /* Display one character on LCD */\r
+ LCD_DisplayChar( ref_x, y, ' ', mode ? BGndColor : TextColor, mode ? TextColor : BGndColor, CharMagniCoeff );\r
+\r
+ /* Increment the column position by 7 */\r
+ ref_x += ( 7 * CharMagniCoeff );\r
+\r
+ /* Increment the character counter */\r
+ i++;\r
+ }\r
+ }\r
+\r
+/* Public functions for CircleOS ---------------------------------------------*/\r
+\r
+/*******************************************************************************\r
+*\r
+* DRAW_Init\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Initialize GUI drawing. Called at CircleOS startup.\r
+*\r
+* @attention This function must <b>NOT</b> be called by the user.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void DRAW_Init( void )\r
+ {\r
+ LCD_Init();\r
+#ifdef _MEMS\r
+ MEMS_GetRotation( &CurrentScreenOrientation );\r
+#endif\r
+ LCD_SetScreenOrientation( CurrentScreenOrientation );\r
+\r
+ xBat = 98;\r
+ yBat = 3;\r
+ OldBatState = 10;\r
+ OldTSS = 100;\r
+ OldTMM = 100;\r
+ OldTHH = 100;\r
+ OldTemp = -1;\r
+\r
+ // Clear LCD and draw black and white logo\r
+ DRAW_SetDefaultColor();\r
+ LCD_FillRect( 0, 0, CHIP_SCREEN_WIDTH, CHIP_SCREEN_HEIGHT, BGndColor );\r
+// POINTER_Init();\r
+ }\r
+\r
+\r
+\r
+\r
+/* Public functions ----------------------------------------------------------*/\r
+\r
+/*******************************************************************************\r
+*\r
+* DRAW_SetCharMagniCoeff\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Set the magnifying value for the characters (should be 1 or 2)\r
+*\r
+* @param[in] Coeff The new magnifying coefficent.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void DRAW_SetCharMagniCoeff( u16 Coeff )\r
+ {\r
+ CharMagniCoeff = Coeff;\r
+ }\r
+\r
+ /******************************************************************************\r
+*\r
+* DRAW_GetCharMagniCoeff\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Return the current magnifying value for the characters\r
+*\r
+* @return Current magnifying value.\r
+*\r
+**/\r
+/******************************************************************************/\r
+u16 DRAW_GetCharMagniCoeff( void )\r
+ {\r
+ return CharMagniCoeff;\r
+ }\r
+\r
+ /******************************************************************************\r
+*\r
+* DRAW_GetTextColor\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Return current text color.\r
+*\r
+* @return The current RGB color used to draw text.\r
+*\r
+**/\r
+/******************************************************************************/\r
+u16 DRAW_GetTextColor( void )\r
+ {\r
+ return TextColor;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* DRAW_SetTextColor\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Set current text color.\r
+*\r
+* @param[in] Color The new RGB color used when drawing text.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void DRAW_SetTextColor( u16 Color )\r
+ {\r
+ TextColor = Color ;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* DRAW_GetBGndColor\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Return current background color.\r
+*\r
+* @return The current RGB color used for the background.\r
+*\r
+**/\r
+/******************************************************************************/\r
+u16 DRAW_GetBGndColor( void )\r
+ {\r
+ return BGndColor;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* DRAW_SetBGndColor\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Set current background color\r
+*\r
+* @param[in] Color The new RGB color for background.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void DRAW_SetBGndColor(u16 Color)\r
+ {\r
+ BGndColor = Color;\r
+ }\r
+\r
+\r
+/*******************************************************************************\r
+*\r
+* DRAW_SetImage\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* The provided bitmap is made width * height 2 byte words. Each 2 byte word contains\r
+* the RGB color of a pixel.\r
+*\r
+* @brief Draw a color bitmap at the provided coordinates.\r
+* @param[in] imageptr A pointer to an array of width * height 2 byte words.\r
+* @param[in] x The horizontal coordinate of the low left corner of the bitmap.\r
+* @param[in] y The vertical coordinate of the low left corner of the bitmap.\r
+* @param[in] width The bitmap width.\r
+* @param[in] height The bitmap height.\r
+*\r
+* @warning The (0x0) point in on the low left corner.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void DRAW_SetImage( const u16* imageptr, u8 x, u8 y, u8 width, u8 height )\r
+ {\r
+ int i;\r
+\r
+ // Select screen area to access.\r
+ LCD_SetRect_For_Cmd( x, y, width, height );\r
+\r
+ // Send command to write data on the LCD screen.\r
+ LCD_SendLCDCmd(ST7637_RAMWR);\r
+\r
+ for( i = 0; i < ( width * height ); i++ )\r
+ {\r
+ LCD_SendLCDData( imageptr[ i ] & 0xff );\r
+ LCD_SendLCDData( ( imageptr[ i ] >> 8 ) & 0xff );\r
+ }\r
+ }\r
+\r
+\r
+\r
+/*******************************************************************************\r
+*\r
+* DRAW_DisplayString\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* This function is used to display a 17 character max string of\r
+* characters on the LCD display at the provided coordinates.\r
+*\r
+* @param[in] x The horizontal coordinate of the displayed string.\r
+* @param[in] y The vertical coordinate of the display string.\r
+* @param[in] *ptr Pointer to the string to display on LCD.\r
+* @param[in] len String length.\r
+*\r
+* @warning The (0x0) point in on the low left corner.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void DRAW_DisplayString( u8 x, u8 y, const u8* ptr, u8 len )\r
+ {\r
+ DRAW_DisplayStringWithMode( x, y, ptr, len, 0 );\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* DRAW_DisplayStringInverted\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* This function is used to display a 17 character max string of\r
+* characters on the LCD display at the provided coordinates with inverted colors.\r
+*\r
+* @param[in] x The horizontal coordinate of the displayed string.\r
+* @param[in] y The vertical coordinate of the display string.\r
+* @param[in] *ptr Pointer to the string to display on LCD.\r
+* @param[in] len String length.\r
+*\r
+* @warning The (0x0) point in on the low left corner.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void DRAW_DisplayStringInverted( u8 x, u8 y, const u8* ptr, u8 len )\r
+ {\r
+ //BackGround and Text Colors are inverted\r
+ DRAW_DisplayStringWithMode( x, y, ptr, len, 1 );\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* DRAW_SetDefaultColor\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Reset text and background colors to their default values.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void DRAW_SetDefaultColor (void)\r
+ {\r
+ BGndColor = RGB_WHITE;\r
+ TextColor = RGB_BLACK;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* DRAW_DisplayTemp\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* This function is used to display the current temperature in ascii.\r
+* The choice between Celcius and Fahrenheit is fixed by UTIL_SetModeTemp()\r
+*\r
+* @param[in] x The horizontal coordinate of the displayed string.\r
+* @param[in] y The vertical coordinate of the display string.\r
+*\r
+* @warning The (0x0) point in on the low left corner.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void DRAW_DisplayTemp( u8 x, u8 y )\r
+ {\r
+ u32 Temp = 0;\r
+ u8 TextBuffer[5] = { 0,0,0,0,0};\r
+ \r
+ // Get Time\r
+ Temp = UTIL_GetTemp() ;\r
+\r
+ if( Temp != OldTemp ) \r
+ {\r
+ // Display C (if modified).\r
+ UTIL_uint2str( TextBuffer, Temp/10, 2, 1 );\r
+ TextBuffer[ 2 ] = '.';\r
+ DRAW_DisplayString( x + ( 0 * CharMagniCoeff * 7 ), y, TextBuffer, 3 );\r
+\r
+ // Display C/10 (if modified).\r
+ UTIL_uint2str( TextBuffer, Temp%10, 1, 1 );\r
+ TextBuffer[ 1 ] = fTemperatureInFahrenheit ? 'F' : 'C'; TextBuffer[ 2 ] = 0;\r
+ DRAW_DisplayString( x + ( 3 * CharMagniCoeff * 7 ), y, TextBuffer, 2 );\r
+ }\r
+ OldTemp = Temp;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* DRAW_Line\r
+*\r
+*******************************************************************************/\r
+/**\r
+* Draw a line on the LCD screen. Optimized for horizontal/vertical lines, \r
+* and use the Bresenham algorithm for other cases.\r
+*\r
+* @param[in] x1 The x-coordinate of the first line endpoint.\r
+* @param[in] x2 The x-coordinate of the second line endpoint.\r
+* @param[in] y1 The y-coordinate of the first line endpoint.\r
+* @param[in] y2 The y-coordinate of the second line endpoint.\r
+* @param[in] color The line color.\r
+*\r
+**/\r
+void DRAW_Line (s16 x1, s16 y1, s16 x2, s16 y2, u16 color )\r
+ {\r
+ int i,dx,dy,sdx,sdy,dxabs,dyabs,x,y,px,py;\r
+\r
+ #define abs(X) ( ( (X) < 0 ) ? -(X) : (X) )\r
+ #define sgn(X) ( ( (X) < 0 ) ? -1 : 1 )\r
+\r
+ if ( x1==x2 ) //Vertical Line\r
+ {\r
+ if ( y1 > y2 ) //We assume y2>y1 and invert if not\r
+ {\r
+ i = y2;\r
+ y2 = y1;\r
+ y1 = i;\r
+ }\r
+ LCD_FillRect( x1, y1, 1, y2-y1+1, color );\r
+ return;\r
+ }\r
+ else if ( y1==y2 ) //Horizontal Line\r
+ {\r
+ if ( x1 > x2 ) //We assume x2>x1 and we swap them if not\r
+ {\r
+ i = x2;\r
+ x2 = x1;\r
+ x1 = i;\r
+ }\r
+ LCD_FillRect( x1, y1, x2-x1+1, 1, color );\r
+ return;\r
+ }\r
+ \r
+ dx=x2-x1; /* the horizontal distance of the line */\r
+ dy=y2-y1; /* the vertical distance of the line */\r
+ dxabs=abs(dx);\r
+ dyabs=abs(dy);\r
+ sdx=sgn(dx);\r
+ sdy=sgn(dy);\r
+ x=dyabs>>1;\r
+ y=dxabs>>1;\r
+ px=x1;\r
+ py=y1;\r
+\r
+ if (dxabs>=dyabs) /* the line is more horizontal than vertical */\r
+ {\r
+ for(i=0;i<dxabs;i++)\r
+ {\r
+ y+=dyabs;\r
+ if (y>=dxabs)\r
+ {\r
+ y-=dxabs;\r
+ py+=sdy;\r
+ }\r
+ px+=sdx;\r
+ LCD_DrawPixel(px,py,color);\r
+ }\r
+ }\r
+ else /* the line is more vertical than horizontal */\r
+ {\r
+ for(i=0;i<dyabs;i++)\r
+ {\r
+ x+=dxabs;\r
+ if (x>=dyabs)\r
+ {\r
+ x-=dyabs;\r
+ px+=sdx;\r
+ }\r
+ py+=sdy;\r
+ LCD_DrawPixel(px,py,color);\r
+ }\r
+ }\r
+ }\r
+\r
--- /dev/null
+/********************* (C) COPYRIGHT 2007 RAISONANCE S.A.S. *******************/\r
+/**\r
+*\r
+* @file lcd.c\r
+* @brief The LCD driver for the ST7637.\r
+* @author FL\r
+* @date 07/2007\r
+*\r
+**/\r
+/******************************************************************************/\r
+\r
+/* Includes ------------------------------------------------------------------*/\r
+#include "lcd.h"\r
+#include "circle.h"\r
+\r
+/// @cond Internal\r
+\r
+/* Private define ------------------------------------------------------------*/\r
+#define V9_MADCTRVAL 0x90 /*!< Left orientation value. */\r
+#define V12_MADCTRVAL 0x30 /*!< Up orientation value. */\r
+#define V3_MADCTRVAL 0x50 /*!< Right orientation value. */\r
+#define V6_MADCTRVAL 0xF0 /*!< Bottom orientation value. */\r
+#define BACKLIGHT_DIVIDER 500 /*!< LCD handler step. */\r
+\r
+/* Private variables ---------------------------------------------------------*/\r
+\r
+// vars for timer dedicated for lcd backlight\r
+static TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;\r
+static TIM_OCInitTypeDef TIM_OCInitStructure;\r
+static int HandlerDivider = 0;\r
+\r
+int Current_CCR_BackLightStart = DEFAULT_CCR_BACKLIGHTSTART;\r
+\r
+/* External variable ---------------------------------------------------------*/\r
+extern GPIO_InitTypeDef GPIO_InitStructure;\r
+extern u16 CCR_BackLight_Tab[5];\r
+extern int CurrentRotateScreen;\r
+extern Rotate_H12_V_Match_TypeDef CurrentScreenOrientation;\r
+\r
+/*! ASCII Table. Each character is 7 column (7dots large) on two pages (16dots high)\r
+ 7 column character: Two 8 bit data to display one column*/\r
+static const u8 AsciiDotsTable[95 * 14 ] = {\r
+ /* ASCII 32 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+ /* ASCII 33 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x13,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,\r
+ /* ASCII 34 */ 0x00,0x00,0x00,0xe0,0x00,0x20,0x00,0x00,0x00,0xe0,0x00,0x20,0x00,0x00,\r
+ /* ASCII 35 */ 0x00,0x00,0x35,0x00,0x0f,0x80,0x35,0x60,0x0f,0x80,0x05,0x60,0x00,0x00,\r
+ /* ASCII 36 */ 0x00,0x00,0x0d,0x80,0x0a,0x40,0x3a,0x60,0x06,0x40,0x00,0x00,0x00,0x00,\r
+ /* ASCII 37 */ 0x00,0x00,0x02,0x40,0x02,0xa0,0x0a,0x40,0x15,0x00,0x09,0x00,0x00,0x00,\r
+ /* ASCII 38 */ 0x00,0x00,0x0c,0x00,0x13,0x00,0x14,0x80,0x08,0x80,0x14,0x00,0x00,0x00,\r
+ /* ASCII 39 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,\r
+ /* ASCII 40 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x80,0x60,0x60,0x00,0x00,0x00,0x00,\r
+ /* ASCII 41 */ 0x00,0x00,0x00,0x00,0x60,0x60,0x1f,0x80,0x00,0x00,0x00,0x00,0x00,0x00,\r
+ /* ASCII 42 */ 0x00,0x00,0x00,0x40,0x03,0x40,0x00,0xe0,0x03,0x40,0x00,0x40,0x00,0x00,\r
+ /* ASCII 43 */ 0x02,0x00,0x02,0x00,0x02,0x00,0x1f,0xc0,0x02,0x00,0x02,0x00,0x02,0x00,\r
+ /* ASCII 44 */ 0x00,0x00,0x00,0x00,0x60,0x00,0x38,0x00,0x08,0x00,0x00,0x00,0x00,0x00,\r
+ /* ASCII 45 */ 0x00,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x00,0x00,\r
+ /* ASCII 46 */ 0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+ /* ASCII 47 */ 0x00,0x00,0x20,0x00,0x18,0x00,0x06,0x00,0x01,0x80,0x00,0x60,0x00,0x00,\r
+ /* ASCII 48 */ 0x00,0x00,0x0f,0xc0,0x10,0x20,0x10,0x20,0x10,0x20,0x0f,0xc0,0x00,0x00,\r
+ /* ASCII 49 */ 0x00,0x00,0x10,0x00,0x10,0x20,0x1f,0xe0,0x10,0x00,0x10,0x00,0x00,0x00,\r
+ /* ASCII 50 */ 0x00,0x00,0x18,0x40,0x14,0x20,0x12,0x20,0x11,0x20,0x18,0xc0,0x00,0x00,\r
+ /* ASCII 51 */ 0x00,0x00,0x08,0x40,0x10,0x20,0x11,0x20,0x11,0x20,0x0e,0xc0,0x00,0x00,\r
+ /* ASCII 52 */ 0x00,0x00,0x06,0x00,0x05,0x00,0x04,0xc0,0x14,0x20,0x1f,0xe0,0x14,0x00,\r
+ /* ASCII 53 */ 0x00,0x00,0x08,0x00,0x11,0xe0,0x11,0x20,0x11,0x20,0x0e,0x20,0x00,0x00,\r
+ /* ASCII 54 */ 0x00,0x00,0x0f,0x80,0x11,0x40,0x11,0x20,0x11,0x20,0x0e,0x20,0x00,0x00,\r
+ /* ASCII 55 */ 0x00,0x00,0x00,0x60,0x00,0x20,0x18,0x20,0x07,0x20,0x00,0xe0,0x00,0x00,\r
+ /* ASCII 56 */ 0x00,0x00,0x0e,0xc0,0x11,0x20,0x11,0x20,0x11,0x20,0x0e,0xc0,0x00,0x00,\r
+ /* ASCII 57 */ 0x00,0x00,0x11,0xc0,0x12,0x20,0x12,0x20,0x0a,0x20,0x07,0xc0,0x00,0x00,\r
+ /* ASCII 58 */ 0x00,0x00,0x00,0x00,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,0x00,0x00,\r
+ /* ASCII 59 */ 0x00,0x00,0x00,0x00,0x30,0x00,0x19,0x80,0x09,0x80,0x00,0x00,0x00,0x00,\r
+ /* ASCII 60 */ 0x02,0x00,0x05,0x00,0x05,0x00,0x08,0x80,0x10,0x40,0x10,0x40,0x00,0x00,\r
+ /* ASCII 61 */ 0x00,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x00,0x00,\r
+ /* ASCII 62 */ 0x10,0x40,0x10,0x40,0x08,0x80,0x05,0x00,0x05,0x00,0x02,0x00,0x00,0x00,\r
+ /* ASCII 63 */ 0x00,0x00,0x00,0x00,0x10,0x80,0x14,0x40,0x02,0x40,0x01,0x80,0x00,0x00,\r
+ /* ASCII 64 */ 0x00,0x00,0x1f,0xe0,0x20,0x10,0x23,0x10,0x24,0x90,0x17,0xe0,0x00,0x00,\r
+ /* ASCII 65 */ 0x10,0x00,0x1c,0x00,0x17,0xa0,0x04,0x60,0x17,0x80,0x1c,0x00,0x10,0x00,\r
+ /* ASCII 66 */ 0x10,0x20,0x1f,0xe0,0x11,0x20,0x11,0x20,0x11,0x20,0x0e,0xc0,0x00,0x00,\r
+ /* ASCII 67 */ 0x00,0x00,0x0f,0xc0,0x10,0x20,0x10,0x20,0x10,0x20,0x08,0x60,0x00,0x00,\r
+ /* ASCII 68 */ 0x10,0x20,0x1f,0xe0,0x10,0x20,0x10,0x20,0x08,0x40,0x07,0x80,0x00,0x00,\r
+ /* ASCII 69 */ 0x10,0x20,0x1f,0xe0,0x11,0x20,0x13,0xa0,0x10,0x20,0x18,0x60,0x00,0x00,\r
+ /* ASCII 70 */ 0x00,0x00,0x10,0x20,0x1f,0xe0,0x11,0x20,0x03,0xa0,0x00,0x20,0x00,0x60,\r
+ /* ASCII 71 */ 0x00,0x00,0x0f,0xc0,0x10,0x20,0x10,0x20,0x12,0x20,0x0e,0x60,0x02,0x00,\r
+ /* ASCII 72 */ 0x10,0x20,0x1f,0xe0,0x11,0x20,0x01,0x00,0x11,0x20,0x1f,0xe0,0x10,0x20,\r
+ /* ASCII 73 */ 0x00,0x00,0x10,0x20,0x10,0x20,0x1f,0xe0,0x10,0x20,0x10,0x20,0x00,0x00,\r
+ /* ASCII 74 */ 0x00,0x00,0x0e,0x00,0x10,0x20,0x10,0x20,0x0f,0xe0,0x00,0x20,0x00,0x00,\r
+ /* ASCII 75 */ 0x10,0x20,0x1f,0xe0,0x12,0x20,0x03,0x00,0x04,0xa0,0x18,0x60,0x10,0x20,\r
+ /* ASCII 76 */ 0x00,0x00,0x10,0x20,0x1f,0xe0,0x10,0x20,0x10,0x00,0x1c,0x00,0x00,0x00,\r
+ /* ASCII 77 */ 0x10,0x20,0x1f,0xe0,0x10,0xe0,0x03,0x00,0x10,0xe0,0x1f,0xe0,0x10,0x20,\r
+ /* ASCII 78 */ 0x10,0x20,0x1f,0xe0,0x10,0xe0,0x07,0x00,0x18,0x20,0x1f,0xe0,0x00,0x20,\r
+ /* ASCII 79 */ 0x00,0x00,0x0f,0xc0,0x10,0x20,0x10,0x20,0x10,0x20,0x0f,0xc0,0x00,0x00,\r
+ /* ASCII 80 */ 0x00,0x00,0x10,0x20,0x1f,0xe0,0x12,0x20,0x02,0x20,0x01,0xc0,0x00,0x00,\r
+ /* ASCII 81 */ 0x00,0x00,0x0f,0xc0,0x10,0x20,0x30,0x20,0x30,0x20,0x2f,0xc0,0x00,0x00,\r
+ /* ASCII 82 */ 0x10,0x20,0x1f,0xe0,0x12,0x20,0x02,0x20,0x06,0x20,0x09,0xc0,0x10,0x00,\r
+ /* ASCII 83 */ 0x00,0x00,0x18,0xc0,0x09,0x20,0x11,0x20,0x11,0x40,0x0e,0x60,0x00,0x00,\r
+ /* ASCII 84 */ 0x00,0x60,0x00,0x20,0x10,0x20,0x1f,0xe0,0x10,0x20,0x00,0x20,0x00,0x60,\r
+ /* ASCII 85 */ 0x00,0x20,0x0f,0xe0,0x10,0x20,0x10,0x00,0x10,0x20,0x0f,0xe0,0x00,0x20,\r
+ /* ASCII 86 */ 0x00,0x20,0x00,0xe0,0x07,0x20,0x18,0x00,0x07,0x20,0x00,0xe0,0x00,0x20,\r
+ /* ASCII 87 */ 0x00,0x20,0x0f,0xe0,0x10,0x20,0x0f,0x00,0x10,0x20,0x0f,0xe0,0x00,0x20,\r
+ /* ASCII 88 */ 0x10,0x20,0x18,0x60,0x04,0x80,0x03,0x00,0x04,0x80,0x18,0x60,0x10,0x20,\r
+ /* ASCII 89 */ 0x00,0x20,0x00,0x60,0x11,0xa0,0x1e,0x00,0x11,0xa0,0x00,0x60,0x00,0x20,\r
+ /* ASCII 90 */ 0x00,0x00,0x18,0x60,0x14,0x20,0x13,0x20,0x10,0xa0,0x18,0x60,0x00,0x00,\r
+ /* ASCII 91 */ 0x00,0x00,0x00,0x00,0x7f,0xe0,0x40,0x20,0x40,0x20,0x00,0x00,0x00,0x00,\r
+ /* ASCII 92 */ 0x00,0x00,0x00,0x20,0x01,0xc0,0x06,0x00,0x38,0x00,0x00,0x00,0x00,0x00,\r
+ /* ASCII 93 */ 0x00,0x00,0x00,0x00,0x40,0x20,0x40,0x20,0x7f,0xe0,0x00,0x00,0x00,0x00,\r
+ /* ASCII 94 */ 0x00,0x00,0x01,0x00,0x00,0x80,0x00,0x60,0x00,0x80,0x01,0x00,0x00,0x00,\r
+ /* ASCII 95 */ 0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,\r
+ /* ASCII 96 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x00,\r
+ /* ASCII 97 */ 0x00,0x00,0x0d,0x00,0x12,0x80,0x12,0x80,0x12,0x80,0x1f,0x00,0x10,0x00,\r
+ /* ASCII 98 */ 0x10,0x20,0x1f,0xe0,0x11,0x00,0x10,0x80,0x10,0x80,0x0f,0x00,0x00,0x00,\r
+ /* ASCII 99 */ 0x00,0x00,0x0f,0x00,0x10,0x80,0x10,0x80,0x10,0x80,0x09,0x80,0x00,0x00,\r
+ /* ASCII 100 */ 0x00,0x00,0x0f,0x00,0x10,0x80,0x10,0x80,0x11,0x20,0x1f,0xe0,0x10,0x00,\r
+ /* ASCII 101 */ 0x00,0x00,0x0f,0x00,0x12,0x80,0x12,0x80,0x12,0x80,0x13,0x00,0x00,0x00,\r
+ /* ASCII 102 */ 0x00,0x00,0x10,0x80,0x1f,0xc0,0x10,0xa0,0x10,0xa0,0x10,0xa0,0x00,0x00,\r
+ /* ASCII 103 */ 0x00,0x00,0x0f,0x00,0x50,0x80,0x50,0x80,0x51,0x00,0x3f,0x80,0x00,0x80,\r
+ /* ASCII 104 */ 0x10,0x20,0x1f,0xe0,0x11,0x00,0x00,0x80,0x10,0x80,0x1f,0x00,0x10,0x00,\r
+ /* ASCII 105 */ 0x00,0x00,0x10,0x80,0x10,0x80,0x1f,0xa0,0x10,0x00,0x10,0x00,0x00,0x00,\r
+ /* ASCII 106 */ 0x00,0x00,0x40,0x80,0x40,0x80,0x40,0xa0,0x3f,0x80,0x00,0x00,0x00,0x00,\r
+ /* ASCII 107 */ 0x10,0x20,0x1f,0xe0,0x02,0x00,0x16,0x80,0x19,0x80,0x10,0x80,0x00,0x00,\r
+ /* ASCII 108 */ 0x00,0x00,0x10,0x00,0x10,0x20,0x1f,0xe0,0x10,0x00,0x10,0x00,0x00,0x00,\r
+ /* ASCII 109 */ 0x10,0x80,0x1f,0x80,0x10,0x80,0x1f,0x00,0x10,0x80,0x1f,0x00,0x10,0x00,\r
+ /* ASCII 110 */ 0x10,0x80,0x1f,0x80,0x11,0x00,0x00,0x80,0x10,0x80,0x1f,0x00,0x10,0x00,\r
+ /* ASCII 111 */ 0x00,0x00,0x0f,0x00,0x10,0x80,0x10,0x80,0x10,0x80,0x0f,0x00,0x00,0x00,\r
+ /* ASCII 112 */ 0x40,0x80,0x7f,0x80,0x51,0x00,0x10,0x80,0x10,0x80,0x0f,0x00,0x00,0x00,\r
+ /* ASCII 113 */ 0x00,0x00,0x0f,0x00,0x10,0x80,0x10,0x80,0x51,0x00,0x7f,0x80,0x40,0x80,\r
+ /* ASCII 114 */ 0x00,0x00,0x10,0x80,0x1f,0x80,0x11,0x00,0x10,0x80,0x10,0x80,0x00,0x00,\r
+ /* ASCII 115 */ 0x00,0x00,0x19,0x00,0x12,0x80,0x12,0x80,0x12,0x80,0x0d,0x80,0x00,0x00,\r
+ /* ASCII 116 */ 0x00,0x00,0x00,0x80,0x0f,0xc0,0x10,0x80,0x10,0x80,0x10,0x80,0x08,0x00,\r
+ /* ASCII 117 */ 0x00,0x80,0x0f,0x80,0x10,0x00,0x10,0x00,0x08,0x80,0x1f,0x80,0x10,0x00,\r
+ /* ASCII 118 */ 0x00,0x80,0x03,0x80,0x0c,0x80,0x10,0x00,0x0c,0x80,0x03,0x80,0x00,0x80,\r
+ /* ASCII 119 */ 0x00,0x80,0x0f,0x80,0x10,0x80,0x0e,0x00,0x10,0x80,0x0f,0x80,0x00,0x80,\r
+ /* ASCII 120 */ 0x10,0x80,0x19,0x80,0x06,0x00,0x06,0x00,0x19,0x80,0x10,0x80,0x00,0x00,\r
+ /* ASCII 121 */ 0x00,0x80,0x41,0x80,0x46,0x80,0x78,0x00,0x4c,0x80,0x03,0x80,0x00,0x80,\r
+ /* ASCII 122 */ 0x00,0x00,0x19,0x80,0x14,0x80,0x12,0x80,0x11,0x80,0x18,0x80,0x00,0x00,\r
+ /* ASCII 123 */ 0x00,0x00,0x00,0x00,0x04,0x00,0x3b,0xc0,0x40,0x20,0x00,0x00,0x00,0x00,\r
+ /* ASCII 124 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,\r
+ /* ASCII 125 */ 0x00,0x00,0x00,0x00,0x40,0x20,0x3b,0xc0,0x04,0x00,0x00,0x00,0x00,0x00,\r
+ /* ASCII 126 */ 0x00,0x00,0x04,0x00,0x02,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x00,0x00};\r
+\r
+int OrientationOffsetX [] = { 0 /* V12*/,0 /* V3*/,+4 /* V6*/,+4 /* V9*/ };\r
+int OrientationOffsetY [] = { +4 /* V12*/,0 /* V3*/,0 /* V6*/,+4 /* V9*/ };\r
+\r
+/* Private function prototypes -----------------------------------------------*/\r
+static void LCD_7637_Controller( void );\r
+static void LCD_DrawChar( u8 x, u8 y, u8 width, const u8 *bmp, u16 textColor, u16 bGndColor, u16 charMagniCoeff );\r
+static void LCD_BackLightChange( void );\r
+static void LCD_BackLightConfig( void );\r
+static void LCD_CtrlLinesWrite( GPIO_TypeDef* GPIOx, u32 CtrlPins, BitAction BitVal );\r
+\r
+/* Private functions ---------------------------------------------------------*/\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_DataLinesConfig\r
+*\r
+*******************************************************************************/\r
+/**\r
+* Configure data lines D0~D7 in Input Floating mode for read from LCD or in\r
+* Output Push-Pull mode for write on LCD\r
+*\r
+* @param[in] Mode Specifies the configuration mode for data lines D0~D7.\r
+* @n @c Input: configure in Input Floating mode\r
+* @n @c Output: configure in Output Push-Pul mode\r
+*\r
+**/\r
+/******************************************************************************/\r
+static void LCD_DataLinesConfig( DataConfigMode_TypeDef Mode )\r
+ {\r
+ GPIO_InitTypeDef GPIO_InitStructure;\r
+ \r
+ GPIO_InitStructure.GPIO_Pin = LCD_DATA_PINS;\r
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;\r
+\r
+ if( Mode == Input )\r
+ {\r
+ /* Configure D0~D7 lines as Input */\r
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;\r
+ }\r
+ else\r
+ {\r
+ /* Configure D0~D7 lines in Output Push-Pull mode */\r
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;\r
+ }\r
+\r
+ GPIO_Init( GPIOx_D_LCD, &GPIO_InitStructure );\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_DataLinesWrite\r
+*\r
+*******************************************************************************/\r
+/**\r
+* Write a value on D0~D7\r
+*\r
+* @param[in] GPIOx GPIO port to write on.\r
+* @param[in] PortVal The value to write. Only the lowest 8 bits are taken into\r
+* account.\r
+*\r
+**/\r
+/******************************************************************************/\r
+static void LCD_DataLinesWrite( GPIO_TypeDef* GPIOx, u32 PortVal )\r
+ {\r
+ // Write only the lowest 8 bits!\r
+ GPIOx->ODR = ( (GPIOx->ODR) & 0xFF00 ) | (u8)PortVal;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_CtrlLinesConfig\r
+*\r
+*******************************************************************************/\r
+/**\r
+* Configure control lines in Output Push-Pull mode.\r
+*\r
+**/\r
+/******************************************************************************/\r
+static void LCD_CtrlLinesConfig( void )\r
+ {\r
+ GPIO_InitTypeDef GPIO_InitStructure;\r
+ \r
+ GPIO_InitStructure.GPIO_Pin = LCD_CTRL_PINS;\r
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;\r
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;\r
+\r
+ GPIO_Init( GPIOx_CTRL_LCD, &GPIO_InitStructure );\r
+\r
+ GPIO_InitStructure.GPIO_Pin = CtrlPin_CS;\r
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;\r
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;\r
+\r
+ GPIO_Init( GPIOx_CS_LCD, &GPIO_InitStructure );\r
+\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_RS, Bit_SET ); /* RS = 1 */\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_RD, Bit_SET ); /* RD = 1 */\r
+ LCD_CtrlLinesWrite( GPIOx_CS_LCD, CtrlPin_CS, Bit_SET ); /* CS = 1 */\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_WR, Bit_SET ); /* WR = 1 */\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_RST, Bit_RESET ); /* RST = 0 */\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_CtrlLinesWrite\r
+*\r
+*******************************************************************************/\r
+/**\r
+* Set or reset control lines.\r
+*\r
+* @param[in] GPIOx Where x can be 0, 1 or 2 to select the GPIO peripheral.\r
+* @param[in] CtrlPins The Control line.\r
+* @param[in] BitVal\r
+*\r
+**/\r
+/******************************************************************************/\r
+static void LCD_CtrlLinesWrite( GPIO_TypeDef* GPIOx, u32 CtrlPins, BitAction BitVal )\r
+ {\r
+ /* Set or Reset the control line */\r
+ GPIO_WriteBit( GPIOx, CtrlPins, BitVal );\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_CheckLCDStatus\r
+*\r
+*******************************************************************************/\r
+/**\r
+* Check whether LCD LCD is busy or not.\r
+*\r
+**/\r
+/******************************************************************************/\r
+static void LCD_CheckLCDStatus( void )\r
+ {\r
+ unsigned char ID1;\r
+ unsigned char ID2;\r
+ unsigned char ID3;\r
+\r
+ LCD_SendLCDCmd( ST7637_RDDID );\r
+\r
+ /* Configure Data lines as Input */\r
+ LCD_DataLinesConfig (Input );\r
+\r
+ /* Start the LCD send data sequence */\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_RS, Bit_RESET ); /* RS = 0 */\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_RD, Bit_RESET ); /* RD = 0 */\r
+ LCD_CtrlLinesWrite( GPIOx_CS_LCD, CtrlPin_CS, Bit_RESET ); /* CS = 0 */\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_WR, Bit_SET ); /* WR = 1 */\r
+\r
+ /* Read data to the LCD */\r
+ GPIO_ReadInputData( GPIOx_D_LCD );\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_RD, Bit_SET ); /* RD = 1 */\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_RD, Bit_RESET ); /* RD = 0 */\r
+\r
+ ID1 = GPIO_ReadInputData( GPIOx_D_LCD );\r
+\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_RD, Bit_SET ); /* RD = 1 */\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_RD, Bit_RESET ); /* RD = 0 */\r
+\r
+ ID2 = GPIO_ReadInputData( GPIOx_D_LCD );\r
+\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_RD, Bit_SET ); /* RD = 1 */\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_RD, Bit_RESET ); /* RD = 0 */\r
+\r
+ ID3 = GPIO_ReadInputData( GPIOx_D_LCD );\r
+\r
+ LCD_DataLinesConfig( Output );\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_DrawChar\r
+*\r
+*******************************************************************************/\r
+/**\r
+* Draw a character on the LCD screen.\r
+*\r
+* @param[in] x The line where to display the character shape.\r
+* @param[in] y The column start address.\r
+* @param[in] width The number of columns (dots) in a character width.\r
+* @param[in] bmp The character (monochrome) bitmap. A pointer of the dot matrix data.\r
+* @param[in] textColor The character color.\r
+* @param[in] bGndColor The character background color.\r
+* @param[in] charMagniCoeff The character magnifying coefficient.\r
+*\r
+* @warning The (0x0) point in on the low left corner.\r
+*\r
+**/\r
+/******************************************************************************/\r
+static void LCD_DrawChar( u8 x, u8 y, u8 width, const u8* bmp, u16 textColor, u16 bGndColor, u16 charMagniCoeff )\r
+ {\r
+ int i;\r
+ int j;\r
+ int k1;\r
+ int k2;\r
+\r
+ // Select the area for LCD output.\r
+ LCD_SetRect_For_Cmd( x, y, 7 * charMagniCoeff, 14 * charMagniCoeff );\r
+\r
+ // Select LCD output mode.\r
+ LCD_SendLCDCmd( ST7637_RAMWR );\r
+\r
+ for( i = 0; i < 7; i++ )\r
+ {\r
+ for( k1 = 0; k1 < charMagniCoeff; k1++ )\r
+ {\r
+ for( j = 0x80; j; j >>= 1 ) // 8\r
+ {\r
+ for( k2 = 0; k2 < charMagniCoeff; k2++ )\r
+ {\r
+ LCD_SendLCDData( ( bmp[2*i] & j ) ? ( textColor & 255 ) : ( bGndColor & 255 ) );\r
+ LCD_SendLCDData( ( bmp[2*i] & j ) ? ( textColor >> 8 ) : ( bGndColor >> 8 ) );\r
+ }\r
+ }\r
+\r
+ for( j = 0x80; j > 2; j >>= 1 ) // 8\r
+ {\r
+ for( k2 = 0; k2 < charMagniCoeff; k2++ )\r
+ {\r
+ LCD_SendLCDData( ( bmp[2*i+1] & j ) ? ( textColor & 255 ) : ( bGndColor & 255 ) );\r
+ LCD_SendLCDData( ( bmp[2*i+1] & j ) ? ( textColor >> 8 ) : ( bGndColor >> 8 ) );\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_DisplayRotate\r
+*\r
+*******************************************************************************/\r
+/**\r
+* Configure the LCD controller for a given orientation.\r
+*\r
+* @param[in] H12 The new screen orientation.\r
+*\r
+**/\r
+/******************************************************************************/\r
+static void LCD_DisplayRotate( Rotate_H12_V_Match_TypeDef H12 )\r
+ {\r
+ // Memory Access Control 0x36\r
+ LCD_SendLCDCmd( ST7637_MADCTR );\r
+\r
+ switch( H12 )\r
+ {\r
+ case V3 :\r
+ LCD_SendLCDData( V3_MADCTRVAL );\r
+ break;\r
+\r
+ case V6 :\r
+ LCD_SendLCDData( V6_MADCTRVAL );\r
+ break;\r
+\r
+ case V9 :\r
+ LCD_SendLCDData( V9_MADCTRVAL );\r
+ break;\r
+\r
+ case V12 :\r
+ default :\r
+ LCD_SendLCDData( V12_MADCTRVAL );\r
+ break;\r
+ }\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_7637_Controller\r
+*\r
+*******************************************************************************/\r
+/**\r
+* Initialization of the controller registers.\r
+*\r
+* @note See ST7637.PDF for more information.\r
+*\r
+**/\r
+/******************************************************************************/\r
+static void LCD_7637_Controller( void )\r
+ {\r
+ extern void starting_delay ( long unsigned );\r
+\r
+ /** Apply hardware reset **/\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_RST, Bit_SET ); /* RST = 1 */\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_RST, Bit_RESET ); /* RST = 0 */\r
+ starting_delay( 0x500 );\r
+\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_RST, Bit_SET ); /* RST = 1 */\r
+ starting_delay( 0x500 );\r
+\r
+ //default mode is output\r
+ LCD_DataLinesConfig( Output );\r
+\r
+ LCD_CheckLCDStatus();\r
+\r
+ LCD_SendLCDCmd( ST7637_SWRESET );\r
+\r
+ //-----------disable autoread + Manual read once ----------------------------\r
+ LCD_SendLCDCmd( ST7637_AUTOLOADSET ); // Auto Load Set 0xD7\r
+ LCD_SendLCDData( 0xBF ); // Auto Load Disable\r
+\r
+ LCD_SendLCDCmd( ST7637_EPCTIN ); // EE Read/write mode 0xE0\r
+ LCD_SendLCDData( 0x00 ); // Set read mode\r
+\r
+ LCD_SendLCDCmd( ST7637_EPMRD ); // Read active 0xE3\r
+ LCD_SendLCDCmd( ST7637_EPCTOUT ); // Cancel control 0xE1\r
+\r
+ //---------------------------------- Sleep OUT ------------------------------\r
+ LCD_SendLCDCmd( ST7637_DISPOFF ); // display off 0x28\r
+ LCD_SendLCDCmd( ST7637_SLPOUT ); // Sleep Out 0x11\r
+\r
+ //--------------------------------Vop setting--------------------------------\r
+ LCD_SendLCDCmd( ST7637_VOPSET ); // Set Vop by initial Module 0xC0\r
+ LCD_SendLCDData( 0xFB ); // Vop = 13.64\r
+ LCD_SendLCDData( 0x00 ); // base on Module\r
+\r
+ //----------------------------Set Register-----------------------------------\r
+ LCD_SendLCDCmd( ST7637_BIASSEL ); // Bias select 0xC3\r
+ LCD_SendLCDData( 0x00 ); // 1/12 Bias, base on Module\r
+\r
+ LCD_SendLCDCmd( ST7637_BSTBMPXSEL ); // Setting Booster times 0xC4\r
+ LCD_SendLCDData( 0x05 ); // Booster X 8\r
+\r
+ LCD_SendLCDCmd( ST7637_BSTEFFSEL ); // Booster eff 0xC5\r
+ LCD_SendLCDData( 0x11 ); // BE = 0x01 (Level 2)\r
+\r
+ LCD_SendLCDCmd( ST7637_VGSORCSEL ); // Vg with booster x2 control 0xcb\r
+ LCD_SendLCDData( 0x01 ); // Vg from Vdd2\r
+\r
+ LCD_SendLCDCmd( ST7637_ID1SET ); // ID1 = 00 0xcc\r
+ LCD_SendLCDData( 0x00 ); //\r
+\r
+ LCD_SendLCDCmd( ST7637_ID3SET ); // ID3 = 00 0xce\r
+ LCD_SendLCDData( 0x00 ); //\r
+\r
+ LCD_SendLCDCmd( 0xB7 ); // Glass direction\r
+ LCD_SendLCDData( 0xC0 ); //\r
+\r
+ LCD_SendLCDCmd( ST7637_ANASET ); // Analog circuit setting 0xd0\r
+ LCD_SendLCDData( 0x1D ); //\r
+\r
+ LCD_SendLCDCmd( 0xB4 ); // PTL mode set\r
+ LCD_SendLCDData( 0x18 ); // power normal mode\r
+ LCD_SendLCDCmd( ST7637_INVOFF ); // Display Inversion OFF 0x20\r
+\r
+ LCD_SendLCDCmd( 0x2A ); // column range\r
+ LCD_SendLCDData( 0x04 ); //\r
+ LCD_SendLCDData( 0x83 ); //\r
+\r
+ LCD_SendLCDCmd( 0x2B ); // raw range\r
+ LCD_SendLCDData( 0x04 ); //\r
+ LCD_SendLCDData( 0x83 ); //\r
+\r
+\r
+ LCD_SendLCDCmd( ST7637_COLMOD ); // Color mode = 65k 0x3A\r
+ LCD_SendLCDData( 0x05 ); //\r
+\r
+ LCD_SendLCDCmd( ST7637_MADCTR ); // Memory Access Control 0x36\r
+ LCD_SendLCDData( V9_MADCTRVAL );\r
+\r
+ LCD_SendLCDCmd( ST7637_DUTYSET ); // Duty = 132 duty 0xb0\r
+ LCD_SendLCDData( 0x7F );\r
+\r
+ LCD_SendLCDCmd( 0x29 ); // Display ON\r
+ LCD_SendLCDCmd( 0xF9 ); // Gamma\r
+ LCD_SendLCDData( 0x00 ); //\r
+ LCD_SendLCDData( 0x03 ); //\r
+ LCD_SendLCDData( 0x05 ); //\r
+ LCD_SendLCDData( 0x07 ); //\r
+ LCD_SendLCDData( 0x09 ); //\r
+ LCD_SendLCDData( 0x0B ); //\r
+ LCD_SendLCDData( 0x0D ); //\r
+ LCD_SendLCDData( 0x0F ); //\r
+ LCD_SendLCDData( 0x11 ); //\r
+ LCD_SendLCDData( 0x13 ); //\r
+ LCD_SendLCDData( 0x15 ); //\r
+ LCD_SendLCDData( 0x17 ); //\r
+ LCD_SendLCDData( 0x19 ); //\r
+ LCD_SendLCDData( 0x1B ); //\r
+ LCD_SendLCDData( 0x1D ); //\r
+ LCD_SendLCDData( 0x1F ); //\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_BackLightConfig\r
+*\r
+*******************************************************************************/\r
+/**\r
+* Setting of the PWM that drives the backlight intensity.\r
+*\r
+**/\r
+/******************************************************************************/\r
+static void LCD_BackLightConfig( void )\r
+ {\r
+ GPIO_InitTypeDef GPIO_InitStructure;\r
+\r
+ /* Enable GPIOB clock */\r
+ RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE );\r
+\r
+ /* GPIOB Configuration:TIM4 2 in Output */\r
+ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;\r
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;\r
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;\r
+\r
+ GPIO_Init( GPIOB, &GPIO_InitStructure );\r
+\r
+ /* TIM4 Configuration -----------------------------------------------------*/\r
+ /* TIM4CLK = 12 MHz, Prescaler = 0x0 */\r
+\r
+ /* Enable TIM4 clock */\r
+ RCC_APB1PeriphClockCmd( RCC_APB1Periph_TIM4, ENABLE );\r
+\r
+ TIM_DeInit( TIM4 );\r
+ TIM_TimeBaseStructInit( &TIM_TimeBaseStructure );\r
+ TIM_OCStructInit( &TIM_OCInitStructure );\r
+\r
+ /* Time base configuration */\r
+ TIM_TimeBaseStructure.TIM_Period = 0xFFFF;\r
+ TIM_TimeBaseStructure.TIM_Prescaler = 0x0;\r
+ TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;\r
+ TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;\r
+\r
+ TIM_TimeBaseInit( TIM4, &TIM_TimeBaseStructure );\r
+\r
+ /* Output Compare Toggle Mode configuration: Channel2 */\r
+ TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;\r
+ TIM_OCInitStructure.TIM_Channel = TIM_Channel_2;\r
+ TIM_OCInitStructure.TIM_Pulse = Current_CCR_BackLightStart;\r
+\r
+ TIM_OCInit( TIM4, &TIM_OCInitStructure );\r
+ TIM_OC4PreloadConfig( TIM4, TIM_OCPreload_Disable );\r
+\r
+ TIM_ARRPreloadConfig( TIM4, ENABLE );\r
+\r
+ /* Enable TIM4 IT */\r
+ TIM_ITConfig( TIM4, TIM_IT_CC2, ENABLE );\r
+\r
+ // Go !!!\r
+ TIM_Cmd( TIM4, ENABLE );\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_BackLightChange\r
+*\r
+*******************************************************************************/\r
+/**\r
+* Modify the PWM rate.\r
+*\r
+**/\r
+/******************************************************************************/\r
+static void LCD_BackLightChange( void )\r
+ {\r
+ /* Output Compare Toggle Mode configuration: Channel2 */\r
+ TIM_OCInitStructure.TIM_Pulse = Current_CCR_BackLightStart;\r
+\r
+ TIM_OCInit( TIM4, &TIM_OCInitStructure );\r
+ }\r
+\r
+/* Public functions for CircleOS ---------------------------------------------*/\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_Init\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Initialize LCD. Called at CircleOS startup.\r
+*\r
+* @attention This function must <b>NOT</b> be called by the user.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void LCD_Init( void )\r
+ {\r
+ LCD_SetBackLight( UTIL_ReadBackupRegister( BKP_BKLIGHT ) );\r
+\r
+ /* Do some gpio configs*/\r
+ GPIO_InitTypeDef GPIO_InitStructure;\r
+\r
+ /* Enable GPIO clock for LCD */\r
+ RCC_APB2PeriphClockCmd( GPIO_LCD_CTRL_PERIPH, ENABLE );\r
+ RCC_APB2PeriphClockCmd( GPIO_LCD_D_PERIPH, ENABLE );\r
+ RCC_APB2PeriphClockCmd( GPIO_LCD_CS_PERIPH, ENABLE );\r
+\r
+ /* Enable GPIOC clock */\r
+ RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE );\r
+\r
+ /* Init BackLight*/\r
+ LCD_BackLightConfig();\r
+\r
+ /* Configure control lines signals as output mode */\r
+ LCD_CtrlLinesConfig();\r
+\r
+ /* LCD LCD Init */\r
+ LCD_7637_Controller();\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_Handler\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Called by the CircleOS scheduler to manage LCD tasks.\r
+*\r
+* @attention This function must <b>NOT</b> be called by the user.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void LCD_Handler( void )\r
+ {\r
+ if( ++HandlerDivider % BACKLIGHT_DIVIDER )\r
+ {\r
+ return;\r
+ }\r
+\r
+ LCD_BackLightChange();\r
+ }\r
+\r
+\r
+/// @endcond\r
+\r
+/* Public functions ----------------------------------------------------------*/\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_SendLCDCmd\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Send on command byte to the LCD.\r
+*\r
+* @param[in] Cmd An unsigned char containing the user command to send to the LCD.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void LCD_SendLCDCmd( u8 Cmd )\r
+ {\r
+ /* Start the LCD send data sequence */\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_RS, Bit_RESET ); /* RS = 0 */\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_RD, Bit_SET ); /* RD = 1 */\r
+ LCD_CtrlLinesWrite( GPIOx_CS_LCD, CtrlPin_CS, Bit_RESET ); /* CS = 0 */\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_WR, Bit_RESET ); /* WR = 0 */\r
+\r
+ /* Write data to the LCD */\r
+ LCD_DataLinesWrite( GPIOx_D_LCD, (u32)Cmd );\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_WR, Bit_SET ); /* WR = 1 */\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_SendLCDData\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Send one data byte to the LCD.\r
+*\r
+* @param[in] Data An unsigned character containing the data to send to the LCD.\r
+* @pre An LCD_SendLCDCmd was done with a command waiting for data.\r
+*\r
+*\r
+**/\r
+/******************************************************************************/\r
+void LCD_SendLCDData( u8 Data )\r
+ {\r
+ /* Configure Data lines as Output */\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_RS, Bit_SET );\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_RD, Bit_SET );\r
+ LCD_CtrlLinesWrite( GPIOx_CS_LCD, CtrlPin_CS, Bit_RESET );\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_WR, Bit_RESET );\r
+\r
+ /* Write data to the LCD */\r
+ LCD_DataLinesWrite( GPIOx_D_LCD,(u32)Data );\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_WR, Bit_SET );\r
+ }\r
+\r
+/***********************************************************************************\r
+*\r
+* LCD_ReadLCDData\r
+*\r
+************************************************************************************/\r
+/**\r
+*\r
+* Read one data byte from the LCD.\r
+*\r
+* @return An unsigned 32 bit word containing the data returned by a LCD command.\r
+* @pre An LCD_SendLCDCmd was done with a command returning data.\r
+*\r
+**/\r
+/********************************************************************************/\r
+u32 LCD_ReadLCDData( void )\r
+ {\r
+ u32 LCDData = 0;\r
+\r
+ /* Configure Data lines as Input */\r
+ LCD_DataLinesConfig(Input);\r
+\r
+ /* Start the LCD send data sequence */\r
+ LCD_CtrlLinesWrite( GPIOx_D_LCD, CtrlPin_RS, Bit_SET ); /* RS = 1 */\r
+ LCD_CtrlLinesWrite( GPIOx_D_LCD, CtrlPin_WR, Bit_SET ); /* WR = 1 */\r
+ LCD_CtrlLinesWrite( GPIOx_CS_LCD, CtrlPin_CS, Bit_RESET ); /* CS = 0 */\r
+ LCD_CtrlLinesWrite( GPIOx_D_LCD, CtrlPin_RD, Bit_RESET ); /* RD = 0 */\r
+\r
+ /* Read data from the LCD */\r
+ LCDData = (GPIO_ReadInputData( GPIOx_D_LCD ) & LCD_DATA_PINS );\r
+\r
+ LCD_CtrlLinesWrite( GPIOx_D_LCD, CtrlPin_RD, Bit_SET ); /* RD = 1 */\r
+\r
+ /* Read the LCD returned data */\r
+ LCD_DataLinesConfig( Output );\r
+\r
+ return LCDData;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_FillRect\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Fill a rectangle with a provided color.\r
+*\r
+* @param[in] x The horizontal coordinate of the rectangle low left corner.\r
+* @param[in] y The vertical coordinate of the rectangle low left corner.\r
+* @param[in] width The rectangle width in pixels.\r
+* @param[in] height The rectangle height in pixels.\r
+* @param[in] color The RGB color to fill the rectangle with.\r
+*\r
+* @warning The (0x0) point in on the low left corner.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void LCD_FillRect( u16 x, u16 y, u16 width, u16 height, u16 color )\r
+ {\r
+ u8 Line;\r
+ u8 Column;\r
+\r
+ /* Select LCD screen area. */\r
+ LCD_SetRect_For_Cmd( x, y, width, height );\r
+\r
+ /* Send LCD RAM write command. */\r
+ LCD_SendLCDCmd( ST7637_RAMWR );\r
+\r
+ /* Fill selected LCD screen area with provided color. */\r
+ for( Line = 0; Line < width; Line++ )\r
+ {\r
+ for( Column = 0; Column < height; Column++ )\r
+ {\r
+ LCD_SendLCDData( color & 0xff );\r
+ LCD_SendLCDData( ( color >> 8 ) & 0xff );\r
+ }\r
+ }\r
+\r
+ #ifdef TESTLCD\r
+ /* Configure Data lines as Input */\r
+ LCD_DataLinesConfig( Input );\r
+\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_RST, Bit_SET ); /* RST = 1 */\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_RST, Bit_RESET ); /* RST = 0 */\r
+ LCD_CtrlLinesWrite( GPIOx_CTRL_LCD, CtrlPin_RST, Bit_SET ); /* RST = 1 */\r
+\r
+ /* Start the LCD send data sequence */\r
+ LCD_CtrlLinesWrite( GPIOx_D_LCD, CtrlPin_RS, Bit_SET ); /* RS = 1 */\r
+ LCD_CtrlLinesWrite( GPIOx_D_LCD, CtrlPin_RS, Bit_RESET ); /* RS = 0 */\r
+ LCD_CtrlLinesWrite( GPIOx_D_LCD, CtrlPin_RS, Bit_SET ); /* RS = 1 */\r
+\r
+ LCD_CtrlLinesWrite( GPIOx_D_LCD, CtrlPin_RS, Bit_SET ); /* RS = 1 */\r
+ LCD_CtrlLinesWrite( GPIOx_D_LCD, CtrlPin_RS, Bit_RESET ); /* RS = 0 */\r
+ LCD_CtrlLinesWrite( GPIOx_D_LCD, CtrlPin_RS, Bit_SET ); /* RS = 1 */\r
+\r
+ LCD_CtrlLinesWrite( GPIOx_D_LCD, CtrlPin_WR, Bit_SET ); /* WR = 1 */\r
+ LCD_CtrlLinesWrite( GPIOx_D_LCD, CtrlPin_WR, Bit_RESET ); /* WR = 1 */\r
+ LCD_CtrlLinesWrite( GPIOx_D_LCD, CtrlPin_WR, Bit_SET ); /* WR = 1 */\r
+\r
+ LCD_CtrlLinesWrite( GPIOx_D_LCD, CtrlPin_RD, Bit_SET ); /* RD = 1 */\r
+ LCD_CtrlLinesWrite( GPIOx_D_LCD, CtrlPin_RD, Bit_RESET ); /* RD = 0 */\r
+ LCD_CtrlLinesWrite( GPIOx_D_LCD, CtrlPin_RD, Bit_SET ); /* RD = 1 */\r
+\r
+ LCD_CtrlLinesWrite( GPIOx_D_LCD, CtrlPin_RD, Bit_SET ); /* RD = 1 */\r
+ LCD_CtrlLinesWrite( GPIOx_D_LCD, CtrlPin_RD, Bit_RESET ); /* RD = 0 */\r
+ LCD_CtrlLinesWrite( GPIOx_D_LCD, CtrlPin_RD, Bit_SET ); /* RD = 1 */\r
+\r
+ /* Configure Data lines as Input */\r
+ LCD_DataLinesConfig( Output );\r
+\r
+ LCD_DataLinesWrite( GPIOx_D_LCD, ~0 );\r
+ LCD_DataLinesWrite( GPIOx_D_LCD, 0 );\r
+ LCD_DataLinesWrite( GPIOx_D_LCD, ~1 );\r
+ LCD_DataLinesWrite( GPIOx_D_LCD, 1 );\r
+ LCD_DataLinesWrite( GPIOx_D_LCD, ~2 );\r
+ LCD_DataLinesWrite( GPIOx_D_LCD, 2 );\r
+ LCD_DataLinesWrite( GPIOx_D_LCD, ~4 );\r
+ LCD_DataLinesWrite( GPIOx_D_LCD, 4 );\r
+ LCD_DataLinesWrite( GPIOx_D_LCD, ~8 );\r
+ LCD_DataLinesWrite( GPIOx_D_LCD, 8 );\r
+ LCD_DataLinesWrite( GPIOx_D_LCD, ~0x10 );\r
+ LCD_DataLinesWrite( GPIOx_D_LCD, 0x10 );\r
+ LCD_DataLinesWrite( GPIOx_D_LCD, ~0x20 );\r
+ LCD_DataLinesWrite( GPIOx_D_LCD, 0x20 );\r
+ LCD_DataLinesWrite( GPIOx_D_LCD, ~0x40 );\r
+ LCD_DataLinesWrite( GPIOx_D_LCD, 0x40 );\r
+ LCD_DataLinesWrite( GPIOx_D_LCD, ~0x80 );\r
+ LCD_DataLinesWrite( GPIOx_D_LCD, 0x80 );\r
+\r
+ LCD_DataLinesConfig( Input );\r
+\r
+ #endif\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_DrawRect\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Draw a rectangle with a provided color.\r
+*\r
+* @param[in] x The horizontal coordinate of the rectangle low left corner.\r
+* @param[in] y The vertical coordinate of the rectangle low left corner.\r
+* @param[in] width The rectangle width in pixels.\r
+* @param[in] height The rectangle height in pixels.\r
+* @param[in] color The RGB color to draw the rectangle with.\r
+*\r
+* @warning The (0x0) point in on the low left corner.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void LCD_DrawRect( u16 x, u16 y, u16 width, u16 height, u16 color )\r
+ {\r
+ // Draw horizontal sides.\r
+ LCD_FillRect( x, y, width, 1, color );\r
+ LCD_FillRect( x, y + height - 1, width, 1, color );\r
+\r
+ // Draw vertical sides.\r
+ LCD_FillRect( x, y, 1, height, color );\r
+ LCD_FillRect( x + width - 1, y, 1, height, color );\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_DrawPixel\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Draw a pixel on the LCD with the provided color.\r
+*\r
+* @param[in] XPos The horizontal coordinate of the pixel.\r
+* @param[in] YPos The vertical coordinate of the pixel.\r
+* @param[in] Color The RGB color to draw the pixel with.\r
+*\r
+* @warning The (0x0) point in on the low left corner.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void LCD_DrawPixel( u8 XPos, u8 YPos, u16 Color )\r
+ {\r
+ /* Select LCD screen area. */\r
+ LCD_SetRect_For_Cmd( XPos, YPos, 1, 1 );\r
+\r
+ /* Send LCD RAM write command. */\r
+ LCD_SendLCDCmd( ST7637_RAMWR );\r
+\r
+ // Draw pixel.\r
+ LCD_SendLCDData( Color );\r
+ LCD_SendLCDData( Color >> 8 );\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_RectRead\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Save the pixels of a rectangle part of the LCD into a RAM variable.\r
+*\r
+* @param[in] x The horizontal coordinate of the rectangle low left corner.\r
+* @param[in] y The vertical coordinate of the rectangle low left corner.\r
+* @param[in] width The rectangle width in pixels.\r
+* @param[in] height The rectangle height in pixels.\r
+* @param[out] bmp The variable to store the read data into.\r
+*\r
+* @warning One pixel weights 2 bytes.\r
+* @warning The (0x0) point in on the low left corner.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void LCD_RectRead( u16 x, u16 y, u16 width, u16 height, u8* bmp )\r
+ {\r
+ int i;\r
+ int bytesize = (width * height) *2; // 2 bytes per pixel.\r
+\r
+ /* Select LCD screen area. */\r
+ LCD_SetRect_For_Cmd( x, y, width, height );\r
+\r
+ /* Send LCD RAM write command. */\r
+ LCD_SendLCDCmd(ST7637_RAMRD);\r
+\r
+ // First read byte is dummy!\r
+ LCD_ReadLCDData();\r
+\r
+ // Read pixels from LCD screen.\r
+ for( i = 0; i < bytesize; i++ )\r
+ {\r
+ *bmp++ = LCD_ReadLCDData();\r
+ }\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_GetPixel\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Read the RGB color of the pixel the coordinate are provided in parameter.\r
+*\r
+* @param[in] x The horizontal coordinate of the pixel.\r
+* @param[in] y The vertical coordinate of the pixel.\r
+* @return An unsigned 16 bit word containing the RGB color of the pixel.\r
+*\r
+* @warning The (0x0) point in on the low left corner.\r
+* @see LCD_RectRead\r
+*\r
+**/\r
+/******************************************************************************/\r
+u16 LCD_GetPixel( u8 x, u8 y )\r
+ {\r
+ u16 val;\r
+\r
+ LCD_RectRead( x, y, 1, 1, (u8*)&val );\r
+\r
+ return val;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_DisplayChar\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Display at provided coordinates the provided ASCII character with the provided\r
+* text and background colors and with the provided magnify coefficient.\r
+*\r
+* @param[in] x The horizontal coordinate of the character.\r
+* @param[in] y The vertical coordinate of the character.\r
+* @param[in] Ascii The ASCII code of the character to display.\r
+* @n Ascii must be higher than 31 and lower than 127.\r
+* @param[in] TextColor The color used to draw the character.\r
+* @param[in] BGndColor The background color of the drawn character.\r
+* @param[in] CharMagniCoeff The magnify coefficient used to draw the character.\r
+*\r
+* @warning The (0x0) point in on the low left corner.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void LCD_DisplayChar( u8 x, u8 y, u8 Ascii, u16 TextColor, u16 BGndColor, u16 CharMagniCoeff)\r
+ {\r
+ // Display the selected bitmap according to the provided ASCII character.\r
+ LCD_DrawChar( x, y, 7, (u8*)&AsciiDotsTable[ (Ascii-32) * 14 ], TextColor, BGndColor, CharMagniCoeff );\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_SetRect_For_Cmd\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Define the rectangle for the next command to be applied.\r
+*\r
+* @param[in] x The horizontal coordinate of the rectangle low left corner.\r
+* @param[in] y The vertical coordinate of the rectangle low left corner.\r
+* @param[in] width The rectangle width in pixels.\r
+* @param[in] height The rectangle height in pixels.\r
+*\r
+* @warning The (0x0) point in on the low left corner.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void LCD_SetRect_For_Cmd( s16 x, s16 y, s16 width, s16 height )\r
+ {\r
+ LCD_SendLCDCmd( ST7637_CASET );\r
+ LCD_SendLCDData( y + OrientationOffsetX[ CurrentScreenOrientation ] );\r
+ LCD_SendLCDData( y + OrientationOffsetX[ CurrentScreenOrientation ] + height - 1 );\r
+\r
+ LCD_SendLCDCmd( ST7637_RASET );\r
+ LCD_SendLCDData( x + OrientationOffsetY[ CurrentScreenOrientation ] );\r
+ LCD_SendLCDData( x + OrientationOffsetY[ CurrentScreenOrientation ] + width - 1 );\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_SetBackLight\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Modify the PWM rate. Any value below BACKLIGHTMIN reset the value to the\r
+* default value (DEFAULT_CCR_BACKLIGHTSTART).\r
+*\r
+* @param[in] newBacklightStart The new PWM rate.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void LCD_SetBackLight( u32 newBacklightStart )\r
+ {\r
+ if( newBacklightStart >= BACKLIGHTMIN )\r
+ {\r
+ Current_CCR_BackLightStart = newBacklightStart;\r
+ }\r
+ else\r
+ {\r
+ Current_CCR_BackLightStart = DEFAULT_CCR_BACKLIGHTSTART;\r
+ }\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_SetBackLightOff\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Switch the LCD back light off.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void LCD_SetBackLightOff( void )\r
+ {\r
+ Current_CCR_BackLightStart = 0;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_SetBackLightOn\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Switch the LCD back light on.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void LCD_SetBackLightOn( void )\r
+ {\r
+ Current_CCR_BackLightStart = DEFAULT_CCR_BACKLIGHTSTART;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_GetBackLight\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Returns le LCD PWM rate.\r
+*\r
+* @return The current LCD PWM rate.\r
+*\r
+**/\r
+/******************************************************************************/\r
+u32 LCD_GetBackLight( void )\r
+ {\r
+ return Current_CCR_BackLightStart;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_SetRotateScreen\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Enable or disable the ability of the screen display to rotate according to\r
+* the MEMs information.\r
+*\r
+* @param[in] RotateScreen 0 to disable screen rotation and 1 to enable.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void LCD_SetRotateScreen( u8 RotateScreen)\r
+ {\r
+ CurrentRotateScreen = RotateScreen;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_GetRotateScreen\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Return the screen rotation mode.\r
+*\r
+* @retval 0 screen rotation is disabled.\r
+* @retval 1 screen rotation is enabled.\r
+*\r
+**/\r
+/******************************************************************************/\r
+u8 LCD_GetRotateScreen( void )\r
+ {\r
+ return CurrentRotateScreen;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_SetScreenOrientation\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Set the screen orientation.\r
+*\r
+* @param[in] ScreenOrientation The new screen orientation.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void LCD_SetScreenOrientation( Rotate_H12_V_Match_TypeDef ScreenOrientation )\r
+ {\r
+ CurrentScreenOrientation = ScreenOrientation;\r
+\r
+ LCD_DisplayRotate( CurrentScreenOrientation );\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LCD_GetScreenOrientation\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Return current screen orientation.\r
+*\r
+* @return A Rotate_H12_V_Match_TypeDef telling the current screen orientation.\r
+*\r
+**/\r
+/******************************************************************************/\r
+Rotate_H12_V_Match_TypeDef LCD_GetScreenOrientation( void )\r
+ {\r
+ return CurrentScreenOrientation;\r
+ }\r
+\r
--- /dev/null
+/********************* (C) COPYRIGHT 2007 RAISONANCE S.A.S. *******************/\r
+/**\r
+*\r
+* @file lcd.h\r
+* @brief The header file for ST7637 driver.\r
+* @author IB\r
+* @date 07/2007\r
+*\r
+**/\r
+/******************************************************************************/\r
+\r
+/* Define to prevent recursive inclusion -------------------------------------*/\r
+#ifndef __LCD_H\r
+#define __LCD_H\r
+\r
+/* Includes ------------------------------------------------------------------*/\r
+#include "stm32f10x_lib.h"\r
+\r
+/* Type def -----------------------------------------------------------------*/\r
+\r
+/* Data lines configuration mode */\r
+typedef enum\r
+ {\r
+ Input,\r
+ Output\r
+ } DataConfigMode_TypeDef;\r
+\r
+/* Constants -----------------------------------------------------------------*/\r
+\r
+/* LCD Control pins */\r
+#define CtrlPin_RS GPIO_Pin_8\r
+#define CtrlPin_RD GPIO_Pin_9\r
+#define CtrlPin_WR GPIO_Pin_10\r
+#define CtrlPin_RST GPIO_Pin_12\r
+#define LCD_CTRL_PINS (CtrlPin_RS|CtrlPin_RD|CtrlPin_WR|CtrlPin_RST)\r
+#define GPIOx_CTRL_LCD GPIOC\r
+#define GPIO_LCD_CTRL_PERIPH RCC_APB2Periph_GPIOC\r
+\r
+#define CtrlPin_CS GPIO_Pin_2\r
+#define GPIOx_CS_LCD GPIOD\r
+#define GPIO_LCD_CS_PERIPH RCC_APB2Periph_GPIOD\r
+\r
+#define LCD_D0 GPIO_Pin_0\r
+#define LCD_D1 GPIO_Pin_1\r
+#define LCD_D2 GPIO_Pin_2\r
+#define LCD_D3 GPIO_Pin_3\r
+#define LCD_D4 GPIO_Pin_4\r
+#define LCD_D5 GPIO_Pin_5\r
+#define LCD_D6 GPIO_Pin_6\r
+#define LCD_D7 GPIO_Pin_7\r
+#define LCD_DATA_PINS (LCD_D0|LCD_D1|LCD_D2|LCD_D3|LCD_D4|LCD_D5|LCD_D6|LCD_D7)\r
+#define GPIOx_D_LCD GPIOC\r
+#define GPIO_LCD_D_PERIPH RCC_APB2Periph_GPIOC\r
+\r
+/* LCD Commands */\r
+#define DISPLAY_ON 0xAF\r
+#define DISPLAY_OFF 0xAE\r
+#define START_LINE 0xC0\r
+#define START_COLUMN 0x00\r
+#define CLOCKWISE_OUTPUT 0xA0\r
+#define DYNAMIC_DRIVE 0xA4\r
+#define DUTY_CYCLE 0xA9\r
+#define READ_MODIFY_WRITE_OFF 0xEE\r
+#define SOFTWARE_RESET 0xE2\r
+\r
+#define ST7637_NOP 0x00\r
+#define ST7637_SWRESET 0x01\r
+#define ST7637_RDDID 0x04\r
+#define ST7637_RDDST 0x09\r
+#define ST7637_RDDPM 0x0A\r
+#define ST7637_RDDMADCTR 0x0B\r
+#define ST7637_RDDCOLMOD 0x0C\r
+#define ST7637_RDDIM 0x0D\r
+#define ST7637_RDDSM 0x0E\r
+#define ST7637_RDDSDR 0x0F\r
+\r
+#define ST7637_SLPIN 0x10\r
+#define ST7637_SLPOUT 0x11\r
+#define ST7637_PTLON 0x12\r
+#define ST7637_NORON 0x13\r
+\r
+#define ST7637_INVOFF 0x20\r
+#define ST7637_INVON 0x21\r
+#define ST7637_APOFF 0x22\r
+#define ST7637_APON 0x23\r
+#define ST7637_WRCNTR 0x25\r
+#define ST7637_DISPOFF 0x28\r
+#define ST7637_DISPON 0x29\r
+#define ST7637_CASET 0x2A\r
+#define ST7637_RASET 0x2B\r
+#define ST7637_RAMWR 0x2C\r
+#define ST7637_RGBSET 0x2D\r
+#define ST7637_RAMRD 0x2E\r
+\r
+#define ST7637_PTLAR 0x30\r
+#define ST7637_SCRLAR 0x33\r
+#define ST7637_TEOFF 0x34\r
+#define ST7637_TEON 0x35\r
+#define ST7637_MADCTR 0x36\r
+#define ST7637_VSCSAD 0x37\r
+#define ST7637_IDMOFF 0x38\r
+#define ST7637_IDMON 0x39\r
+#define ST7637_COLMOD 0x3A\r
+\r
+#define ST7637_RDID1 0xDA\r
+#define ST7637_RDID2 0xDB\r
+#define ST7637_RDID3 0xDC\r
+\r
+#define ST7637_DUTYSET 0xB0\r
+#define ST7637_FIRSTCOM 0xB1\r
+#define ST7637_OSCDIV 0xB3\r
+#define ST7637_PTLMOD 0xB4\r
+#define ST7637_NLINVSET 0xB5\r
+#define ST7637_COMSCANDIR 0xB7\r
+#define ST7637_RMWIN 0xB8\r
+#define ST7637_RMWOUT 0xB9\r
+\r
+#define ST7637_VOPSET 0xC0\r
+#define ST7637_VOPOFSETINC 0xC1\r
+#define ST7637_VOPOFSETDEC 0xC2\r
+#define ST7637_BIASSEL 0xC3\r
+#define ST7637_BSTBMPXSEL 0xC4\r
+#define ST7637_BSTEFFSEL 0xC5\r
+#define ST7637_VOPOFFSET 0xC7\r
+#define ST7637_VGSORCSEL 0xCB\r
+\r
+#define ST7637_ID1SET 0xCC\r
+#define ST7637_ID2SET 0xCD\r
+#define ST7637_ID3SET 0xCE\r
+\r
+#define ST7637_ANASET 0xD0\r
+#define ST7637_AUTOLOADSET 0xD7\r
+#define ST7637_RDTSTSTATUS 0xDE\r
+\r
+#define ST7637_EPCTIN 0xE0\r
+#define ST7637_EPCTOUT 0xE1\r
+#define ST7637_EPMWR 0xE2\r
+#define ST7637_EPMRD 0xE3\r
+#define ST7637_MTPSEL 0xE4\r
+#define ST7637_ROMSET 0xE5\r
+#define ST7637_HPMSET 0xEB\r
+\r
+#define ST7637_FRMSEL 0xF0\r
+#define ST7637_FRM8SEL 0xF1\r
+#define ST7637_TMPRNG 0xF2\r
+#define ST7637_TMPHYS 0xF3\r
+#define ST7637_TEMPSEL 0xF4\r
+#define ST7637_THYS 0xF7\r
+#define ST7637_FRAMESET 0xF9\r
+ \r
+#define ST7637_MAXCOL 0x83\r
+#define ST7637_MAXPAG 0x83\r
+\r
+#endif /*__LCD_H */\r
--- /dev/null
+/********************* (C) COPYRIGHT 2007 RAISONANCE S.A.S. *******************/\r
+/**\r
+*\r
+* @file led.c\r
+* @brief LED management.\r
+* @author IB\r
+* @date 07/2007\r
+*\r
+**/\r
+/******************************************************************************/\r
+\r
+/* Includes ------------------------------------------------------------------*/\r
+#include "circle.h"\r
+\r
+/// @cond Internal\r
+\r
+/* Private variables ---------------------------------------------------------*/\r
+\r
+int GreenLED_Counter = 0;\r
+int RedLED_Counter = 0;\r
+enum LED_mode GreenLED_mode = LED_UNDEF;\r
+enum LED_mode RedLED_mode = LED_UNDEF;\r
+enum LED_mode GreenLED_newmode = LED_OFF;\r
+enum LED_mode RedLED_newmode = LED_OFF;\r
+const int HalfPeriod_LF = 200;\r
+const int HalfPeriod_HF = 50;\r
+const int Period_LF = 200 * 2;\r
+const int Period_HF = 50 * 2;\r
+\r
+/* Public functions for CircleOS ---------------------------------------------*/\r
+\r
+/*******************************************************************************\r
+*\r
+* LED_Init\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Initialization of the GPIOs for the LEDs\r
+*\r
+* @note Is called by CircleOS startup.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void LED_Init( void )\r
+ {\r
+ GPIO_InitTypeDef GPIO_InitStructure;\r
+\r
+ /* Enable LED GPIO clock */\r
+ RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE );\r
+\r
+ /* Configure LED pins as output push-pull */\r
+ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 ;\r
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;\r
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;\r
+\r
+ GPIO_Init( GPIOB, &GPIO_InitStructure );\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LED_Handler\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Called by the CircleOS scheduler to manage the states of the LEDs.\r
+* LEDs may be on, off or blinking according to their state.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void LED_Handler( void )\r
+ {\r
+ LED_Handler_hw(LED_GREEN);\r
+ LED_Handler_hw(LED_RED);\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* LED_Handler\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Called by the CircleOS scheduler to manage the states of the LEDs.\r
+* LEDs may be on, off or blinking according to their state.\r
+*\r
+* @param[in] id A LED_id indicating the LED to take care of.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void LED_Handler_hw( enum LED_id id )\r
+ {\r
+ int counter;\r
+ enum LED_mode mode;\r
+ \r
+ // Choose the right LED parameters.\r
+ if( id == LED_GREEN )\r
+ {\r
+ counter = GreenLED_Counter;\r
+ mode = GreenLED_newmode;\r
+ }\r
+ else\r
+ {\r
+ counter = RedLED_Counter;\r
+ mode = RedLED_newmode;\r
+ }\r
+\r
+ switch( mode )\r
+ {\r
+ case LED_OFF :\r
+ case LED_ON :\r
+ if( ( ( id == LED_GREEN ) && ( GreenLED_mode == mode ) ) ||\r
+ ( ( id == LED_RED ) && ( RedLED_mode == mode ) ) )\r
+ {\r
+ return;\r
+ }\r
+\r
+ if( id == LED_GREEN )\r
+ {\r
+ GPIO_WriteBit( GPIOB, GPIO_Pin_8, ( mode == LED_OFF ) ? Bit_RESET : Bit_SET );\r
+\r
+ GreenLED_mode = mode;\r
+ }\r
+ else if( id == LED_RED )\r
+ {\r
+ GPIO_WriteBit( GPIOB, GPIO_Pin_9, ( mode == LED_OFF ) ? Bit_RESET : Bit_SET );\r
+\r
+ RedLED_mode = mode;\r
+ }\r
+\r
+ counter = -1;\r
+ break;\r
+\r
+ case LED_BLINKING_HF :\r
+ counter++;\r
+\r
+ if( counter == HalfPeriod_HF )\r
+ {\r
+ GPIO_WriteBit( GPIOB, ( id == LED_RED ) ? GPIO_Pin_9 : GPIO_Pin_8, Bit_SET );\r
+ }\r
+ else if( ( counter < 0 ) || ( counter >= Period_HF ) )\r
+ {\r
+ GPIO_WriteBit( GPIOB, ( id == LED_RED ) ? GPIO_Pin_9 : GPIO_Pin_8, Bit_RESET );\r
+\r
+ counter = 0;\r
+ }\r
+ break;\r
+\r
+ case LED_BLINKING_LF :\r
+ counter++;\r
+\r
+ if( counter == HalfPeriod_LF )\r
+ {\r
+ GPIO_WriteBit( GPIOB, ( id == LED_RED ) ? GPIO_Pin_9 : GPIO_Pin_8, Bit_SET );\r
+ }\r
+\r
+ else if( ( counter < 0 ) || ( counter >= Period_LF ) )\r
+ {\r
+ GPIO_WriteBit( GPIOB, ( id == LED_RED ) ? GPIO_Pin_9 : GPIO_Pin_8, Bit_RESET );\r
+\r
+ counter = 0;\r
+ }\r
+ break;\r
+\r
+ default :\r
+ break;\r
+ }\r
+\r
+ if( id == LED_GREEN )\r
+ {\r
+ GreenLED_Counter = counter;\r
+ GreenLED_mode = mode;\r
+ }\r
+ else\r
+ {\r
+ RedLED_Counter = counter;\r
+ RedLED_mode = mode;\r
+ }\r
+ }\r
+\r
+/// @endcond\r
+\r
+/* Public functions ----------------------------------------------------------*/\r
+\r
+/*******************************************************************************\r
+*\r
+* LED_Set\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Set a specified LED in a specified mode.\r
+*\r
+* @param[in] id A LED_id specifying the LED to change the mode.\r
+* @param[in] mode A LED_mode describing the new LED mode.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void LED_Set( enum LED_id id, enum LED_mode mode )\r
+ {\r
+ if( id == LED_GREEN )\r
+ {\r
+ GreenLED_newmode = mode;\r
+ }\r
+ else if( id == LED_RED )\r
+ {\r
+ RedLED_newmode = mode;\r
+ }\r
+ }\r
--- /dev/null
+/********************* (C) COPYRIGHT 2007 RAISONANCE S.A.S. *******************/\r
+/**\r
+*\r
+* @file mems.c\r
+* @brief Mems Initialization and management\r
+* @author FL\r
+* @date 07/2007\r
+* @version 1.1\r
+* @date 10/2007\r
+* @version 1.5 various corrections reported by Ron Miller \r
+*\r
+**/\r
+/******************************************************************************/\r
+\r
+/* Includes ------------------------------------------------------------------*/\r
+#include "circle.h"\r
+\r
+/// @cond Internal\r
+\r
+/* Private define ------------------------------------------------------------*/\r
+#define RDOUTXL 0xE8 /*!< Multiple Read from OUTXL */\r
+#define WRCTRL_REG1 0x20 /*!< Single Write CTRL_REG */\r
+#define RDCTRL_REG1 0xA0 /*!< Single Read CTRL_REG */\r
+#define RDID 0x8F /*!< Single Read WHO_AM_I */\r
+#define LOW 0x00 /*!< ChipSelect line low */\r
+#define HIGH 0x01 /*!< ChipSelect line high */\r
+#define DUMMY_BYTE 0xA5\r
+#define MEMS_DIVIDER 1\r
+#define MEMS_TESTING_DIVIDER 101\r
+#define MARGIN 500\r
+#define DELAY_REACT 20\r
+#define MIN_REACT 15\r
+#define DIV_REACT 10\r
+#define GRAD_SHOCK 200000\r
+\r
+/* Private variables ---------------------------------------------------------*/\r
+tMEMS_Info MEMS_Info = {0}; // structure definition in circle.h\r
+int TestingActive = 0;\r
+int StartingFromResetOrShockCounter = 1000;\r
+int TimeCounterForDoubleClick = 0;\r
+int TimeLastShock = 0;\r
+static int divider = 0;\r
+static Rotate_H12_V_Match_TypeDef previous_Screen_Orientation;\r
+u32 Gradient2;\r
+\r
+//Filtering\r
+unsigned N_filtering = 0;\r
+\r
+//Gradient\r
+s16 GradX = 0;\r
+s16 GradY = 0;\r
+s16 GradZ = 0;\r
+\r
+// Pointer move:\r
+// each coordinate (X, Y and Z) is described by 3 variables where suffix means:\r
+// f = flag to indicate that a move has been done. Cleared by the Ptr Manager when acknowledged.\r
+// i = amplitude of the move (Grad / 10)\r
+// t = delay to accept the counter reaction\r
+int fMovePtrX; \r
+int iMovePtrX;\r
+int tMovePtrX;\r
+int fMovePtrY;\r
+int iMovePtrY;\r
+int tMovePtrY;\r
+int fMovePtrZ;\r
+int iMovePtrZ;\r
+int tMovePtrZ;\r
+\r
+s16 XInit = 0;\r
+s16 YInit = 0;\r
+s16 ZInit = 0;\r
+\r
+/* Private function prototypes -----------------------------------------------*/\r
+static void MEMS_ChipSelect( u8 State );\r
+static u8 MEMS_SendByte( u8 byte );\r
+static void MEMS_WriteEnable( void );\r
+static u32 MEMS_ReadOutXY( void );\r
+static void MEMS_WakeUp( void );\r
+\r
+/* Private functions ---------------------------------------------------------*/\r
+\r
+/*******************************************************************************\r
+*\r
+* MEMS_WakeUp\r
+*\r
+*******************************************************************************/\r
+/**\r
+* Wake Up Mems.\r
+*\r
+**/\r
+/******************************************************************************/\r
+static void MEMS_WakeUp( void )\r
+ {\r
+ u8 reg_val;\r
+\r
+ /* read RDCTRL_REG1 */\r
+\r
+ /* Chip Select low */\r
+ MEMS_ChipSelect( LOW );\r
+\r
+ /* Send "RDCTRL_REG1" instruction */\r
+ MEMS_SendByte( RDCTRL_REG1 );\r
+\r
+ reg_val = MEMS_SendByte( DUMMY_BYTE );\r
+\r
+ /* Chip Select high */\r
+ MEMS_ChipSelect( HIGH );\r
+\r
+ /* SET P0:P1 to '11' */\r
+ /* 0xC0 to wake up and 0x30 for full speed frequency (640 Hz). */\r
+ reg_val = reg_val | 0xC0 | 0x30;\r
+\r
+ /* Chip Select low */\r
+ MEMS_ChipSelect( LOW );\r
+\r
+ /* Send "WRCTRL_REG1" instruction */\r
+ MEMS_SendByte( WRCTRL_REG1 );\r
+ MEMS_SendByte( reg_val );\r
+\r
+ /* Chip Select high */\r
+ MEMS_ChipSelect( HIGH );\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* MEMS_ReadOutXY\r
+*\r
+*******************************************************************************/\r
+/**\r
+* Reads X and Y Out.\r
+*\r
+* @return An unsigned 32 bit word with the highest 16 bits containing the Y\r
+* and the lowest 16 bits the X.\r
+*\r
+**/\r
+/******************************************************************************/\r
+static u32 MEMS_ReadOutXY( void )\r
+ {\r
+ u8 OutXL;\r
+ u8 OutXH;\r
+ u8 OutYL;\r
+ u8 OutYH;\r
+ u8 OutZL;\r
+ u8 OutZH;\r
+\r
+ /* Chip Select low */\r
+ MEMS_ChipSelect( LOW );\r
+\r
+ /* Send "RDOUTXL" instruction */\r
+ MEMS_SendByte( RDOUTXL );\r
+\r
+ /* Read a byte */\r
+ OutXL = MEMS_SendByte( DUMMY_BYTE );\r
+\r
+ /* Read a byte */\r
+ OutXH = MEMS_SendByte( DUMMY_BYTE );\r
+\r
+ /* Read a byte */\r
+ OutYL = MEMS_SendByte( DUMMY_BYTE );\r
+\r
+ /* Read a byte */\r
+ OutYH = MEMS_SendByte( DUMMY_BYTE );\r
+\r
+ /* Read a byte */\r
+ OutZL = MEMS_SendByte( DUMMY_BYTE );\r
+\r
+ /* Read a byte */\r
+ OutZH = MEMS_SendByte( DUMMY_BYTE );\r
+\r
+ MEMS_Info.OutX = OutXL + ( OutXH << 8 );\r
+ MEMS_Info.OutY = OutYL + ( OutYH << 8 );\r
+ MEMS_Info.OutZ = OutZL + ( OutZH << 8 );\r
+\r
+ /* Chip Select high */\r
+ MEMS_ChipSelect( HIGH );\r
+\r
+ MEMS_Info.OutX_F4 += ( MEMS_Info.OutX - ( MEMS_Info.OutX_F4 >> 2 ) ); // Filter on 4 values.\r
+ MEMS_Info.OutY_F4 += ( MEMS_Info.OutY - ( MEMS_Info.OutY_F4 >> 2 ) ); // Filter on 4 values.\r
+ MEMS_Info.OutZ_F4 += ( MEMS_Info.OutZ - ( MEMS_Info.OutZ_F4 >> 2 ) ); // Filter on 4 values.\r
+\r
+ MEMS_Info.OutX_F16 += ( MEMS_Info.OutX - ( MEMS_Info.OutX_F16 >> 4 ) ); // Filter on 16 values.\r
+ MEMS_Info.OutY_F16 += ( MEMS_Info.OutY - ( MEMS_Info.OutY_F16 >> 4 ) ); // Filter on 16 values.\r
+ MEMS_Info.OutZ_F16 += ( MEMS_Info.OutZ - ( MEMS_Info.OutZ_F16 >> 4 ) ); // Filter on 16 values.\r
+\r
+ MEMS_Info.OutX_F64 += ( MEMS_Info.OutX - ( MEMS_Info.OutX_F64 >> 6 ) ); // Filter on 64 values.\r
+ MEMS_Info.OutY_F64 += ( MEMS_Info.OutY - ( MEMS_Info.OutY_F64 >> 6 ) ); // Filter on 64 values.\r
+ MEMS_Info.OutZ_F64 += ( MEMS_Info.OutZ - ( MEMS_Info.OutZ_F64 >> 6 ) ); // Filter on 64 values.\r
+\r
+ MEMS_Info.OutX_F256 += ( MEMS_Info.OutX - ( MEMS_Info.OutX_F256 >> 8) ); // Filter on 256 values.\r
+ MEMS_Info.OutY_F256 += ( MEMS_Info.OutY - ( MEMS_Info.OutY_F256 >> 8) ); // Filter on 256 values.\r
+ MEMS_Info.OutZ_F256 += ( MEMS_Info.OutZ - ( MEMS_Info.OutZ_F256 >> 8) ); // Filter on 256 values.\r
+\r
+ if( N_filtering < 256 )\r
+ {\r
+ // Just to validate the calculated average values.\r
+ N_filtering++; \r
+ }\r
+\r
+ return ( MEMS_Info.OutX + ( MEMS_Info.OutY << 16 ) );\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* MEMS_ChipSelect\r
+*\r
+*******************************************************************************/\r
+/**\r
+* Selects or deselects the MEMS device.\r
+*\r
+* @param[in] State Level to be applied on ChipSelect pin.\r
+*\r
+**/\r
+/******************************************************************************/\r
+static void MEMS_ChipSelect( u8 State )\r
+ {\r
+ /* Set High or low the chip select line on PA.4 pin */\r
+ GPIO_WriteBit( GPIOD, GPIO_Pin_2, (BitAction)State );\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* MEMS_SendByte\r
+*\r
+*******************************************************************************/\r
+/**\r
+* Sends a byte through the SPI interface and return the byte received from \r
+* the SPI bus.\r
+*\r
+* @param[in] byte The byte to send to the SPI interface. \r
+*\r
+* @return The byte returned by the SPI bus.\r
+*\r
+**/\r
+/******************************************************************************/\r
+static u8 MEMS_SendByte( u8 byte )\r
+ {\r
+ /* Loop while DR register in not emplty */\r
+ while( SPI_GetFlagStatus( SPI2, SPI_FLAG_TXE ) == RESET );\r
+\r
+ /* Send byte through the SPI2 peripheral */\r
+ SPI_SendData( SPI2, byte );\r
+\r
+ /* Wait to receive a byte */\r
+ while( SPI_GetFlagStatus( SPI2, SPI_FLAG_RXNE ) == RESET );\r
+\r
+ /* Return the byte read from the SPI bus */\r
+ return SPI_ReceiveData( SPI2 );\r
+ }\r
+\r
+/* Public functions for CircleOS ---------------------------------------------*/\r
+\r
+/*******************************************************************************\r
+*\r
+* MEMS_Init\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Initializes the peripherals used by the SPI MEMS driver.\r
+*\r
+* @attention This function must <b>NOT</b> be called by the user.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void MEMS_Init(void)\r
+{\r
+ SPI_InitTypeDef SPI_InitStructure;\r
+ GPIO_InitTypeDef GPIO_InitStructure;\r
+\r
+ /* Configure PC6 and PC7 as Output push-pull For MEMS*/\r
+ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;\r
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;\r
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;\r
+\r
+ GPIO_Init( GPIOC, &GPIO_InitStructure );\r
+\r
+ /* Enable SPI2 and GPIOA clocks */\r
+ RCC_APB1PeriphClockCmd( RCC_APB1Periph_SPI2, ENABLE );\r
+ RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE );\r
+ RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOD, ENABLE );\r
+\r
+ /* Configure SPI2 pins: SCK, MISO and MOSI */\r
+ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;\r
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;\r
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;\r
+\r
+ GPIO_Init( GPIOB, &GPIO_InitStructure );\r
+\r
+ /* Configure PD2 as Output push-pull, used as MEMS Chip select */\r
+ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;\r
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;\r
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;\r
+\r
+ GPIO_Init( GPIOD, &GPIO_InitStructure );\r
+\r
+ /* SPI2 configuration */\r
+ SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;\r
+ SPI_InitStructure.SPI_Mode = SPI_Mode_Master;\r
+ SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;\r
+ SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;\r
+ SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;\r
+ SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;\r
+ SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;\r
+ SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;\r
+ SPI_InitStructure.SPI_CRCPolynomial = 7;\r
+\r
+ SPI_Init( SPI2, &SPI_InitStructure );\r
+\r
+ /* Enable SPI2 */\r
+ SPI_Cmd( SPI2, ENABLE );\r
+\r
+ if( MEMS_ReadID() != 0x3A )\r
+ {\r
+ int i;\r
+\r
+ // Try to resynchronize\r
+ for( i = 0 ; i < 17 ; i++ )\r
+ {\r
+ /* Configure SPI2 pins: SCK, MISO and MOSI */\r
+ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15;\r
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;\r
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;\r
+\r
+ GPIO_Init( GPIOB, &GPIO_InitStructure );\r
+ GPIO_WriteBit( GPIOB, GPIO_Pin_15, HIGH );\r
+ MEMS_ChipSelect( LOW );\r
+\r
+ GPIO_WriteBit( GPIOB, GPIO_Pin_13, LOW );\r
+ GPIO_WriteBit( GPIOB, GPIO_Pin_13, HIGH );\r
+ MEMS_ChipSelect( HIGH );\r
+\r
+ /* Configure again PB. SCK as SPI2 pin */\r
+ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15;\r
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;\r
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;\r
+\r
+ GPIO_Init( GPIOB, &GPIO_InitStructure );\r
+ if ( MEMS_ReadID() == 0x3A )\r
+ {\r
+ break;\r
+ }\r
+ }\r
+\r
+ if( i == 17 )\r
+ {\r
+ DRAW_DisplayString( 1, 50, "Test MEM ID Failed", 17 );\r
+ }\r
+ }\r
+\r
+ /* Read for the first time */\r
+ N_filtering = 0;\r
+\r
+ MEMS_ReadOutXY();\r
+\r
+ MEMS_Info.OutX_F4 = MEMS_Info.OutX_F16 = MEMS_Info.OutX_F64 = MEMS_Info.OutX_F256 = MEMS_Info.OutX;\r
+ MEMS_Info.OutY_F4 = MEMS_Info.OutY_F16 = MEMS_Info.OutY_F64 = MEMS_Info.OutY_F256 = MEMS_Info.OutY;\r
+ MEMS_Info.OutZ_F4 = MEMS_Info.OutZ_F16 = MEMS_Info.OutZ_F64 = MEMS_Info.OutZ_F256 = MEMS_Info.OutZ;\r
+\r
+ /* Init X and Y*/\r
+ MEMS_GetPosition( &XInit, &YInit );\r
+\r
+ /* Wake Up Mems*/\r
+ MEMS_WakeUp();\r
+}\r
+\r
+/*******************************************************************************\r
+*\r
+* MEMS_Handler\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Called by the CircleOS scheduler to manage the MEMS. The Circle beeps if the\r
+* MEMS is shocked.\r
+*\r
+* @attention This function must <b>NOT</b> be called by the user.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void MEMS_Handler( void )\r
+ {\r
+ char buffer [20];\r
+ int i;\r
+ int ofs_disp = 0;\r
+\r
+ if( StartingFromResetOrShockCounter )\r
+ {\r
+ StartingFromResetOrShockCounter--;\r
+ }\r
+ TimeCounterForDoubleClick++;\r
+\r
+ MEMS_ReadOutXY();\r
+\r
+ // Evaluate gradients\r
+ GradX = ( MEMS_Info.OutX_F4 >> 2 ) - MEMS_Info.OutX;\r
+ GradY = ( MEMS_Info.OutY_F4 >> 2 ) - MEMS_Info.OutY;\r
+ GradZ = ( MEMS_Info.OutZ_F4 >> 2 ) - MEMS_Info.OutZ;\r
+\r
+ // Decide whether a direction is selected\r
+ if( tMovePtrX == 0 )\r
+ {\r
+ if( ( GradX > MIN_REACT ) || ( GradX < -MIN_REACT ) )\r
+ {\r
+ iMovePtrX = GradX / DIV_REACT; \r
+ tMovePtrX = DELAY_REACT;\r
+ fMovePtrX = 1;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ tMovePtrX--;\r
+ }\r
+\r
+ if( tMovePtrY == 0 )\r
+ {\r
+ if( ( GradY > MIN_REACT ) || ( GradY < -MIN_REACT ) )\r
+ {\r
+ iMovePtrY = GradY / DIV_REACT; //FL071012 rrm fix\r
+ tMovePtrY = DELAY_REACT;\r
+ fMovePtrY = 1;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ tMovePtrY--;\r
+ }\r
+\r
+ if( tMovePtrZ==0 )\r
+ {\r
+ if( ( GradZ > MIN_REACT ) || ( GradY < -MIN_REACT ) )\r
+ {\r
+ iMovePtrZ = GradZ / DIV_REACT;\r
+ tMovePtrZ = DELAY_REACT;\r
+ fMovePtrZ = 1;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ tMovePtrZ--;\r
+ }\r
+\r
+ Gradient2 = (s32)GradX * (s32)GradX + (s32)GradY * (s32)GradY + (s32)GradZ * (s32)GradZ;\r
+\r
+ // MEMS is shocked, let's beep!\r
+ if( ( Gradient2 > GRAD_SHOCK ) && ( BUZZER_GetMode() == BUZZER_OFF ) && ( StartingFromResetOrShockCounter == 0 ) )\r
+ {\r
+ MEMS_Info.Shocked++;\r
+/*FL071007 = 1;\r
+ Suggested by Bob Seabrook: a further posiblity is to increment Shocked rather than just setting it\r
+ So it can still be tested for non zero as before but one can get more\r
+ info from the int without extra cost. */\r
+\r
+#define DELAY_BETWEEN_TWO_SHOCK 20\r
+#define MAX_DELAY_FOR_DOUBLECLICK 150\r
+ StartingFromResetOrShockCounter = DELAY_BETWEEN_TWO_SHOCK; //< filter: short delay before detecting the next shock\r
+ if ( (TimeCounterForDoubleClick - TimeLastShock) < MAX_DELAY_FOR_DOUBLECLICK )\r
+ {\r
+ MEMS_Info.DoubleClick++;\r
+ TimeLastShock = 0;\r
+ }\r
+ else\r
+ {\r
+ TimeLastShock = TimeCounterForDoubleClick;\r
+ } \r
+ BUZZER_SetMode( BUZZER_SHORTBEEP );\r
+ }\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* MEMS_ReadID\r
+*\r
+*******************************************************************************/\r
+/**\r
+* Reads SPI chip identification.\r
+*\r
+* @return The SPI chip identification.\r
+*\r
+**/\r
+/******************************************************************************/\r
+u8 MEMS_ReadID( void )\r
+ {\r
+ u8 Temp = 0;\r
+\r
+ /* Chip Select low */\r
+ MEMS_ChipSelect( LOW );\r
+\r
+ /* Send "RDID" instruction */\r
+ MEMS_SendByte( RDID );\r
+\r
+ /* Read a byte from the MEMS */\r
+ Temp = MEMS_SendByte( DUMMY_BYTE );\r
+\r
+ /* Chip Select low */\r
+ MEMS_ChipSelect( HIGH );\r
+\r
+ return Temp;\r
+ }\r
+\r
+/// @endcond\r
+\r
+/* Public functions ----------------------------------------------------------*/\r
+\r
+/*******************************************************************************\r
+*\r
+* MEMS_GetPosition\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Returns the current (relative) position of the Primer.\r
+* Only X-Y axis are considered here. \r
+*\r
+* @param[out] pX Current horizontal coordinate.\r
+* @param[out] pY Current vertical coordinate.\r
+*\r
+* @warning The (0x0) point in on the low left corner.\r
+* @note For absolute position information use MEMS_GetInfo()\r
+*\r
+**/\r
+/******************************************************************************/\r
+void MEMS_GetPosition( s16* pX, s16* pY )\r
+ {\r
+ *pX = MEMS_Info.OutX - XInit;\r
+ *pY = MEMS_Info.OutY - YInit;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* MEMS_GetRotation\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Returns current screen orientation.\r
+*\r
+* @param[out] pH12 Current screen orientation.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void MEMS_GetRotation( Rotate_H12_V_Match_TypeDef* pH12 )\r
+ {\r
+ s16 sX = MEMS_Info.OutX;\r
+ s16 sY = MEMS_Info.OutY;\r
+\r
+ if( ( ( sX <= -MARGIN ) && ( sY <= 0 ) && (sX<=sY ) ) || \r
+ ( ( sX <=- MARGIN ) && ( sY > 0) && (sX <= (-sY ) ) ) )\r
+ {\r
+ // 1st case: x<0, |x|>y => H12 = V9\r
+ *pH12 = V9;\r
+ }\r
+ else if( ( ( sY <= -MARGIN ) && ( sX <= 0 ) && ( sY <= sX ) ) ||\r
+ ( ( sY <= -MARGIN ) && ( sX > 0 ) && ( sY <= (-sX ) ) ) ) \r
+ {\r
+ // 2nd case: y<0, |y|>x => H12 = V12\r
+ *pH12 = V12;\r
+ }\r
+ else if( ( ( sX >= MARGIN ) && ( sY <= 0 ) && ( sX >= (-sY) ) ) || \r
+ ( ( sX >= MARGIN ) && ( sY > 0 ) && ( sX >= sY ) ) )\r
+ {\r
+ // 3rd case: x>0, |x|>y => H12=V3\r
+ *pH12 = V3;\r
+ }\r
+ else if( ( ( sY >= MARGIN ) && ( sX <= 0 ) && ( sY >= (-sX ) ) ) ||\r
+ ( ( sY >= MARGIN ) && ( sX > 0 ) && ( sY >= sX ) ) )\r
+ {\r
+ // 4th case: y>0, |y|>x => H12=V6\r
+ *pH12 = V6;\r
+ }\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* MEMS_SetNeutral\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Set current position as "neutral position".\r
+*\r
+**/\r
+/******************************************************************************/\r
+void MEMS_SetNeutral( void )\r
+ {\r
+ // Set Neutral position.\r
+ MEMS_GetPosition( &XInit, &YInit );\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* MEMS_GetInfo\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Return the current MEMS information (state, absolute position...).\r
+*\r
+* @return a pointer to tMEMS_Info\r
+*\r
+**/\r
+/******************************************************************************/\r
+tMEMS_Info* MEMS_GetInfo( void )\r
+ {\r
+ return &MEMS_Info;\r
+ }\r
--- /dev/null
+/********************* (C) COPYRIGHT 2007 RAISONANCE S.A.S. *******************/\r
+/**\r
+*\r
+* @file pointer.c\r
+* @brief Various utilities for the pointer management for STM32-primer.\r
+* @author FL\r
+* @date 07/2007\r
+* @version 1.1\r
+* @date 10/2007\r
+* @version 1.5 various corrections reported by Ron Miller to suppress jittery\r
+*\r
+*\r
+**/\r
+/******************************************************************************/\r
+\r
+/* Includes ------------------------------------------------------------------*/\r
+#include "circle.h"\r
+\r
+/// @cond Internal\r
+\r
+/* Private define ------------------------------------------------------------*/\r
+#define POS_MIN 0\r
+#define POS_MAX (SCREEN_WIDTH - POINTER_WIDTH - 1)\r
+#define POINTER_DIVIDER 50\r
+#define POINTER_DEFAULT_COLOR RGB_BLUE\r
+\r
+// defines for pointer move\r
+#define ANGLEPAUSE 500 \r
+#define DEFAULT_ANGLESTART 25\r
+#define MIN_ANGLE_FOR_SHIFT_UP (ANGLEPAUSE+CurrentAngleStart)\r
+#define MIN_ANGLE_FOR_SHIFT_DOWN (ANGLEPAUSE-CurrentAngleStart)\r
+#define MIN_ANGLE_FOR_SHIFT_RIGHT (signed)(0+CurrentAngleStart)\r
+#define MIN_ANGLE_FOR_SHIFT_LEFT (signed)(0-CurrentAngleStart)\r
+#define DEFAULT_SPEED_ON_ANGLE 60\r
+\r
+/* Private variables ---------------------------------------------------------*/\r
+static int divider = 0;\r
+\r
+unsigned char BallPointerBmp[ POINTER_WIDTH ] = { 0x38, 0x7C, 0xFF, 0xFF, 0xFF, 0x7C, 0x38 } ;\r
+unsigned char locbuf[ POINTER_WIDTH ];\r
+unsigned char DefaultAreaStore[ 2 * POINTER_WIDTH * POINTER_WIDTH ];\r
+\r
+// Variables for pointer.\r
+u8* CurrentPointerBmp = 0;\r
+u8 CurrentPointerWidth = 0;\r
+u8 CurrentPointerHeight = 0;\r
+u16 CurrentSpeedOnAngle = DEFAULT_SPEED_ON_ANGLE;\r
+u32 CurrentAngleStart = DEFAULT_ANGLESTART ;\r
+unsigned char* ptrAreaStore = DefaultAreaStore;\r
+u16 CurrentPointerColor = POINTER_DEFAULT_COLOR;\r
+enum POINTER_mode Pointer_Mode = POINTER_UNDEF;\r
+enum POINTER_state Pointer_State = POINTER_S_UNDEF;\r
+\r
+s16 OUT_X;\r
+s16 OUT_Y;\r
+\r
+// Init pointer Info Structure (structure definition in circle.h)\r
+tPointer_Info POINTER_Info = {\r
+ SCREEN_WIDTH - POINTER_WIDTH / 2,\r
+ SCREEN_WIDTH - POINTER_WIDTH / 2,\r
+ 0,\r
+ 0} ;\r
+\r
+/* Private function prototypes -----------------------------------------------*/\r
+static int POINTER_Move ( void );\r
+\r
+/* Private functions ---------------------------------------------------------*/\r
+\r
+/*******************************************************************************\r
+*\r
+* Pointer_Move\r
+*\r
+*******************************************************************************/\r
+/**\r
+* Moves LCD pointer according to Mems indications.\r
+*\r
+* @retval 0 The pointer resides in the screen\r
+* @retval -1 The pointer touche the screen edges.\r
+*\r
+**/\r
+/******************************************************************************/\r
+static int POINTER_Move( void )\r
+ {\r
+ int res = 0;\r
+ s16 oldPointer_xPos = POINTER_Info.xPos;\r
+ s16 oldPointer_yPos = POINTER_Info.yPos;\r
+ s16 unmodied_shift_PosX;\r
+ s16 unmodied_shift_PosY;\r
+ signed outx = MEMS_Info.OutX_F16 >> 4;\r
+ signed outy = MEMS_Info.OutY_F16 >> 4;\r
+\r
+ POINTER_Info.shift_PosX = POINTER_Info.shift_PosY = 0;\r
+\r
+ // The move depends on the screen orientation\r
+ switch( LCD_GetScreenOrientation() )\r
+ {\r
+ // north\r
+ case V12 :\r
+ MEMS_Info.RELATIVE_X = outx;\r
+ MEMS_Info.RELATIVE_Y = outy;\r
+\r
+ if( outx > MIN_ANGLE_FOR_SHIFT_RIGHT )\r
+ {\r
+ POINTER_Info.shift_PosX = ( outx - MIN_ANGLE_FOR_SHIFT_RIGHT );\r
+ }\r
+ else if( outx < MIN_ANGLE_FOR_SHIFT_LEFT )\r
+ {\r
+ POINTER_Info.shift_PosX = ( outx - MIN_ANGLE_FOR_SHIFT_LEFT );\r
+ } \r
+\r
+ if( outy < -MIN_ANGLE_FOR_SHIFT_UP )\r
+ {\r
+ POINTER_Info.shift_PosY = ( outy + MIN_ANGLE_FOR_SHIFT_UP );\r
+ }\r
+ else if( outy > -MIN_ANGLE_FOR_SHIFT_DOWN )\r
+ {\r
+ POINTER_Info.shift_PosY = ( outy + MIN_ANGLE_FOR_SHIFT_DOWN );\r
+ }\r
+ break;\r
+\r
+ // West\r
+ case V9 : \r
+ MEMS_Info.RELATIVE_X = -( outy );\r
+ MEMS_Info.RELATIVE_Y = outx;\r
+\r
+ if( outy > MIN_ANGLE_FOR_SHIFT_RIGHT )\r
+ {\r
+ POINTER_Info.shift_PosX = -( outy - MIN_ANGLE_FOR_SHIFT_RIGHT );\r
+ }\r
+ else if( outy < MIN_ANGLE_FOR_SHIFT_LEFT )\r
+ {\r
+ POINTER_Info.shift_PosX = -( outy - MIN_ANGLE_FOR_SHIFT_LEFT );\r
+ }\r
+\r
+ if( outx < -MIN_ANGLE_FOR_SHIFT_UP )\r
+ {\r
+ POINTER_Info.shift_PosY = ( outx + MIN_ANGLE_FOR_SHIFT_UP );\r
+ }\r
+ else if( outx > -MIN_ANGLE_FOR_SHIFT_DOWN )\r
+ {\r
+ POINTER_Info.shift_PosY = ( outx + MIN_ANGLE_FOR_SHIFT_DOWN );\r
+ }\r
+ break;\r
+\r
+ // South\r
+ case V6 : \r
+ MEMS_Info.RELATIVE_X = -( outx );\r
+ MEMS_Info.RELATIVE_Y = -( outy );\r
+\r
+ if( outx > MIN_ANGLE_FOR_SHIFT_RIGHT )\r
+ {\r
+ POINTER_Info.shift_PosX = ( MIN_ANGLE_FOR_SHIFT_RIGHT - outx );\r
+ }\r
+ else if( outx < MIN_ANGLE_FOR_SHIFT_LEFT )\r
+ {\r
+ POINTER_Info.shift_PosX = ( MIN_ANGLE_FOR_SHIFT_LEFT - outx );\r
+ }\r
+\r
+ if( outy > MIN_ANGLE_FOR_SHIFT_UP )\r
+ {\r
+ POINTER_Info.shift_PosY = -( outy - MIN_ANGLE_FOR_SHIFT_UP );\r
+ }\r
+ else if( outy < MIN_ANGLE_FOR_SHIFT_DOWN )\r
+ {\r
+ POINTER_Info.shift_PosY = +( MIN_ANGLE_FOR_SHIFT_DOWN - outy );\r
+ }\r
+ break;\r
+\r
+ // East\r
+ case V3 : \r
+ MEMS_Info.RELATIVE_X = outy;\r
+ MEMS_Info.RELATIVE_Y = -( outx );\r
+\r
+ if( outy > MIN_ANGLE_FOR_SHIFT_RIGHT )\r
+ {\r
+ POINTER_Info.shift_PosX = ( outy - MIN_ANGLE_FOR_SHIFT_RIGHT );\r
+ }\r
+ else if( outy < MIN_ANGLE_FOR_SHIFT_LEFT )\r
+ {\r
+ POINTER_Info.shift_PosX = ( outy - MIN_ANGLE_FOR_SHIFT_LEFT );\r
+ }\r
+\r
+ if( outx > MIN_ANGLE_FOR_SHIFT_UP )\r
+ {\r
+ POINTER_Info.shift_PosY = ( MIN_ANGLE_FOR_SHIFT_UP - outx);\r
+ }\r
+ else if( outx < MIN_ANGLE_FOR_SHIFT_DOWN )\r
+ {\r
+ POINTER_Info.shift_PosY = ( MIN_ANGLE_FOR_SHIFT_DOWN - outx );\r
+ }\r
+\r
+ default :\r
+ break;\r
+ }\r
+\r
+ unmodied_shift_PosX = POINTER_Info.shift_PosX;\r
+ unmodied_shift_PosY = POINTER_Info.shift_PosY;\r
+\r
+ POINTER_Info.shift_PosX /= CurrentSpeedOnAngle;\r
+ POINTER_Info.shift_PosY /= CurrentSpeedOnAngle;\r
+\r
+ if( Pointer_Mode == POINTER_APPLICATION )\r
+ {\r
+ if ( Application_Pointer_Mgr )\r
+ {\r
+ Application_Pointer_Mgr( POINTER_Info.shift_PosX, POINTER_Info.shift_PosY );\r
+ }\r
+\r
+ return 0;\r
+ }\r
+\r
+ POINTER_Info.xPos += POINTER_Info.shift_PosX;\r
+ POINTER_Info.yPos += POINTER_Info.shift_PosY;\r
+\r
+ if( POINTER_Info.xPos < POINTER_Info.X_PosMin )\r
+ {\r
+ POINTER_Info.xPos = POINTER_Info.X_PosMin;\r
+ }\r
+\r
+ if( POINTER_Info.xPos > POINTER_Info.X_PosMax )\r
+ {\r
+ POINTER_Info.xPos = POINTER_Info.X_PosMax;\r
+ }\r
+\r
+ if( POINTER_Info.yPos < POINTER_Info.Y_PosMin )\r
+ {\r
+ POINTER_Info.yPos = POINTER_Info.Y_PosMin;\r
+ }\r
+\r
+ if( POINTER_Info.yPos > POINTER_Info.Y_PosMax )\r
+ {\r
+ POINTER_Info.yPos = POINTER_Info.Y_PosMax;\r
+ }\r
+\r
+ if( ( Pointer_Mode != POINTER_MENU ) && ( Pointer_Mode != POINTER_RESTORE_LESS ) &&\r
+ ( ( oldPointer_xPos != POINTER_Info.xPos ) || ( oldPointer_yPos != POINTER_Info.yPos ) ) )\r
+ {\r
+ // Use default area.\r
+ POINTER_SetCurrentAreaStore( 0 );\r
+\r
+ // Restore previously drawn area.\r
+ POINTER_Restore( oldPointer_xPos, oldPointer_yPos, POINTER_WIDTH, POINTER_WIDTH );\r
+\r
+ // Save new area and draw pointer\r
+ POINTER_Save( POINTER_Info.xPos, POINTER_Info.yPos, POINTER_WIDTH, POINTER_WIDTH );\r
+ POINTER_Draw( POINTER_Info.xPos, POINTER_Info.yPos, POINTER_WIDTH, POINTER_WIDTH, CurrentPointerBmp );\r
+ }\r
+\r
+ if( ( Pointer_Mode == POINTER_RESTORE_LESS ) &&\r
+ ( ( oldPointer_xPos != POINTER_Info.xPos ) || ( oldPointer_yPos != POINTER_Info.yPos ) ) )\r
+ {\r
+ // Use default area.\r
+ POINTER_SetCurrentAreaStore( 0 );\r
+\r
+ // Restore previously drawn area.\r
+ POINTER_Restore( oldPointer_xPos, oldPointer_yPos, CurrentPointerWidth, CurrentPointerHeight );\r
+\r
+ // Save new area and draw pointer\r
+ POINTER_Save( POINTER_Info.xPos, POINTER_Info.yPos, CurrentPointerWidth, CurrentPointerHeight );\r
+ POINTER_Draw( POINTER_Info.xPos, POINTER_Info.yPos, CurrentPointerWidth, CurrentPointerHeight, CurrentPointerBmp );\r
+ }\r
+\r
+ // Is the pointer touching one edge of the screen ?\r
+ if( ( POINTER_Info.xPos == POS_MIN ) || ( POINTER_Info.yPos == POS_MIN ) ||\r
+ ( POINTER_Info.xPos == POS_MAX ) || ( POINTER_Info.yPos == POS_MAX ) )\r
+ {\r
+ res = -1;\r
+ }\r
+\r
+ return res;\r
+ }\r
+\r
+/* Public functions for CircleOS ---------------------------------------------*/\r
+\r
+/*******************************************************************************\r
+*\r
+* POINTER_Init\r
+*\r
+*******************************************************************************/\r
+/**\r
+* Initialize pointer. Called at CircleOS startup. Set default pointer at the\r
+* middle of the screen and allows it to move into the whole screen.\r
+*\r
+* @attention This function must <b>NOT</b> be called by the user.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void POINTER_Init( void )\r
+ {\r
+ // Increase pointer sensibility.\r
+ POINTER_SetCurrentSpeedOnAngle( DEFAULT_SPEED_ON_ANGLE );\r
+ POINTER_SetCurrentAngleStart( DEFAULT_ANGLESTART );\r
+ POINTER_SetCurrentPointer( POINTER_WIDTH, POINTER_WIDTH, BallPointerBmp );\r
+ POINTER_SetMode( POINTER_ON );\r
+ POINTER_SetPos( 56, 56 );\r
+ POINTER_SetRectScreen();\r
+\r
+ CurrentPointerColor = POINTER_DEFAULT_COLOR;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* POINTER_Handler\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Called by the CircleOS scheduler to manage the pointer.\r
+*\r
+* @attention This function must <b>NOT</b> be called by the user.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void POINTER_Handler( void )\r
+ {\r
+ switch( Pointer_Mode )\r
+ {\r
+ // Nothing to do!\r
+ case POINTER_OFF :\r
+ case POINTER_UNDEF:\r
+ return;\r
+ }\r
+\r
+ // Where is the MEMS ?\r
+ MEMS_GetPosition( &OUT_X, &OUT_Y );\r
+\r
+ POINTER_Move();\r
+ }\r
+\r
+/// @endcond\r
+\r
+/* Public functions ----------------------------------------------------------*/\r
+\r
+/*******************************************************************************\r
+*\r
+* POINTER_SetCurrentPointer\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Set the dimension and the bitmap of the pointer.\r
+* @note The bitmap is a monochrome one!\r
+*\r
+* @param[in] width width of the pointer (u8)\r
+* @param[in] height height of the pointer (u8)\r
+* @param[in] bmp pointer to an array of width * height bits.\r
+*\r
+**/\r
+/********************************************************************************/\r
+void POINTER_SetCurrentPointer( u8 width, u8 height, u8* bmp )\r
+ {\r
+ if( !bmp )\r
+ {\r
+ bmp = BallPointerBmp;\r
+ }\r
+\r
+ CurrentPointerWidth = width;\r
+ CurrentPointerHeight = height;\r
+ CurrentPointerBmp = bmp;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* POINTER_GetCurrentAngleStart\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Get the current minimal angle to move pointer\r
+*\r
+* @return current minimal angle.\r
+*\r
+**/\r
+/******************************************************************************/\r
+u16 POINTER_GetCurrentAngleStart( void )\r
+ {\r
+ return CurrentAngleStart;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* POINTER_SetCurrentAngleStart\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Set the current minimal angle to move pointer\r
+*\r
+* @param[in] newangle The new minimal angle to move pointer.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void POINTER_SetCurrentAngleStart( u16 newangle )\r
+ {\r
+ CurrentAngleStart = newangle;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* POINTER_GetCurrentSpeedOnAngle\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Return the current speed/angle ratio.\r
+*\r
+* @return current ratio.\r
+*\r
+**/\r
+/******************************************************************************/\r
+u16 POINTER_GetCurrentSpeedOnAngle( void )\r
+ {\r
+ return CurrentSpeedOnAngle;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* POINTER_SetCurrentSpeedOnAngle\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Set the current speed/angle ratio.\r
+*\r
+* @param[in] newspeed New speed/angle ratio.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void POINTER_SetCurrentSpeedOnAngle( u16 newspeed )\r
+ {\r
+ CurrentSpeedOnAngle = newspeed;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* POINTER_SetCurrentAreaStore\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Change the current storage area. If the provided value is NULL, the default\r
+* storage area will be used.\r
+*\r
+* @param[in] ptr New storage area (may be null).\r
+*\r
+* @warning Memory space pointed by the provided pointer must be large enough\r
+* to store a color bitmap corresponding to the pointer area.\r
+* In other words, space must be width * height * 2 large.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void POINTER_SetCurrentAreaStore( u8* ptr )\r
+ {\r
+ ptrAreaStore = ( ptr == 0 ) ? DefaultAreaStore : ptr;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* POINTER_SetMode\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Change the current mode of the pointer management.\r
+*\r
+* @note Must be called only ONCE!!\r
+*\r
+* @param[in] mode New pointer management mode.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void POINTER_SetMode( enum POINTER_mode mode )\r
+ {\r
+ u16* ptr;\r
+ u16 i;\r
+ u16 color;\r
+\r
+ switch( mode )\r
+ {\r
+ case POINTER_APPLICATION:\r
+ ptr = (u16*)DefaultAreaStore;\r
+ color = DRAW_GetBGndColor();\r
+\r
+ for ( i = 0; i < (CurrentPointerWidth*CurrentPointerHeight) ; i++ )\r
+ {\r
+ *ptr++ = color;\r
+ }\r
+\r
+ POINTER_Draw( POINTER_Info.xPos, POINTER_Info.yPos, CurrentPointerWidth, CurrentPointerHeight, CurrentPointerBmp );\r
+ break;\r
+\r
+ case POINTER_RESTORE_LESS:\r
+ POINTER_Draw( POINTER_Info.xPos, POINTER_Info.yPos, CurrentPointerWidth, CurrentPointerHeight, CurrentPointerBmp );\r
+ break;\r
+\r
+ case POINTER_ON:\r
+ POINTER_SetCurrentAreaStore( 0 );\r
+ POINTER_Save( POINTER_Info.xPos, POINTER_Info.yPos, POINTER_WIDTH, POINTER_WIDTH );\r
+ POINTER_Draw( POINTER_Info.xPos, POINTER_Info.yPos, CurrentPointerWidth, CurrentPointerHeight,CurrentPointerBmp );\r
+ break;\r
+\r
+ case POINTER_OFF:\r
+ POINTER_Info.xPos = ( SCREEN_WIDTH - POINTER_WIDTH ) / 2;\r
+ POINTER_Info.yPos = ( SCREEN_WIDTH - POINTER_WIDTH ) / 2;\r
+\r
+ case POINTER_MENU:\r
+ if( Pointer_Mode == POINTER_ON )\r
+ {\r
+ POINTER_SetCurrentAreaStore( 0 );\r
+ POINTER_Restore( POINTER_Info.xPos, POINTER_Info.yPos, POINTER_WIDTH, POINTER_WIDTH );\r
+ }\r
+ break;\r
+ }\r
+\r
+ Pointer_Mode = mode;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* POINTER_GetMode\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Return the current mode of the pointer management\r
+*\r
+* @return Current pointer management mode.\r
+*\r
+**/\r
+/******************************************************************************/\r
+enum POINTER_mode POINTER_GetMode( void )\r
+ {\r
+ return Pointer_Mode;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* POINTER_GetState\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Return current pointer state.\r
+*\r
+* @return Current pointer state.\r
+*\r
+**/\r
+/******************************************************************************/\r
+enum POINTER_state POINTER_GetState( void )\r
+ {\r
+ return Pointer_State;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* POINTER_SetRect\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Set new limits for the move of the pointer\r
+*\r
+* @param[in] x Horizontal coordinate of the bottom left corner of the new area.\r
+* @param[in] y Vertical coordinate of the bottom left corner of the new are.\r
+* @param[in] width New area width.\r
+* @param[in] height New area height.\r
+*\r
+* @warning The (0x0) point in on the low left corner.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void POINTER_SetRect( s16 x, s16 y, s16 width, s16 height )\r
+ {\r
+ POINTER_Info.X_PosMin = x;\r
+\r
+ if( POINTER_Info.xPos < POINTER_Info.X_PosMin )\r
+ {\r
+ POINTER_Info.xPos = POINTER_Info.X_PosMin;\r
+ }\r
+\r
+ POINTER_Info.X_PosMax = x + width - 1;\r
+\r
+ if( POINTER_Info.xPos > POINTER_Info.X_PosMax )\r
+ {\r
+ POINTER_Info.xPos = POINTER_Info.X_PosMax;\r
+ }\r
+\r
+ POINTER_Info.Y_PosMin = y;\r
+\r
+ if( POINTER_Info.yPos < POINTER_Info.Y_PosMin )\r
+ {\r
+ POINTER_Info.yPos = POINTER_Info.Y_PosMin;\r
+ }\r
+\r
+ POINTER_Info.Y_PosMax = y + height - 1;\r
+\r
+ if( POINTER_Info.yPos > POINTER_Info.Y_PosMax )\r
+ {\r
+ POINTER_Info.yPos = POINTER_Info.Y_PosMax;\r
+ }\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* POINTER_SetRectScreen\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Allow the pointer to move on the whole screen.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void POINTER_SetRectScreen( void )\r
+ {\r
+ POINTER_SetRect( 0, 0, POS_MAX, POS_MAX );\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* POINTER_GetPos\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Return the current position of the pointer (on the screen).\r
+*\r
+* @return The current pointer screen position with X in the LSB and Y in the MSB.\r
+*\r
+* @warning The (0x0) point in on the low left corner.\r
+**/\r
+/******************************************************************************/\r
+u16 POINTER_GetPos( void )\r
+ {\r
+ return ( POINTER_Info.xPos | ( POINTER_Info.yPos << 8 ) );\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* POINTER_SetPos\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Force the screen position of the pointer.\r
+*\r
+* @param[in] x New horizontal coordinate.\r
+* @param[in] y New vertical coordinate.\r
+*\r
+* @warning The (0x0) point in on the low left corner.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void POINTER_SetPos( u16 x, u16 y )\r
+ {\r
+ POINTER_Info.xPos = x;\r
+ POINTER_Info.yPos = y;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* POINTER_Draw\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Draw pointer.\r
+*\r
+* @param[in] x Horizontal coordinate of the bottom left corner of the pointer.\r
+* @param[in] y Vertical coordinate of the bottom left corner of the pointer.\r
+* @param[in] width Pointer bitmap width.\r
+* @param[in] height Pointer bitmap height.\r
+* @param[in] bmp Pointer to width * height bit array. If null used default\r
+* pointer bitmap.\r
+*\r
+* @note The provided bitmap is a monochrome one.\r
+* @warning The (0x0) point in on the low left corner.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void POINTER_Draw( u8 x, u8 y, u8 width, u8 height, u8* bmp )\r
+ {\r
+ int i = 0;\r
+ int l = 0;\r
+ int n = 0;\r
+ char* ptr = ptrAreaStore;\r
+ char c;\r
+ u16 val;\r
+\r
+ // No bitmap provided, use the default one!\r
+ if( bmp == 0 )\r
+ {\r
+ bmp = BallPointerBmp;\r
+ }\r
+\r
+ // Select the screen area were going to take care about!\r
+ LCD_SetRect_For_Cmd( x, y, width, height );\r
+\r
+ // Let draw to the LCD screen.\r
+ LCD_SendLCDCmd( ST7637_RAMWR );\r
+\r
+ while( n < ( width * height ) )\r
+ {\r
+ if( Pointer_Mode != POINTER_RESTORE_LESS )\r
+ {\r
+ // Draw pixel using current storage area data for background pixels.\r
+ c = *ptr++;\r
+ LCD_SendLCDData( ( bmp[ l + ( i / 8 ) ] & ( 1 << ( 7 - ( i % 8 ) ) ) ) ? ( POINTER_GetColor() & 255 ) : c );\r
+\r
+ c = *ptr++;\r
+ LCD_SendLCDData( ( bmp[ l + ( i / 8 ) ] & ( 1 << ( 7 - ( i % 8 ) ) ) ) ? ( POINTER_GetColor() >> 8 ) : c );\r
+ }\r
+ else\r
+ {\r
+ // POINTER_RESTORE_LESS: use current background color for background color.\r
+ c = DRAW_GetBGndColor();\r
+ val = ( bmp[ l + ( i / 8 ) ] & ( 1 << ( 7 - ( i % 8 ) ) ) ) ? POINTER_GetColor() : c;\r
+\r
+ LCD_SendLCDData( val & 255 );\r
+ LCD_SendLCDData( val >> 8 );\r
+ }\r
+\r
+ n++;\r
+\r
+ i++;\r
+\r
+ // End of line ?\r
+ if( i == width )\r
+ {\r
+ // Next line!\r
+ l++;\r
+ i=0;\r
+ }\r
+ }\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* POINTER_Save\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Save the background of the pointer.\r
+*\r
+* @param[in] x Horizontal coordinate of the bottom left corner of the area to save.\r
+* @param[in] y Vertical coordinate of the bottom left corner of the area to save.\r
+* @param[in] width Width of the area to save.\r
+* @param[in] height Height of the area to save.\r
+*\r
+* @note The store area must be large enough to store all the pixels (16 bits).\r
+* @warning The (0x0) point in on the low left corner.\r
+* @see POINTER_Restore\r
+* @see POINTER_SetCurrentAreaStore\r
+*\r
+**/\r
+/******************************************************************************/\r
+void POINTER_Save( u8 x, u8 y, u8 width, u8 height )\r
+ {\r
+ int i;\r
+ char* ptr = ptrAreaStore;\r
+ int bytesize = ( width * height ) * 2; // 2 bytes per pixel.\r
+\r
+ // Is this pointer management mode, don't save pointer background!\r
+ if( Pointer_Mode == POINTER_RESTORE_LESS )\r
+ {\r
+ return;\r
+ }\r
+\r
+ // Select the LCD screen area to read.\r
+ LCD_SetRect_For_Cmd ( x, y, width, height );\r
+\r
+ // Send the memory read command to the LCD controller.\r
+ LCD_SendLCDCmd( ST7637_RAMRD );\r
+\r
+ // First returned byte is a dummy!\r
+ LCD_ReadLCDData();\r
+\r
+ for( i = 0; i < bytesize; i++ )\r
+ {\r
+ *ptr++ = LCD_ReadLCDData();\r
+ }\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* POINTER_Restore\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Restore the background of the pointer with data saved in the current store area.\r
+*\r
+* @param[in] x Horizontal coordinate of the bottom left corner of the area to restore.\r
+* @param[in] y Vertical coordinate of the bottom left corner of the area to restore.\r
+* @param[in] width Width of the area to restore.\r
+* @param[in] height Height of the area to restore.\r
+*\r
+* @warning The (0x0) point in on the low left corner.\r
+* @see POINTER_Save\r
+* @see POINTER_SetCurrentAreaStore\r
+*\r
+**/\r
+/******************************************************************************/\r
+void POINTER_Restore( u8 x, u8 y, u8 width, u8 height )\r
+ {\r
+ int i;\r
+ char* ptr = ptrAreaStore;\r
+ int bytesize = ( width * height ) * 2; // 2 bytes per pixel.\r
+\r
+ // Select the screen area to write.\r
+ LCD_SetRect_For_Cmd( x, y, width, height );\r
+\r
+ // Send the memory write command to the LCD controller.\r
+ LCD_SendLCDCmd( ST7637_RAMWR );\r
+\r
+ for( i = 0; i < bytesize; i++ )\r
+ {\r
+ // In this mode, use background color (no data was previously saved).\r
+ if ( Pointer_Mode == POINTER_RESTORE_LESS )\r
+ {\r
+ LCD_SendLCDData( DRAW_GetBGndColor() );\r
+ }\r
+ else\r
+ {\r
+ LCD_SendLCDData( *ptr++ );\r
+ }\r
+ }\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* POINTER_SetApplication_Pointer_Mgr\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Provides an user defined pointer manager.\r
+*\r
+* @param[in] mgr Pointer to the user defined pointer manager.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void POINTER_SetApplication_Pointer_Mgr( tAppPtrMgr mgr )\r
+ {\r
+ Application_Pointer_Mgr = mgr;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* POINTER_SetColor\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Set the pointer color.\r
+*\r
+* @param[in] color The new pointer color.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void POINTER_SetColor( u16 color )\r
+ {\r
+ CurrentPointerColor = color;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* POINTER_GetColor\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Return the current pointer color.\r
+*\r
+* @return Current pointer color.\r
+*\r
+**/\r
+/******************************************************************************/\r
+u16 POINTER_GetColor( void )\r
+ {\r
+ return CurrentPointerColor;\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* POINTER_GetInfo\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Get pointer informations.\r
+*\r
+* @return A pointer to a pointer information structure.\r
+*\r
+**/\r
+/******************************************************************************/\r
+tPointer_Info* POINTER_GetInfo( void )\r
+ {\r
+ return &POINTER_Info;\r
+ }\r
--- /dev/null
+/********************* (C) COPYRIGHT 2007 RAISONANCE S.A.S. *******************/\r
+/**\r
+*\r
+* @file scheduler.h\r
+* @brief Header file for the SysTick interrupt handler of the CircleOS project.\r
+* @author FL\r
+* @author IB\r
+* @date 07/2007\r
+*\r
+**/\r
+/******************************************************************************/\r
+\r
+/* Define to prevent recursive inclusion -------------------------------------*/\r
+#ifndef __STM32F10x_IT_H\r
+#define __STM32F10x_IT_H\r
+\r
+/* Includes ------------------------------------------------------------------*/\r
+#include "stm32f10x_lib.h"\r
+\r
+void NMIException( void );\r
+void HardFaultException( void );\r
+void MemManageException( void );\r
+void BusFaultException( void );\r
+void UsageFaultException( void );\r
+void DebugMonitor( void );\r
+void SVCHandler( void );\r
+void PendSVC( void );\r
+void SysTickHandler( void );\r
+void WWDG_IRQHandler( void );\r
+void PVD_IRQHandler( void );\r
+void TAMPER_IRQHandler( void );\r
+void RTC_IRQHandler( void );\r
+void FLASH_IRQHandler( void );\r
+void RCC_IRQHandler( void );\r
+void EXTI0_IRQHandler( void );\r
+void EXTI1_IRQHandler( void );\r
+void EXTI2_IRQHandler( void );\r
+void EXTI3_IRQHandler( void );\r
+void EXTI4_IRQHandler( void );\r
+void DMAChannel1_IRQHandler( void );\r
+void DMAChannel2_IRQHandler( void );\r
+void DMAChannel3_IRQHandler( void );\r
+void DMAChannel4_IRQHandler( void );\r
+void DMAChannel5_IRQHandler( void );\r
+void DMAChannel6_IRQHandler( void );\r
+void DMAChannel7_IRQHandler( void );\r
+void ADC_IRQHandler( void );\r
+void USB_HP_CAN_TX_IRQHandler( void );\r
+void USB_LP_CAN_RX0_IRQHandler( void );\r
+void CAN_RX1_IRQHandler( void );\r
+void CAN_SCE_IRQHandler( void );\r
+void EXTI9_5_IRQHandler( void );\r
+void TIM1_BRK_IRQHandler( void );\r
+void TIM1_UP_IRQHandler( void );\r
+void TIM1_TRG_CCUP_IRQHandler( void );\r
+void TIM1_CC_IRQHandler( void );\r
+void TIM2_IRQHandler( void );\r
+void TIM3_IRQHandler( void );\r
+void TIM4_IRQHandler( void );\r
+void I2C1_EV_IRQHandler( void );\r
+void I2C1_ER_IRQHandler( void );\r
+void I2C2_EV_IRQHandler( void );\r
+void I2C2_ER_IRQHandler( void );\r
+void SPI1_IRQHandler( void );\r
+void SPI2_IRQHandler( void );\r
+void USART1_IRQHandler( void );\r
+void USART2_IRQHandler( void );\r
+void USART3_IRQHandler( void );\r
+void EXTI15_10_IRQHandler( void );\r
+void RTCAlarm_IRQHandler( void );\r
+void USBWakeUp_IRQHandler( void );\r
+\r
+//FL071107 Make the scheduler configurable. The handler are inserted into a list that could\r
+//be modified by the applications.\r
+typedef void (*tHandler) ( void );\r
+extern tHandler SchHandler [16+1];\r
+#define SCH_HDL_MAX ( sizeof SchHandler / sizeof (tHandler) )\r
+\r
+\r
+ \r
+#endif /* __STM32F10x_IT_H */\r
--- /dev/null
+/********************* (C) COPYRIGHT 2007 RAISONANCE S.A.S. *******************/\r
+/**\r
+*\r
+* @file stm32f10x_circle_it.c\r
+* @brief Interrupt handler for the CircleOS project.\r
+* @author FL\r
+* @author IB\r
+* @date 07/2007\r
+*\r
+**/\r
+/******************************************************************************/\r
+\r
+/* Includes ------------------------------------------------------------------*/\r
+#include "circle.h"\r
+\r
+/* External variables --------------------------------------------------------*/\r
+extern u16 CCR_Val;\r
+extern u16 Current_CCR_BackLightStart;\r
+\r
+/*******************************************************************************\r
+*\r
+* NMIException\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Handles the NMI exception.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void NMIException( void ) {}\r
+\r
+/*******************************************************************************\r
+*\r
+* HardFaultException\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Handles the Hard Fault exception.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void HardFaultException( void ) \r
+ {\r
+ #ifdef TIMING_ANALYSIS //to debug with a scope\r
+ GPIO_WriteBit( GPIOA, GPIO_Pin_5, Bit_RESET ); \r
+ GPIO_WriteBit( GPIOA, GPIO_Pin_5, Bit_SET ); \r
+ #endif\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* MemManageException\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Handles the Memory Manage exception.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void MemManageException( void ) {}\r
+\r
+/*******************************************************************************\r
+*\r
+* BusFaultException\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Handles the Bus Fault exception.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void BusFaultException( void ) {}\r
+\r
+/*******************************************************************************\r
+*\r
+* UsageFaultException\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Handles the Usage Fault exception.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void UsageFaultException( void ) {}\r
+\r
+/*******************************************************************************\r
+*\r
+* DebugMonitor\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Handles the Debug Monitor exception.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void DebugMonitor( void ) {}\r
+\r
+/*******************************************************************************\r
+*\r
+* SVCHandler\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Handles the SVCall exception.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void SVCHandler( void ) {}\r
+\r
+/*******************************************************************************\r
+*\r
+* PendSVC\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Handles the PendSVC exception.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void PendSVC( void ) {}\r
+\r
+/*******************************************************************************\r
+*\r
+* DummyHandler\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Default handling for the IRQ-Exception\r
+*\r
+**/\r
+/******************************************************************************/\r
+void DummyHandler ( void ) {}\r
+\r
+/*******************************************************************************\r
+*\r
+* TIM2_IRQHandler\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Handles the TIM2 global interrupt request.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void TIM2_IRQHandler( void )\r
+ {\r
+ #ifdef TIMING_ANALYSIS //to debug with a scope\r
+ GPIO_WriteBit( GPIOA, GPIO_Pin_7, Bit_RESET );\r
+ #endif\r
+\r
+ /* Clear TIM2 update interrupt */\r
+ TIM_ClearITPendingBit( TIM2, TIM_IT_Update );\r
+\r
+ MEMS_Handler();\r
+\r
+ #ifdef TIMING_ANALYSIS //to debug with a scope\r
+ GPIO_WriteBit( GPIOA, GPIO_Pin_7, Bit_SET );\r
+ #endif\r
+ }\r
+\r
+/*******************************************************************************\r
+*\r
+* TIM3_IRQHandler\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Handles the TIM3 global interrupt request.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void TIM3_IRQHandler( void )\r
+{\r
+ u16 capture = 0;\r
+\r
+ if( TIM_GetITStatus( TIM3, TIM_IT_CC3 ) != RESET )\r
+ {\r
+ capture = TIM_GetCapture3( TIM3 );\r
+\r
+ TIM_SetCompare3( TIM3, capture + CCR_Val + 1 );\r
+ TIM_ClearITPendingBit( TIM3, TIM_IT_CC3 );\r
+ }\r
+}\r
+\r
+/*******************************************************************************\r
+*\r
+* TIM4_IRQHandler\r
+*\r
+*******************************************************************************/\r
+/**\r
+*\r
+* Handles the TIM4 global interrupt request.\r
+*\r
+**/\r
+/******************************************************************************/\r
+void TIM4_IRQHandler( void )\r
+{\r
+ u16 BackLight_capture = 0;\r
+\r
+ if( TIM_GetITStatus( TIM4, TIM_IT_CC2 ) != RESET )\r
+ {\r
+ BackLight_capture = TIM_GetCapture2( TIM4 );\r
+\r
+ TIM_SetCompare2( TIM4, BackLight_capture + Current_CCR_BackLightStart + 1 );\r
+ TIM_ClearITPendingBit( TIM4, TIM_IT_CC2 );\r
+ }\r
+}\r
+\r
--- /dev/null
+/******************** (C) COPYRIGHT 2007 STMicroelectronics ********************\r
+* File Name : stm32f10x_conf.h\r
+* Author : MCD Application Team\r
+* Date First Issued : 09/29/2006\r
+* Description : Library configuration file.\r
+********************************************************************************\r
+* History:\r
+* 02/05/2007: V0.1\r
+* 09/29/2006: V0.01\r
+********************************************************************************\r
+* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS\r
+* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.\r
+* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,\r
+* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE\r
+* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING\r
+* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
+*******************************************************************************/\r
+\r
+/* Define to prevent recursive inclusion -------------------------------------*/\r
+#ifndef __STM32F10x_CONF_H\r
+#define __STM32F10x_CONF_H\r
+\r
+/* Includes ------------------------------------------------------------------*/\r
+/* Exported types ------------------------------------------------------------*/\r
+/* Exported constants --------------------------------------------------------*/\r
+/* Comment the line below to compile the library in release mode */\r
+//#define DEBUG 0\r
+\r
+/* Comment the line below to disable the specific peripheral inclusion */\r
+/************************************* ADC ************************************/\r
+//#define _ADC\r
+#define _ADC1\r
+#define _ADC2\r
+\r
+/************************************* CAN ************************************/\r
+//#define _CAN\r
+\r
+/************************************* DMA ************************************/\r
+//#define _DMA\r
+#define _DMA_Channel1\r
+#define _DMA_Channel2\r
+#define _DMA_Channel3\r
+#define _DMA_Channel4\r
+#define _DMA_Channel5\r
+#define _DMA_Channel6\r
+#define _DMA_Channel7\r
+\r
+/************************************* EXTI ***********************************/\r
+//#define _EXTI\r
+\r
+/************************************* GPIO ***********************************/\r
+#define _GPIO\r
+#define _GPIOA\r
+#define _GPIOB\r
+#define _GPIOC\r
+#define _GPIOD\r
+//#define _GPIOE\r
+#define _AFIO\r
+\r
+/************************************* I2C ************************************/\r
+//#define _I2C\r
+//#define _I2C1\r
+//#define _I2C2\r
+\r
+/************************************* IWDG ***********************************/\r
+//#define _IWDG\r
+\r
+/************************************* NVIC ***********************************/\r
+#define _NVIC\r
+#define _SCB\r
+\r
+/************************************* BKP ************************************/\r
+//#define _BKP \r
+\r
+/************************************* PWR ************************************/\r
+//#define _PWR\r
+\r
+/************************************* RCC ************************************/\r
+#define _RCC\r
+\r
+/************************************* RTC ************************************/\r
+//#define _RTC\r
+\r
+/************************************* SPI ************************************/\r
+#define _SPI\r
+//#define _SPI1\r
+#define _SPI2\r
+\r
+/************************************* SysTick ********************************/\r
+#define _SysTick\r
+\r
+/************************************* TIM1 ***********************************/\r
+//#define _TIM1\r
+\r
+/************************************* TIM ************************************/\r
+#define _TIM\r
+#define _TIM2\r
+#define _TIM3\r
+#define _TIM4\r
+\r
+/************************************* USART **********************************/\r
+//#define _USART\r
+//#define _USART1\r
+//#define _USART2\r
+//#define _USART3\r
+\r
+/************************************* WWDG ***********************************/\r
+//#define _WWDG\r
+\r
+/* In the following line adjust the value of External High Speed oscillator (HSE)\r
+ used in your application */\r
+#define HSE_Value ((u32)12000000) /* Value of the External oscillator in Hz*/\r
+\r
+/* Exported macro ------------------------------------------------------------*/\r
+/* Exported functions ------------------------------------------------------- */\r
+\r
+#endif /* __STM32F10x_CONF_H */\r
+\r
+/******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/\r
--- /dev/null
+/********************* (C) COPYRIGHT 2007 RAISONANCE S.A.S. ********************\r
+* File Name : stm32f10x_it.c\r
+* Author : IB/FL\r
+* Date First Issued : 07/2007\r
+* Description : Interrupt handler for the CircleOS project.\r
+* Revision :\r
+*******************************************************************************/\r
+\r
+/* Define to prevent recursive inclusion -------------------------------------*/\r
+#ifndef __STM32F10x_IT_H\r
+#define __STM32F10x_IT_H\r
+\r
+/* Includes ------------------------------------------------------------------*/\r
+#include "stm32f10x_lib.h"\r
+\r
+/* Exported functions ------------------------------------------------------- */\r
+void NMIException( void );\r
+void HardFaultException( void );\r
+void MemManageException( void );\r
+void BusFaultException( void );\r
+void UsageFaultException( void );\r
+void DebugMonitor( void );\r
+void SVCHandler( void );\r
+void PendSVC( void );\r
+void SysTickHandler( void );\r
+void WWDG_IRQHandler( void );\r
+void PVD_IRQHandler( void );\r
+void TAMPER_IRQHandler( void );\r
+void RTC_IRQHandler( void );\r
+void FLASH_IRQHandler( void );\r
+void RCC_IRQHandler( void );\r
+void EXTI0_IRQHandler( void );\r
+void EXTI1_IRQHandler( void );\r
+void EXTI2_IRQHandler( void );\r
+void EXTI3_IRQHandler( void );\r
+void EXTI4_IRQHandler( void );\r
+void DMAChannel1_IRQHandler( void );\r
+void DMAChannel2_IRQHandler( void );\r
+void DMAChannel3_IRQHandler( void );\r
+void DMAChannel4_IRQHandler( void );\r
+void DMAChannel5_IRQHandler( void );\r
+void DMAChannel6_IRQHandler( void );\r
+void DMAChannel7_IRQHandler( void );\r
+void ADC_IRQHandler( void );\r
+void USB_HP_CAN_TX_IRQHandler( void );\r
+void USB_LP_CAN_RX0_IRQHandler( void );\r
+void CAN_RX1_IRQHandler( void );\r
+void CAN_SCE_IRQHandler( void );\r
+void EXTI9_5_IRQHandler( void );\r
+void TIM1_BRK_IRQHandler( void );\r
+void TIM1_UP_IRQHandler( void );\r
+void TIM1_TRG_COM_IRQHandler( void );\r
+void TIM1_CC_IRQHandler( void );\r
+void TIM2_IRQHandler( void );\r
+void TIM3_IRQHandler( void );\r
+void TIM4_IRQHandler( void );\r
+void I2C1_EV_IRQHandler( void );\r
+void I2C1_ER_IRQHandler( void );\r
+void I2C2_EV_IRQHandler( void );\r
+void I2C2_ER_IRQHandler( void );\r
+void SPI1_IRQHandler( void );\r
+void SPI2_IRQHandler( void );\r
+void USART1_IRQHandler( void );\r
+void USART2_IRQHandler( void );\r
+void USART3_IRQHandler( void );\r
+void EXTI15_10_IRQHandler( void );\r
+void RTCAlarm_IRQHandler( void );\r
+void USBWakeUp_IRQHandler( void );\r
+ \r
+#endif /* __STM32F10x_IT_H */\r
--- /dev/null
+/******************** (C) COPYRIGHT 2007 STMicroelectronics ********************\r
+* File Name : stm32f10x_tim.c\r
+* Author : MCD Application Team\r
+* Date First Issued : 09/29/2006\r
+* Description : This file provides all the TIM firmware functions.\r
+********************************************************************************\r
+* History:\r
+* 04/02/2007: V0.2\r
+* 02/05/2007: V0.1\r
+* 09/29/2006: V0.01\r
+********************************************************************************\r
+* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS\r
+* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.\r
+* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,\r
+* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE\r
+* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING\r
+* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
+*******************************************************************************/\r
+\r
+/* Includes ------------------------------------------------------------------*/\r
+#include "stm32f10x_tim.h"\r
+#include "stm32f10x_rcc.h"\r
+\r
+/* Private typedef -----------------------------------------------------------*/\r
+/* Private define ------------------------------------------------------------*/\r
+/* ---------------------- TIM registers bit mask ------------------------ */\r
+#define CR1_CEN_Set ((u16)0x0001)\r
+#define CR1_CEN_Reset ((u16)0x03FE)\r
+#define CR1_UDIS_Set ((u16)0x0002)\r
+#define CR1_UDIS_Reset ((u16)0x03FD)\r
+#define CR1_URS_Set ((u16)0x0004)\r
+#define CR1_URS_Reset ((u16)0x03FB)\r
+#define CR1_OPM_Mask ((u16)0x03F7)\r
+#define CR1_CounterMode_Mask ((u16)0x039F)\r
+#define CR1_ARPE_Set ((u16)0x0080)\r
+#define CR1_ARPE_Reset ((u16)0x037F)\r
+#define CR1_CKD_Mask ((u16)0x00FF)\r
+\r
+#define CR2_CCDS_Set ((u16)0x0008)\r
+#define CR2_CCDS_Reset ((u16)0x0007)\r
+#define CR2_MMS_Mask ((u16)0x0080)\r
+#define CR2_TI1S_Set ((u16)0x0080)\r
+#define CR2_TI1S_Reset ((u16)0xFF70)\r
+\r
+#define SMCR_SMS_Mask ((u16)0xFFF0)\r
+#define SMCR_ETR_Mask ((u16)0x00F7)\r
+#define SMCR_TS_Mask ((u16)0xFF87)\r
+#define SMCR_MSM_Mask ((u16)0xFF77)\r
+#define SMCR_ECE_Set ((u16)0x4000)\r
+\r
+#define CCMR_CC13S_Mask ((u16)0x7F7C)\r
+#define CCMR_CC24S_Mask ((u16)0x7C7F)\r
+#define CCMR_TI13Direct_Set ((u16)0x0001)\r
+#define CCMR_TI24Direct_Set ((u16)0x0100)\r
+#define CCMR_OC13FE_Mask ((u16)0x7F7B)\r
+#define CCMR_OC24FE_Mask ((u16)0x7B7F)\r
+#define CCMR_OC13PE_Mask ((u16)0x7F77)\r
+#define CCMR_OC24PE_Mask ((u16)0x777F)\r
+#define CCMR_OCM13_Mask ((u16)0x7F0F)\r
+#define CCMR_OCM24_Mask ((u16)0x0F7F)\r
+#define CCMR_IC13PSC_Mask ((u16)0xFFF3)\r
+#define CCMR_IC24PSC_Mask ((u16)0xF3FF)\r
+#define CCMR_IC13F_Mask ((u16)0xFF0F)\r
+#define CCMR_IC24F_Mask ((u16)0x0FFF)\r
+#define CCER_CC1P_Mask ((u16)0xFFFD)\r
+\r
+#define CCER_CC2P_Mask ((u16)0xFFDF)\r
+#define CCER_CC3P_Mask ((u16)0xFDFF)\r
+#define CCER_CC4P_Mask ((u16)0xDFFF)\r
+\r
+#define CCRE_CC1E_Set ((u16)0x0001)\r
+#define CCRE_CC1E_Reset ((u16)0xFFFE)\r
+#define CCRE_CC1E_Mask ((u16)0xFFFE)\r
+\r
+#define CCRE_CC2E_Set ((u16)0x0010)\r
+#define CCRE_CC2E_Reset ((u16)0xFFEF)\r
+#define CCRE_CC2E_Mask ((u16)0xFFEF)\r
+\r
+#define CCRE_CC3E_Set ((u16)0x0100)\r
+#define CCRE_CC3E_Reset ((u16)0xFEFF)\r
+\r
+#define CCRE_CC4E_Set ((u16)0x1000)\r
+#define CCRE_CC4E_Reset ((u16)0xEFFF)\r
+#define CCRE_CC4E_Mask ((u16)0xEFFF)\r
+\r
+#define DCR_DMA_Mask ((u16)0x0000)\r
+\r
+/* TIM private Masks */\r
+#define TIM_Period_Reset_Mask ((u16)0x0000)\r
+#define TIM_Prescaler_Reset_Mask ((u16)0x0000)\r
+#define TIM_Pulse_Reset_Mask ((u16)0x0000)\r
+#define TIM_ICFilter_Mask ((u8)0x00)\r
+\r
+/* Private macro -------------------------------------------------------------*/\r
+/* Private variables ---------------------------------------------------------*/\r
+static uc16 Tab_OCModeMask[4] = {0xFF00, 0x00FF, 0xFF00, 0x00FF};\r
+static uc16 Tab_PolarityMask[4] = {CCER_CC1P_Mask, CCER_CC2P_Mask, CCER_CC3P_Mask, CCER_CC4P_Mask};\r
+\r
+/* Private function prototypes -----------------------------------------------*/\r
+static void PWMI_Config(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);\r
+static void TI1_Config(TIM_TypeDef* TIMx, u16 TIM_ICPolarity, u16 TIM_ICSelection,\r
+ u8 TIM_ICFilter);\r
+static void TI2_Config(TIM_TypeDef* TIMx, u16 TIM_ICPolarity, u16 TIM_ICSelection,\r
+ u8 TIM_ICFilter);\r
+static void TI3_Config(TIM_TypeDef* TIMx, u16 TIM_ICPolarity, u16 TIM_ICSelection,\r
+ u8 TIM_ICFilter);\r
+static void TI4_Config(TIM_TypeDef* TIMx, u16 TIM_ICPolarity, u16 TIM_ICSelection,\r
+ u8 TIM_ICFilter);\r
+static void ETR_Config(TIM_TypeDef* TIMx, u16 TIM_ExtTRGPrescaler, \r
+ u16 TIM_ExtTRGPolarity, u8 ExtTRGFilter);\r
+/* Private functions ---------------------------------------------------------*/\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_DeInit\r
+* Description : Deinitializes the TIMx peripheral registers to their default\r
+* reset values.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_DeInit(TIM_TypeDef* TIMx)\r
+{ \r
+ switch (*(u32*)&TIMx)\r
+ {\r
+ case TIM2_BASE:\r
+ RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM2, ENABLE);\r
+ RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM2, DISABLE);\r
+ break;\r
+ \r
+ case TIM3_BASE:\r
+ RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM3, ENABLE);\r
+ RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM3, DISABLE);\r
+ break;\r
+ \r
+ case TIM4_BASE:\r
+ RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM4, ENABLE);\r
+ RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM4, DISABLE);\r
+ break;\r
+ \r
+ default:\r
+ break;\r
+ }\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_TimeBaseInit\r
+* Description : Initializes the TIMx Time Base Unit peripheral according to \r
+* the specified parameters in the TIM_TimeBaseInitStruct.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_TimeBaseInitStruct: pointer to a TIM_TimeBaseInitTypeDef\r
+* structure that contains the configuration information for\r
+* the specified TIM peripheral.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct)\r
+{\r
+ /* Check the parameters */\r
+ assert(IS_TIM_COUNTER_MODE(TIM_TimeBaseInitStruct->TIM_CounterMode));\r
+ assert(IS_TIM_CKD_DIV(TIM_TimeBaseInitStruct->TIM_ClockDivision));\r
+ \r
+ /* Set the Autoreload value */\r
+ TIMx->ARR = TIM_TimeBaseInitStruct->TIM_Period ;\r
+\r
+ /* Set the Prescaler value */\r
+ TIMx->PSC = TIM_TimeBaseInitStruct->TIM_Prescaler;\r
+\r
+ /* Select the Counter Mode and set the clock division */\r
+ TIMx->CR1 &= CR1_CKD_Mask & CR1_CounterMode_Mask;\r
+ TIMx->CR1 |= (u32)TIM_TimeBaseInitStruct->TIM_ClockDivision |\r
+ TIM_TimeBaseInitStruct->TIM_CounterMode;\r
+}\r
+/*******************************************************************************\r
+* Function Name : TIM_OCInit\r
+* Description : Initializes the TIMx peripheral according to the specified\r
+* parameters in the TIM_OCInitStruct.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_OCInitStruct: pointer to a TIM_OCInitTypeDef structure\r
+* that contains the configuration information for the specified\r
+* TIM peripheral.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_OCInit(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct)\r
+{\r
+ u32 tmpccmrx = 0, tmpccer = 0;\r
+ \r
+ /* Check the parameters */\r
+ assert(IS_TIM_OC_MODE(TIM_OCInitStruct->TIM_OCMode));\r
+ assert(IS_TIM_CHANNEL(TIM_OCInitStruct->TIM_Channel));\r
+ assert(IS_TIM_OC_POLARITY(TIM_OCInitStruct->TIM_OCPolarity));\r
+\r
+ tmpccer = TIMx->CCER;\r
+\r
+ if ((TIM_OCInitStruct->TIM_Channel == (u16)TIM_Channel_1) ||\r
+ (TIM_OCInitStruct->TIM_Channel == (u16)TIM_Channel_2))\r
+ {\r
+ tmpccmrx = TIMx->CCMR1;\r
+ \r
+ /* Reset the Output Compare Bits */\r
+ tmpccmrx &= Tab_OCModeMask[TIM_OCInitStruct->TIM_Channel];\r
+\r
+ /* Set the Output Polarity level */\r
+ tmpccer &= Tab_PolarityMask[TIM_OCInitStruct->TIM_Channel];\r
+\r
+ if (TIM_OCInitStruct->TIM_Channel == TIM_Channel_1)\r
+ {\r
+ /* Disable the Channel 1: Reset the CCE Bit */\r
+ TIMx->CCER &= CCRE_CC1E_Reset;\r
+\r
+ /* Select the Output Compare Mode */\r
+ tmpccmrx |= TIM_OCInitStruct->TIM_OCMode;\r
+\r
+ /* Set the Capture Compare Register value */\r
+ TIMx->CCR1 = TIM_OCInitStruct->TIM_Pulse;\r
+\r
+ /* Set the Capture Compare Enable Bit */\r
+ tmpccer |= CCRE_CC1E_Set;\r
+\r
+ /* Set the Capture Compare Polarity */\r
+ tmpccer |= TIM_OCInitStruct->TIM_OCPolarity;\r
+ }\r
+ else /* TIM_Channel_2 */\r
+ {\r
+ /* Disable the Channel 2: Reset the CCE Bit */\r
+ TIMx->CCER &= CCRE_CC2E_Reset;\r
+\r
+ /* Select the Output Compare Mode */\r
+ tmpccmrx |= (u32)TIM_OCInitStruct->TIM_OCMode << 8;\r
+\r
+ /* Set the Capture Compare Register value */\r
+ TIMx->CCR2 = TIM_OCInitStruct->TIM_Pulse;\r
+\r
+ /* Set the Capture Compare Enable Bit */\r
+ tmpccer |= CCRE_CC2E_Set;\r
+\r
+ /* Set the Capture Compare Polarity */\r
+ tmpccer |= (u32)TIM_OCInitStruct->TIM_OCPolarity << 4;\r
+ }\r
+\r
+ TIMx->CCMR1 = (u16)tmpccmrx;\r
+ }\r
+ else \r
+ {\r
+ if ((TIM_OCInitStruct->TIM_Channel == TIM_Channel_3) ||\r
+ (TIM_OCInitStruct->TIM_Channel == TIM_Channel_4))\r
+ { \r
+ tmpccmrx = TIMx->CCMR2;\r
+\r
+ /* Reset the Output Compare Bits */\r
+ tmpccmrx &= Tab_OCModeMask[TIM_OCInitStruct->TIM_Channel];\r
+\r
+ /* Set the Output Polarity level */\r
+ tmpccer &= Tab_PolarityMask[TIM_OCInitStruct->TIM_Channel];\r
+\r
+ if (TIM_OCInitStruct->TIM_Channel == TIM_Channel_3)\r
+ {\r
+ /* Disable the Channel 3: Reset the CCE Bit */\r
+ TIMx->CCER &= CCRE_CC3E_Reset;\r
+\r
+ /* Select the Output Compare Mode */\r
+ tmpccmrx |= TIM_OCInitStruct->TIM_OCMode;\r
+\r
+ /* Set the Capture Compare Register value */\r
+ TIMx->CCR3 = TIM_OCInitStruct->TIM_Pulse;\r
+\r
+ /* Set the Capture Compare Enable Bit */\r
+ tmpccer |= CCRE_CC3E_Set;\r
+\r
+ /* Set the Capture Compare Polarity */\r
+ tmpccer |= (u32)TIM_OCInitStruct->TIM_OCPolarity << 8;\r
+ }\r
+ else /* TIM_Channel_4 */\r
+ {\r
+ /* Disable the Channel 4: Reset the CCE Bit */\r
+ TIMx->CCER &= CCRE_CC4E_Reset;\r
+\r
+ /* Select the Output Compare Mode */\r
+ tmpccmrx |= (u32)TIM_OCInitStruct->TIM_OCMode << 8;\r
+\r
+ /* Set the Capture Compare Register value */\r
+ TIMx->CCR4 = TIM_OCInitStruct->TIM_Pulse;\r
+\r
+ /* Set the Capture Compare Enable Bit */\r
+ tmpccer |= CCRE_CC4E_Set;\r
+\r
+ /* Set the Capture Compare Polarity */\r
+ tmpccer |= (u32)TIM_OCInitStruct->TIM_OCPolarity << 12;\r
+ }\r
+\r
+ TIMx->CCMR2 = (u16)tmpccmrx;\r
+ }\r
+ }\r
+ \r
+ TIMx->CCER = (u16)tmpccer;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_ICInit\r
+* Description : Initializes the TIMx peripheral according to the specified\r
+* parameters in the TIM_ICInitStruct.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_ICInitStruct: pointer to a TIM_ICInitTypeDef structure\r
+* that contains the configuration information for the specified\r
+* TIM peripheral.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct)\r
+{\r
+ /* Check the parameters */\r
+ assert(IS_TIM_IC_MODE(TIM_ICInitStruct->TIM_ICMode));\r
+ assert(IS_TIM_CHANNEL(TIM_ICInitStruct->TIM_Channel));\r
+ assert(IS_TIM_IC_POLARITY(TIM_ICInitStruct->TIM_ICPolarity));\r
+ assert(IS_TIM_IC_SELECTION(TIM_ICInitStruct->TIM_ICSelection));\r
+ assert(IS_TIM_IC_PRESCALER(TIM_ICInitStruct->TIM_ICPrescaler));\r
+ assert(IS_TIM_IC_FILTER(TIM_ICInitStruct->TIM_ICFilter));\r
+ \r
+ if (TIM_ICInitStruct->TIM_ICMode == TIM_ICMode_ICAP)\r
+ {\r
+ if (TIM_ICInitStruct->TIM_Channel == TIM_Channel_1)\r
+ {\r
+ /* TI1 Configuration */\r
+ TI1_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity,\r
+ TIM_ICInitStruct->TIM_ICSelection,\r
+ TIM_ICInitStruct->TIM_ICFilter);\r
+\r
+ /* Set the Input Capture Prescaler value */\r
+ TIM_SetIC1Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);\r
+ }\r
+ else if (TIM_ICInitStruct->TIM_Channel == TIM_Channel_2)\r
+ {\r
+ /* TI2 Configuration */\r
+ TI2_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity,\r
+ TIM_ICInitStruct->TIM_ICSelection,\r
+ TIM_ICInitStruct->TIM_ICFilter);\r
+\r
+ /* Set the Input Capture Prescaler value */\r
+ TIM_SetIC2Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);\r
+ }\r
+ else if (TIM_ICInitStruct->TIM_Channel == TIM_Channel_3)\r
+ {\r
+ /* TI3 Configuration */\r
+ TI3_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity,\r
+ TIM_ICInitStruct->TIM_ICSelection,\r
+ TIM_ICInitStruct->TIM_ICFilter);\r
+\r
+ /* Set the Input Capture Prescaler value */\r
+ TIM_SetIC3Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);\r
+ }\r
+ else /* TIM_Channel_4 */\r
+ {\r
+ /* TI4 Configuration */\r
+ TI4_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity,\r
+ TIM_ICInitStruct->TIM_ICSelection,\r
+ TIM_ICInitStruct->TIM_ICFilter);\r
+\r
+ /* Set the Input Capture Prescaler value */\r
+ TIM_SetIC4Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);\r
+ }\r
+ }\r
+ else\r
+ {\r
+ PWMI_Config(TIMx, TIM_ICInitStruct);\r
+ }\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_TimeBaseStructInit\r
+* Description : Fills each TIM_TimeBaseInitStruct member with its default value.\r
+* Input : - TIM_TimeBaseInitStruct: pointer to a TIM_TimeBaseInitTypeDef\r
+* structure which will be initialized.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct)\r
+{\r
+ /* Set the default configuration */\r
+ TIM_TimeBaseInitStruct->TIM_Period = TIM_Period_Reset_Mask;\r
+ TIM_TimeBaseInitStruct->TIM_Prescaler = TIM_Prescaler_Reset_Mask;\r
+ TIM_TimeBaseInitStruct->TIM_ClockDivision = TIM_CKD_DIV1;\r
+ TIM_TimeBaseInitStruct->TIM_CounterMode = TIM_CounterMode_Up;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_OCStructInit\r
+* Description : Fills each TIM_OCInitStruct member with its default value.\r
+* Input : - TIM_OCInitStruct: pointer to a TIM_OCInitTypeDef structure\r
+* which will be initialized.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_OCStructInit(TIM_OCInitTypeDef* TIM_OCInitStruct)\r
+{\r
+ /* Set the default configuration */\r
+ TIM_OCInitStruct->TIM_OCMode = TIM_OCMode_Timing;\r
+ TIM_OCInitStruct->TIM_Channel = TIM_Channel_1;\r
+ TIM_OCInitStruct->TIM_Pulse = TIM_Pulse_Reset_Mask;\r
+ TIM_OCInitStruct->TIM_OCPolarity = TIM_OCPolarity_High;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_ICStructInit\r
+* Description : Fills each TIM_InitStruct member with its default value.\r
+* Input : - TIM_ICInitStruct: pointer to a TIM_ICInitTypeDef structure\r
+* which will be initialized.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_ICStructInit(TIM_ICInitTypeDef* TIM_ICInitStruct)\r
+{\r
+ /* Set the default configuration */\r
+ TIM_ICInitStruct->TIM_ICMode = TIM_ICMode_ICAP;\r
+ TIM_ICInitStruct->TIM_Channel = TIM_Channel_1;\r
+ TIM_ICInitStruct->TIM_ICPolarity = TIM_ICPolarity_Rising;\r
+ TIM_ICInitStruct->TIM_ICSelection = TIM_ICSelection_DirectTI;\r
+ TIM_ICInitStruct->TIM_ICPrescaler = TIM_ICPSC_DIV1;\r
+ TIM_ICInitStruct->TIM_ICFilter = TIM_ICFilter_Mask;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_Cmd\r
+* Description : Enables or disables the specified TIM peripheral.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIMx peripheral.\r
+* - Newstate: new state of the TIMx peripheral.\r
+* This parameter can be: ENABLE or DISABLE.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState)\r
+{\r
+ /* Check the parameters */\r
+ assert(IS_FUNCTIONAL_STATE(NewState));\r
+ \r
+ if (NewState != DISABLE)\r
+ {\r
+ /* Enable the TIM Counter */\r
+ TIMx->CR1 |= CR1_CEN_Set;\r
+ }\r
+ else\r
+ {\r
+ /* Disable the TIM Counter */\r
+ TIMx->CR1 &= CR1_CEN_Reset;\r
+ }\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_ITConfig\r
+* Description : Enables or disables the TIMx interrupts.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_IT: specifies the TIM interrupts sources to be enabled\r
+* or disabled.\r
+* This parameter can be any combination of the following values:\r
+* - TIM_IT_Update: Timer update Interrupt\r
+* - TIM_IT_CC1: Capture Compare 1 Interrupt\r
+* - TIM_IT_CC2: Capture Compare 2 Interrupt\r
+* - TIM_IT_CC3: Capture Compare 3 Interrupt\r
+* - TIM_IT_CC4: Capture Compare 4 Interrupt\r
+* - TIM_IT_Trigger: Trigger Interrupt\r
+* - Newstate: new state of the specified TIMx interrupts.\r
+* This parameter can be: ENABLE or DISABLE.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_ITConfig(TIM_TypeDef* TIMx, u16 TIM_IT, FunctionalState NewState)\r
+{\r
+ /* Check the parameters */\r
+ assert(IS_TIM_IT(TIM_IT));\r
+ assert(IS_FUNCTIONAL_STATE(NewState));\r
+ \r
+ if (NewState != DISABLE)\r
+ {\r
+ /* Enable the Interrupt sources */\r
+ TIMx->DIER |= TIM_IT;\r
+ }\r
+ else\r
+ {\r
+ /* Disable the Interrupt sources */\r
+ TIMx->DIER &= (u16)(~TIM_IT);\r
+ }\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_DMAConfig\r
+* Description : Configures the TIMx\92s DMA interface.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_DMABase: DMA Base address.\r
+* This parameter can be one of the following values:\r
+* - TIM_DMABase_CR1, TIM_DMABase_CR2, TIM_DMABase_SMCR,\r
+* TIM_DMABase_DIER, TIM_DMABase_SR, TIM_DMABase_EGR,\r
+* TIM_DMABase_CCMR1, TIM_DMABase_CCMR2, TIM_DMABase_CCER,\r
+* TIM_DMABase_CNT, TIM_DMABase_PSC, TIM_DMABase_ARR,\r
+* TIM_DMABase_CCR1, TIM_DMABase_CCR2, TIM_DMABase_CCR3,\r
+* TIM_DMABase_CCR4, TIM_DMABase_DCR.\r
+* - TIM_DMABurstLength: DMA Burst length.\r
+* This parameter can be one value between:\r
+* TIM_DMABurstLength_1Byte and TIM_DMABurstLength_18Bytes.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_DMAConfig(TIM_TypeDef* TIMx, u16 TIM_DMABase, u16 TIM_DMABurstLength)\r
+{\r
+ u32 tmpdcr = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_DMA_BASE(TIM_DMABase));\r
+ assert(IS_TIM_DMA_LENGTH(TIM_DMABurstLength));\r
+ \r
+ tmpdcr = TIMx->DCR;\r
+\r
+ /* Reset the DBA and the DBL Bits */\r
+ tmpdcr &= DCR_DMA_Mask;\r
+\r
+ /* Set the DMA Base and the DMA Burst Length */\r
+ tmpdcr |= TIM_DMABase | TIM_DMABurstLength;\r
+\r
+ TIMx->DCR = (u16)tmpdcr;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_DMACmd\r
+* Description : Enables or disables the TIMx\92s DMA Requests.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_DMASources: specifies the DMA Request sources.\r
+* This parameter can be any combination of the following values:\r
+* - TIM_DMA_CC1: Capture Compare 1 DMA source\r
+* - TIM_DMA_CC2: Capture Compare 2 DMA source\r
+* - TIM_DMA_CC3: Capture Compare 3 DMA source\r
+* - TIM_DMA_CC4: Capture Compare 4 DMA source\r
+* - TIM_DMA_Trigger: Trigger DMA source\r
+* - Newstate: new state of the DMA Request sources.\r
+* This parameter can be: ENABLE or DISABLE.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_DMACmd(TIM_TypeDef* TIMx, u16 TIM_DMASource, FunctionalState Newstate)\r
+{\r
+ u32 tmpdier = 0;\r
+ \r
+ /* Check the parameters */\r
+ assert(IS_TIM_DMA_SOURCE(TIM_DMASource));\r
+ assert(IS_FUNCTIONAL_STATE(Newstate));\r
+\r
+ tmpdier = TIMx->DIER;\r
+\r
+ if (Newstate != DISABLE)\r
+ {\r
+ /* Enable the DMA sources */\r
+ tmpdier |= TIM_DMASource;\r
+ }\r
+ else\r
+ {\r
+ /* Disable the DMA sources */\r
+ tmpdier &= (u16)(~TIM_DMASource);\r
+ }\r
+ TIMx->DIER = (u16)tmpdier;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_InternalClockConfig\r
+* Description : Configures the TIMx interrnal Clock\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_InternalClockConfig(TIM_TypeDef* TIMx)\r
+{\r
+ /* Disable slave mode to clock the prescaler directly with the internal clock */\r
+ TIMx->SMCR &= SMCR_SMS_Mask;\r
+}\r
+/*******************************************************************************\r
+* Function Name : TIM_ITRxExternalClockConfig\r
+* Description : Configures the TIMx Internal Trigger as External Clock\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_ITRSource: Trigger source.\r
+* This parameter can be one of the following values:\r
+* - TIM_TS_ITR0: Internal Trigger 0\r
+* - TIM_TS_ITR1: Internal Trigger 1\r
+* - TIM_TS_ITR2: Internal Trigger 2\r
+* - TIM_TS_ITR3: Internal Trigger 3\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, u16 TIM_InputTriggerSource)\r
+{\r
+ /* Check the parameters */\r
+ assert(IS_TIM_INTERNAL_TRIGGER_SELECTION(TIM_InputTriggerSource));\r
+\r
+ /* Select the Internal Trigger */\r
+ TIM_SelectInputTrigger(TIMx, TIM_InputTriggerSource);\r
+\r
+ /* Select the External clock mode1 */\r
+ TIMx->SMCR |= TIM_SlaveMode_External1;\r
+}\r
+/*******************************************************************************\r
+* Function Name : TIM_TIxExternalClockConfig\r
+* Description : Configures the TIMx Trigger as External Clock\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_TIxExternalCLKSource: Trigger source.\r
+* This parameter can be one of the following values:\r
+* - TIM_TS_TI1F_ED: TI1 Edge Detector\r
+* - TIM_TS_TI1FP1: Filtered Timer Input 1\r
+* - TIM_TS_TI2FP2: Filtered Timer Input 2\r
+* - TIM_ICPolarity: specifies the TIx Polarity.\r
+* This parameter can be:\r
+* - TIM_ICPolarity_Rising\r
+* - TIM_ICPolarity_Falling\r
+* - ICFilter : specifies the filter value.\r
+* This parameter must be a value between 0x0 and 0xF.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx, u16 TIM_TIxExternalCLKSource,\r
+ u16 TIM_ICPolarity, u8 ICFilter)\r
+{\r
+ /* Check the parameters */\r
+ assert(IS_TIM_TIX_TRIGGER_SELECTION(TIM_TIxExternalCLKSource));\r
+ assert(IS_TIM_IC_POLARITY(TIM_ICPolarity));\r
+ assert(IS_TIM_IC_FILTER(ICFilter));\r
+\r
+ /* Configure the Timer Input Clock Source */\r
+ if (TIM_TIxExternalCLKSource == TIM_TIxExternalCLK1Source_TI2)\r
+ {\r
+ TI2_Config(TIMx, TIM_ICPolarity, TIM_ICSelection_DirectTI, ICFilter);\r
+ }\r
+ else\r
+ {\r
+ TI1_Config(TIMx, TIM_ICPolarity, TIM_ICSelection_DirectTI, ICFilter);\r
+ }\r
+\r
+ /* Select the Trigger source */\r
+ TIM_SelectInputTrigger(TIMx, TIM_TIxExternalCLKSource);\r
+\r
+ /* Select the External clock mode1 */\r
+ TIMx->SMCR |= TIM_SlaveMode_External1;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_ETRClockMode1Config\r
+* Description : Configures the External clock Mode1\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_ExtTRGPrescaler: The external Trigger Prescaler.\r
+* It can be one of the following values:\r
+* - TIM_ExtTRGPSC_OFF\r
+* - TIM_ExtTRGPSC_DIV2\r
+* - TIM_ExtTRGPSC_DIV4\r
+* - TIM_ExtTRGPSC_DIV8.\r
+* - TIM_ExtTRGPolarity: The external Trigger Polarity.\r
+* It can be one of the following values:\r
+* - TIM_ExtTRGPolarity_Inverted\r
+* - TIM_ExtTRGPolarity_NonInverted\r
+* - ExtTRGFilter: External Trigger Filter.\r
+* This parameter must be a value between 0x00 and 0x0F\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, u16 TIM_ExtTRGPrescaler, u16 TIM_ExtTRGPolarity,\r
+ u8 ExtTRGFilter)\r
+{\r
+ /* Check the parameters */\r
+ assert(IS_TIM_EXT_PRESCALER(TIM_ExtTRGPrescaler));\r
+ assert(IS_TIM_EXT_POLARITY(TIM_ExtTRGPolarity));\r
+\r
+ /* Configure the ETR Clock source */\r
+ ETR_Config(TIMx, TIM_ExtTRGPrescaler, TIM_ExtTRGPolarity, ExtTRGFilter);\r
+\r
+ /* Select the External clock mode1 */\r
+ TIMx->SMCR &= SMCR_SMS_Mask;\r
+ TIMx->SMCR |= TIM_SlaveMode_External1;\r
+\r
+ /* Select the Trigger selection : ETRF */\r
+ TIMx->SMCR &= SMCR_TS_Mask;\r
+ TIMx->SMCR |= TIM_TS_ETRF;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_ETRClockMode2Config\r
+* Description : Configures the External clock Mode2\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_ExtTRGPrescaler: The external Trigger Prescaler.\r
+* It can be one of the following values:\r
+* - TIM_ExtTRGPSC_OFF\r
+* - TIM_ExtTRGPSC_DIV2\r
+* - TIM_ExtTRGPSC_DIV4\r
+* - TIM_ExtTRGPSC_DIV8\r
+* - TIM_ExtTRGPolarity: The external Trigger Polarity.\r
+* It can be one of the following values:\r
+* - TIM_ExtTRGPolarity_Inverted\r
+* - TIM_ExtTRGPolarity_NonInverted\r
+* - ExtTRGFilter: External Trigger Filter.\r
+* This parameter must be a value between 0x00 and 0x0F\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, u16 TIM_ExtTRGPrescaler, \r
+ u16 TIM_ExtTRGPolarity, u8 ExtTRGFilter)\r
+{\r
+ /* Check the parameters */\r
+ assert(IS_TIM_EXT_PRESCALER(TIM_ExtTRGPrescaler));\r
+ assert(IS_TIM_EXT_POLARITY(TIM_ExtTRGPolarity));\r
+\r
+ /* Configure the ETR Clock source */\r
+ ETR_Config(TIMx, TIM_ExtTRGPrescaler, TIM_ExtTRGPolarity, ExtTRGFilter);\r
+\r
+ /* Enable the External clock mode2 */\r
+ TIMx->SMCR |= SMCR_ECE_Set;\r
+}\r
+/*******************************************************************************\r
+* Function Name : TIM_SelectInputTrigger\r
+* Description : Selects the Input Trigger source\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_InputTriggerSource: The Input Trigger source.\r
+* This parameter can be one of the following values:\r
+* - TIM_TS_ITR0: Internal Trigger 0\r
+* - TIM_TS_ITR1: Internal Trigger 1\r
+* - TIM_TS_ITR2: Internal Trigger 2\r
+* - TIM_TS_ITR3: Internal Trigger 3\r
+* - TIM_TS_TI1F_ED: TI1 Edge Detector\r
+* - TIM_TS_TI1FP1: Filtered Timer Input 1\r
+* - TIM_TS_TI2FP2: Filtered Timer Input 2\r
+* - TIM_TS_ETRF: External Trigger input\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_SelectInputTrigger(TIM_TypeDef* TIMx, u16 TIM_InputTriggerSource)\r
+{\r
+ u32 tmpsmcr = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_TRIGGER_SELECTION(TIM_InputTriggerSource));\r
+\r
+ tmpsmcr = TIMx->SMCR;\r
+\r
+ /* Select the Tgigger Source */\r
+ tmpsmcr &= SMCR_TS_Mask;\r
+ tmpsmcr |= TIM_InputTriggerSource;\r
+\r
+ TIMx->SMCR = (u16)tmpsmcr;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_PrescalerConfig\r
+* Description : Configures the TIMx Prescaler.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - Prescaler: specifies the Prescaler Register value\r
+* - TIM_PSCReloadMode: specifies the TIM Prescaler Reload mode\r
+* This parameter can be one of the following values:\r
+* - TIM_PSCReloadMode_Update: The Prescaler is loaded at\r
+* the update event.\r
+* - TIM_PSCReloadMode_Immediate: The Prescaler is loaded\r
+* immediatly.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_PrescalerConfig(TIM_TypeDef* TIMx, u16 Prescaler, u16 TIM_PSCReloadMode)\r
+{\r
+ /* Check the parameters */\r
+ assert(IS_TIM_PRESCALER_RELOAD(TIM_PSCReloadMode));\r
+\r
+ /* Set the Prescaler value */\r
+ TIMx->PSC = Prescaler;\r
+\r
+ /* Set or reset the UG Bit */\r
+ if (TIM_PSCReloadMode == TIM_PSCReloadMode_Immediate)\r
+ {\r
+ TIMx->EGR |= TIM_EventSource_Update;\r
+ }\r
+ else\r
+ {\r
+ TIMx->EGR &= TIM_EventSource_Update;\r
+ }\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_CounterModeConfig\r
+* Description : Specifies the TIMx Counter Mode to be used.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_CounterMode: specifies the Counter Mode to be used\r
+* This parameter can be one of the following values:\r
+* - TIM_CounterMode_Up: TIM Up Counting Mode\r
+* - TIM_CounterMode_Down: TIM Down Counting Mode\r
+* - TIM_CounterMode_CenterAligned1: TIM Center Aligned Mode1\r
+* - TIM_CounterMode_CenterAligned2: TIM Center Aligned Mode2\r
+* - TIM_CounterMode_CenterAligned3: TIM Center Aligned Mode3\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_CounterModeConfig(TIM_TypeDef* TIMx, u16 TIM_CounterMode)\r
+{\r
+ u32 tmpcr1 = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_COUNTER_MODE(TIM_CounterMode));\r
+\r
+ tmpcr1 = TIMx->CR1;\r
+\r
+ /* Reset the CMS and DIR Bits */\r
+ tmpcr1 &= CR1_CounterMode_Mask;\r
+\r
+ /* Set the Counter Mode */\r
+ tmpcr1 |= TIM_CounterMode;\r
+\r
+ TIMx->CR1 = (u16)tmpcr1;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_ForcedOC1Config\r
+* Description : Forces the TIMx output 1 waveform to active or inactive level.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_ForcedAction: specifies the forced Action to be set to\r
+* the output waveform.\r
+* This parameter can be one of the following values:\r
+* - TIM_ForcedAction_Active: Force active level on OC1REF\r
+* - TIM_ForcedAction_InActive: Force inactive level on\r
+* OC1REF.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_ForcedOC1Config(TIM_TypeDef* TIMx, u16 TIM_ForcedAction)\r
+{\r
+ u32 tmpccmr1 = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_FORCED_ACTION(TIM_ForcedAction));\r
+\r
+ tmpccmr1 = TIMx->CCMR1;\r
+\r
+ /* Reset the OCM Bits */\r
+ tmpccmr1 &= CCMR_OCM13_Mask;\r
+\r
+ /* Configure The Forced output Mode */\r
+ tmpccmr1 |= TIM_ForcedAction;\r
+\r
+ TIMx->CCMR1 = (u16)tmpccmr1;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_ForcedOC2Config\r
+* Description : Forces the TIMx output 2 waveform to active or inactive level.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_ForcedAction: specifies the forced Action to be set to\r
+* the output waveform.\r
+* This parameter can be one of the following values:\r
+* - TIM_ForcedAction_Active: Force active level on OC2REF\r
+* - TIM_ForcedAction_InActive: Force inactive level on\r
+* OC2REF.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_ForcedOC2Config(TIM_TypeDef* TIMx, u16 TIM_ForcedAction)\r
+{\r
+ u32 tmpccmr1 = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_FORCED_ACTION(TIM_ForcedAction));\r
+\r
+ tmpccmr1 = TIMx->CCMR1;\r
+\r
+ /* Reset the OCM Bits */\r
+ tmpccmr1 &= CCMR_OCM24_Mask;\r
+\r
+ /* Configure The Forced output Mode */\r
+ tmpccmr1 |= (u16)(TIM_ForcedAction << 8);\r
+\r
+ TIMx->CCMR1 = (u16)tmpccmr1;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_ForcedOC3Config\r
+* Description : Forces the TIMx output 3 waveform to active or inactive level.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_ForcedAction: specifies the forced Action to be set to\r
+* the output waveform.\r
+* This parameter can be one of the following values:\r
+* - TIM_ForcedAction_Active: Force active level on OC3REF\r
+* - TIM_ForcedAction_InActive: Force inactive level on\r
+* OC3REF.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_ForcedOC3Config(TIM_TypeDef* TIMx, u16 TIM_ForcedAction)\r
+{\r
+ u32 tmpccmr2 = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_FORCED_ACTION(TIM_ForcedAction));\r
+\r
+ tmpccmr2 = TIMx->CCMR2;\r
+\r
+ /* Reset the OCM Bits */\r
+ tmpccmr2 &= CCMR_OCM13_Mask;\r
+\r
+ /* Configure The Forced output Mode */\r
+ tmpccmr2 |= TIM_ForcedAction;\r
+\r
+ TIMx->CCMR2 = (u16)tmpccmr2;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_ForcedOC4Config\r
+* Description : Forces the TIMx output 4 waveform to active or inactive level.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_ForcedAction: specifies the forced Action to be set to\r
+* the output waveform.\r
+* This parameter can be one of the following values:\r
+* - TIM_ForcedAction_Active: Force active level on OC4REF\r
+* - TIM_ForcedAction_InActive: Force inactive level on\r
+* OC4REF.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_ForcedOC4Config(TIM_TypeDef* TIMx, u16 TIM_ForcedAction)\r
+{\r
+ u32 tmpccmr2 = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_FORCED_ACTION(TIM_ForcedAction));\r
+\r
+ tmpccmr2 = TIMx->CCMR2;\r
+\r
+ /* Reset the OCM Bits */\r
+ tmpccmr2 &= CCMR_OCM24_Mask;\r
+\r
+ /* Configure The Forced output Mode */\r
+ tmpccmr2 |= (u16)(TIM_ForcedAction << 8);\r
+\r
+ TIMx->CCMR2 = (u16)tmpccmr2;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_ARRPreloadConfig\r
+* Description : Enables or disables TIMx peripheral Preload register on ARR.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - Newstate: new state of the TIMx peripheral Preload register\r
+* This parameter can be: ENABLE or DISABLE.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState Newstate)\r
+{\r
+ u32 tmpcr1 = 0;\r
+ \r
+ /* Check the parameters */\r
+ assert(IS_FUNCTIONAL_STATE(Newstate));\r
+\r
+ tmpcr1 = TIMx->CR1;\r
+\r
+ if (Newstate != DISABLE)\r
+ {\r
+ /* Set the ARR Preload Bit */\r
+ tmpcr1 |= CR1_ARPE_Set;\r
+ }\r
+ else\r
+ {\r
+ /* Reset the ARR Preload Bit */\r
+ tmpcr1 &= CR1_ARPE_Reset;\r
+ }\r
+\r
+ TIMx->CR1 = (u16)tmpcr1;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_SelectCCDMA\r
+* Description : Selects the TIMx peripheral Capture Compare DMA source.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - Newstate: new state of the Capture Compare DMA source\r
+* This parameter can be: ENABLE or DISABLE.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_SelectCCDMA(TIM_TypeDef* TIMx, FunctionalState Newstate)\r
+{\r
+ u32 tmpcr2 = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_FUNCTIONAL_STATE(Newstate));\r
+\r
+ tmpcr2 = TIMx->CR2;\r
+\r
+ if (Newstate != DISABLE)\r
+ {\r
+ /* Set the CCDS Bit */\r
+ tmpcr2 |= CR2_CCDS_Set;\r
+ }\r
+ else\r
+ {\r
+ /* Reset the CCDS Bit */\r
+ tmpcr2 &= CR2_CCDS_Reset;\r
+ }\r
+\r
+ TIMx->CR2 = (u16)tmpcr2;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_OC1PreloadConfig\r
+* Description : Enables or disables the TIMx peripheral Preload register on CCR1.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_OCPreload: new state of the TIMx peripheral Preload\r
+* register\r
+* This parameter can be one of the following values:\r
+* - TIM_OCPreload_Enable\r
+* - TIM_OCPreload_Disable\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_OC1PreloadConfig(TIM_TypeDef* TIMx, u16 TIM_OCPreload)\r
+{\r
+ u32 tmpccmr1 = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_OCPRELOAD_STATE(TIM_OCPreload));\r
+\r
+ tmpccmr1 = TIMx->CCMR1;\r
+\r
+ /* Reset the OCPE Bit */\r
+ tmpccmr1 &= CCMR_OC13PE_Mask;\r
+\r
+ /* Enable or Disable the Output Compare Preload feature */\r
+ tmpccmr1 |= TIM_OCPreload;\r
+\r
+ TIMx->CCMR1 = (u16)tmpccmr1;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_OC2PreloadConfig\r
+* Description : Enables or disables the TIMx peripheral Preload register on CCR2.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_OCPreload: new state of the TIMx peripheral Preload\r
+* register\r
+* This parameter can be one of the following values:\r
+* - TIM_OCPreload_Enable\r
+* - TIM_OCPreload_Disable\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, u16 TIM_OCPreload)\r
+{\r
+ u32 tmpccmr1 = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_OCPRELOAD_STATE(TIM_OCPreload));\r
+\r
+ tmpccmr1 = TIMx->CCMR1;\r
+\r
+ /* Reset the OCPE Bit */\r
+ tmpccmr1 &= CCMR_OC24PE_Mask;\r
+\r
+ /* Enable or Disable the Output Compare Preload feature */\r
+ tmpccmr1 |= (u16)(TIM_OCPreload << 8);\r
+\r
+ TIMx->CCMR1 = (u16)tmpccmr1;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_OC3PreloadConfig\r
+* Description : Enables or disables the TIMx peripheral Preload register on CCR3.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_OCPreload: new state of the TIMx peripheral Preload\r
+* register\r
+* This parameter can be one of the following values:\r
+* - TIM_OCPreload_Enable\r
+* - TIM_OCPreload_Disable\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_OC3PreloadConfig(TIM_TypeDef* TIMx, u16 TIM_OCPreload)\r
+{\r
+ u32 tmpccmr2 = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_OCPRELOAD_STATE(TIM_OCPreload));\r
+\r
+ tmpccmr2 = TIMx->CCMR2;\r
+\r
+ /* Reset the OCPE Bit */\r
+ tmpccmr2 &= CCMR_OC13PE_Mask;\r
+\r
+ /* Enable or Disable the Output Compare Preload feature */\r
+ tmpccmr2 |= TIM_OCPreload;\r
+\r
+ TIMx->CCMR2 = (u16)tmpccmr2;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_OC4PreloadConfig\r
+* Description : Enables or disables the TIMx peripheral Preload register on CCR4.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_OCPreload: new state of the TIMx peripheral Preload\r
+* register\r
+* This parameter can be one of the following values:\r
+* - TIM_OCPreload_Enable\r
+* - TIM_OCPreload_Disable\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_OC4PreloadConfig(TIM_TypeDef* TIMx, u16 TIM_OCPreload)\r
+{\r
+ u32 tmpccmr2 = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_OCPRELOAD_STATE(TIM_OCPreload));\r
+\r
+ tmpccmr2 = TIMx->CCMR2;\r
+\r
+ /* Reset the OCPE Bit */\r
+ tmpccmr2 &= CCMR_OC24PE_Mask;\r
+\r
+ /* Enable or Disable the Output Compare Preload feature */\r
+ tmpccmr2 |= (u16)(TIM_OCPreload << 8);\r
+\r
+ TIMx->CCMR2 = (u16)tmpccmr2;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_OC1FastConfig\r
+* Description : Configures the TIMx Output Compare 1 Fast feature.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_OCFast: new state of the Output Compare Fast Enable Bit.\r
+* This parameter can be one of the following values:\r
+* - TIM_OCFast_Enable\r
+* - TIM_OCFast_Disable\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_OC1FastConfig(TIM_TypeDef* TIMx, u16 TIM_OCFast)\r
+{\r
+ u32 tmpccmr1 = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_OCFAST_STATE(TIM_OCFast));\r
+\r
+ tmpccmr1 = TIMx->CCMR1;\r
+\r
+ /* Reset the OCFE Bit */\r
+ tmpccmr1 &= CCMR_OC13FE_Mask;\r
+\r
+ /* Enable or Disable the Output Compare Fast Bit */\r
+ tmpccmr1 |= TIM_OCFast;\r
+\r
+ TIMx->CCMR1 = (u16)tmpccmr1;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_OC2FastConfig\r
+* Description : Configures the TIMx Output Compare 2 Fast feature.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_OCFast: new state of the Output Compare Fast Enable Bit.\r
+* This parameter can be one of the following values:\r
+* - TIM_OCFast_Enable\r
+* - TIM_OCFast_Disable\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_OC2FastConfig(TIM_TypeDef* TIMx, u16 TIM_OCFast)\r
+{\r
+ u32 tmpccmr1 = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_OCFAST_STATE(TIM_OCFast));\r
+\r
+ tmpccmr1 = TIMx->CCMR1;\r
+\r
+ /* Reset the OCFE Bit */\r
+ tmpccmr1 &= CCMR_OC24FE_Mask;\r
+\r
+ /* Enable or Disable the Output Compare Fast Bit */\r
+ tmpccmr1 |= (u16)(TIM_OCFast << 8);\r
+\r
+ TIMx->CCMR1 = (u16)tmpccmr1;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_OC3FastConfig\r
+* Description : Configures the TIMx Output Compare 3 Fast feature.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_OCFast: new state of the Output Compare Fast Enable Bit.\r
+* This parameter can be one of the following values:\r
+* - TIM_OCFast_Enable\r
+* - TIM_OCFast_Disable\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_OC3FastConfig(TIM_TypeDef* TIMx, u16 TIM_OCFast)\r
+{\r
+ u32 tmpccmr2 = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_OCFAST_STATE(TIM_OCFast));\r
+\r
+ tmpccmr2 = TIMx->CCMR2;\r
+\r
+ /* Reset the OCFE Bit */\r
+ tmpccmr2 &= CCMR_OC13FE_Mask;\r
+\r
+ /* Enable or Disable the Output Compare Fast Bit */\r
+ tmpccmr2 |= TIM_OCFast;\r
+\r
+ TIMx->CCMR2 = (u16)tmpccmr2;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_OC4FastConfig\r
+* Description : Configures the TIMx Output Compare 4 Fast feature.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_OCFast: new state of the Output Compare Fast Enable Bit.\r
+* This parameter can be one of the following values:\r
+* - TIM_OCFast_Enable\r
+* - TIM_OCFast_Disable\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_OC4FastConfig(TIM_TypeDef* TIMx, u16 TIM_OCFast)\r
+{\r
+ u32 tmpccmr2 = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_OCFAST_STATE(TIM_OCFast));\r
+\r
+ tmpccmr2 = TIMx->CCMR2;\r
+\r
+ /* Reset the OCFE Bit */\r
+ tmpccmr2 &= CCMR_OC24FE_Mask;\r
+\r
+ /* Enable or Disable the Output Compare Fast Bit */\r
+ tmpccmr2 |= (u16)(TIM_OCFast << 8);\r
+\r
+ TIMx->CCMR2 = (u16)tmpccmr2;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_UpdateDisableConfig\r
+* Description : Enables or Disables the TIMx Update event.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - Newstate: new state of the TIMx peripheral Preload register\r
+* This parameter can be: ENABLE or DISABLE.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_UpdateDisableConfig(TIM_TypeDef* TIMx, FunctionalState Newstate)\r
+{\r
+ u32 tmpcr1 = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_FUNCTIONAL_STATE(Newstate));\r
+\r
+ tmpcr1 = TIMx->CR1;\r
+\r
+ if (Newstate != DISABLE)\r
+ {\r
+ /* Set the Update Disable Bit */\r
+ tmpcr1 |= CR1_UDIS_Set;\r
+ }\r
+ else\r
+ {\r
+ /* Reset the Update Disable Bit */\r
+ tmpcr1 &= CR1_UDIS_Reset;\r
+ }\r
+\r
+ TIMx->CR1 = (u16)tmpcr1;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_EncoderInterfaceConfig\r
+* Description : Configures the TIMx Encoder Interface.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_EncoderMode: specifies the TIMx Encoder Mode.\r
+* This parameter can be one of the following values:\r
+* - TIM_EncoderMode_TI1: Counter counts on TI1FP1 edge\r
+* depending on TI2FP2 level.\r
+* - TIM_EncoderMode_TI2: Counter counts on TI2FP2 edge\r
+* depending on TI1FP1 level.\r
+* - TIM_EncoderMode_TI12: Counter counts on both TI1FP1 and\r
+* TI2FP2 edges depending on the level of the other input.\r
+* - TIM_IC1Polarity: specifies the IC1 Polarity\r
+* This parmeter can be one of the following values:\r
+* - TIM_ICPolarity_Falling\r
+* - TIM_ICPolarity_Rising\r
+* - TIM_IC2Polarity: specifies the IC2 Polarity\r
+* This parmeter can be one of the following values:\r
+* - TIM_ICPolarity_Falling\r
+* - TIM_ICPolarity_Rising\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_EncoderInterfaceConfig(TIM_TypeDef* TIMx, u16 TIM_EncoderMode,\r
+ u16 TIM_IC1Polarity, u16 TIM_IC2Polarity)\r
+{\r
+ u32 tmpsmcr = 0;\r
+ u32 tmpccmr1 = 0;\r
+ u32 tmpccer = 0;\r
+ \r
+ /* Check the parameters */\r
+ assert(IS_TIM_ENCODER_MODE(TIM_EncoderMode));\r
+ assert(IS_TIM_IC_POLARITY(TIM_IC1Polarity));\r
+ assert(IS_TIM_IC_POLARITY(TIM_IC2Polarity));\r
+\r
+ tmpsmcr = TIMx->SMCR;\r
+ tmpccmr1 = TIMx->CCMR1;\r
+ tmpccer = TIMx->CCER;\r
+\r
+ /* Set the encoder Mode */\r
+ tmpsmcr &= SMCR_SMS_Mask;\r
+ tmpsmcr |= TIM_EncoderMode;\r
+\r
+ /* Select the Capture Compare 1 and the Capture Compare 2 as input */\r
+ tmpccmr1 &= CCMR_CC13S_Mask & CCMR_CC24S_Mask;\r
+ tmpccmr1 |= CCMR_TI13Direct_Set | CCMR_TI24Direct_Set;\r
+\r
+ /* Set the TI1 and the TI2 Polarities */\r
+ tmpccer &= CCER_CC1P_Mask & CCER_CC2P_Mask;\r
+ tmpccer |= (TIM_IC1Polarity | (u16)((u16)TIM_IC2Polarity << 4));\r
+\r
+ TIMx->SMCR = (u16)tmpsmcr;\r
+\r
+ TIMx->CCMR1 = (u16)tmpccmr1;\r
+\r
+ TIMx->CCER = (u16)tmpccer;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_GenerateEvent\r
+* Description : Configures the TIMx event to be generate by software.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_EventSource: specifies the event source.\r
+* This parameter can be one or more of the following values:\r
+* - TIM_EventSource_Update: Timer update Event source\r
+* - TIM_EventSource_CC1: Timer Capture Compare 1 Event source\r
+* - TIM_EventSource_CC2: Timer Capture Compare 2 Event source\r
+* - TIM_EventSource_CC3: Timer Capture Compare 3 Event source\r
+* - TIM_EventSource_CC4: Timer Capture Compare 4 Event source\r
+* - TIM_EventSource_Trigger: Timer Trigger Event source\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_GenerateEvent(TIM_TypeDef* TIMx, u16 TIM_EventSource)\r
+{\r
+ /* Check the parameters */\r
+ assert(IS_TIM_EVENT_SOURCE(TIM_EventSource));\r
+\r
+ /* Set the event sources */\r
+ TIMx->EGR |= TIM_EventSource;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_OC1PolarityConfig\r
+* Description : Configures the TIMx channel 1 polarity.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_OCPolarity: specifies the OC1 Polarity\r
+* This parmeter can be one of the following values:\r
+* - TIM_OCPolarity_High: Output Compare active high\r
+* - TIM_OCPolarity_Low: Output Compare active low\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_OC1PolarityConfig(TIM_TypeDef* TIMx, u16 TIM_OCPolarity)\r
+{\r
+ u32 tmpccer = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_OC_POLARITY(TIM_OCPolarity));\r
+\r
+ tmpccer = TIMx->CCER;\r
+\r
+ /* Set or Reset the CC1P Bit */\r
+ tmpccer &= CCER_CC1P_Mask;\r
+ tmpccer |= TIM_OCPolarity;\r
+\r
+ TIMx->CCER = (u16)tmpccer;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_OC2PolarityConfig\r
+* Description : Configures the TIMx channel 2 polarity.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_OCPolarity: specifies the OC2 Polarity\r
+* This parmeter can be one of the following values:\r
+* - TIM_OCPolarity_High: Output Compare active high\r
+* - TIM_OCPolarity_Low: Output Compare active low\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_OC2PolarityConfig(TIM_TypeDef* TIMx, u16 TIM_OCPolarity)\r
+{\r
+ u32 tmpccer = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_OC_POLARITY(TIM_OCPolarity));\r
+\r
+ tmpccer = TIMx->CCER;\r
+\r
+ /* Set or Reset the CC2P Bit */\r
+ tmpccer &= CCER_CC2P_Mask;\r
+ tmpccer |= (u16)((u16)TIM_OCPolarity << 4);\r
+\r
+ TIMx->CCER = (u16)tmpccer;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_OC3PolarityConfig\r
+* Description : Configures the TIMx channel 3 polarity.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_OCPolarity: specifies the OC3 Polarity\r
+* This parmeter can be one of the following values:\r
+* - TIM_OCPolarity_High: Output Compare active high\r
+* - TIM_OCPolarity_Low: Output Compare active low\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_OC3PolarityConfig(TIM_TypeDef* TIMx, u16 TIM_OCPolarity)\r
+{\r
+ u32 tmpccer = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_OC_POLARITY(TIM_OCPolarity));\r
+\r
+ tmpccer = TIMx->CCER;\r
+\r
+ /* Set or Reset the CC3P Bit */\r
+ tmpccer &= CCER_CC3P_Mask;\r
+ tmpccer |= (u16)((u16)TIM_OCPolarity << 8);\r
+\r
+ TIMx->CCER = (u16)tmpccer;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_OC4PolarityConfig\r
+* Description : Configures the TIMx channel 4 polarity.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_OCPolarity: specifies the OC4 Polarity\r
+* This parmeter can be one of the following values:\r
+* - TIM_OCPolarity_High: Output Compare active high\r
+* - TIM_OCPolarity_Low: Output Compare active low\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_OC4PolarityConfig(TIM_TypeDef* TIMx, u16 TIM_OCPolarity)\r
+{\r
+ u32 tmpccer = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_OC_POLARITY(TIM_OCPolarity));\r
+\r
+ tmpccer = TIMx->CCER;\r
+\r
+ /* Set or Reset the CC4P Bit */\r
+ tmpccer &= CCER_CC4P_Mask;\r
+ tmpccer |= (u16)((u16)TIM_OCPolarity << 12);\r
+\r
+ TIMx->CCER = (u16)tmpccer;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_UpdateRequestConfig\r
+* Description : Configures the TIMx Update Request Interrupt source.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_UpdateSource: specifies the Update source.\r
+* This parameter can be one of the following values:\r
+* - TIM_UpdateSource_Regular\r
+* - TIM_UpdateSource_Global\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_UpdateRequestConfig(TIM_TypeDef* TIMx, u16 TIM_UpdateSource)\r
+{\r
+ u32 tmpcr1 = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_UPDATE_SOURCE(TIM_UpdateSource));\r
+\r
+ tmpcr1 = TIMx->CR1;\r
+\r
+ if (TIM_UpdateSource == TIM_UpdateSource_Regular)\r
+ {\r
+ /* Set the URS Bit */\r
+ tmpcr1 |= CR1_URS_Set;\r
+ }\r
+ else\r
+ {\r
+ /* Reset the URS Bit */\r
+ tmpcr1 &= CR1_URS_Reset;\r
+ }\r
+ TIMx->CR1 = (u16)tmpcr1;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_SelectHallSensor\r
+* Description : Enables or disables the TIMx\92s Hall sensor interface.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - Newstate: new state of the TIMx Hall sensor interface.\r
+* This parameter can be: ENABLE or DISABLE.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_SelectHallSensor(TIM_TypeDef* TIMx, FunctionalState Newstate)\r
+{\r
+ /* Check the parameters */\r
+ assert(IS_FUNCTIONAL_STATE(Newstate));\r
+\r
+ if (Newstate != DISABLE)\r
+ {\r
+ /* Set the TI1S Bit */\r
+ TIMx->CR2 |= CR2_TI1S_Set;\r
+ }\r
+ else\r
+ {\r
+ /* Reset the TI1S Bit */\r
+ TIMx->CR2 &= CR2_TI1S_Reset;\r
+ }\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_SelectOnePulseMode\r
+* Description : Selects the TIMx\92s One Pulse Mode.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_OPMode: specifies the OPM Mode to be used.\r
+* This parameter can be one of the following values:\r
+* - TIM_OPMode_Single\r
+* - TIM_OPMode_Repetitive\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_SelectOnePulseMode(TIM_TypeDef* TIMx, u16 TIM_OPMode)\r
+{\r
+ u32 tmpcr1 = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_OPM_MODE(TIM_OPMode));\r
+\r
+ tmpcr1 = TIMx->CR1;\r
+\r
+ /* Reset the OPM Bit */\r
+ tmpcr1 &= CR1_OPM_Mask;\r
+\r
+ /* Configure the OPM Mode */\r
+ tmpcr1 |= TIM_OPMode;\r
+\r
+ TIMx->CR1 = (u16)tmpcr1;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_SelectOutputTrigger\r
+* Description : Selects the TIMx Trigger Output Mode.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_TRGOSource: specifies the Trigger Output source.\r
+* This paramter can be one of the following values:\r
+* - TIM_TRGOSource_Reset\r
+* - TIM_TRGOSource_Enable\r
+* - TIM_TRGOSource_Update\r
+* - TIM_TRGOSource_OC1\r
+* - TIM_TRGOSource_OC1Ref\r
+* - TIM_TRGOSource_OC2Ref\r
+* - TIM_TRGOSource_OC3Ref\r
+* - TIM_TRGOSource_OC4Ref\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_SelectOutputTrigger(TIM_TypeDef* TIMx, u16 TIM_TRGOSource)\r
+{\r
+ u32 tmpcr2 = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_TRGO_SOURCE(TIM_TRGOSource));\r
+\r
+ tmpcr2 = TIMx->CR2;\r
+ /* Reset the MMS Bits */\r
+ tmpcr2 &= CR2_MMS_Mask;\r
+\r
+ /* Select the TRGO source */\r
+ tmpcr2 |= TIM_TRGOSource;\r
+\r
+ TIMx->CR2 = (u16)tmpcr2;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_SelectSlaveMode\r
+* Description : Selects the TIMx Slave Mode.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_SlaveMode: specifies the Timer Slave Mode.\r
+* This paramter can be one of the following values:\r
+* - TIM_SlaveMode_Reset\r
+* - TIM_SlaveMode_Gated\r
+* - TIM_SlaveMode_Trigger\r
+* - TIM_SlaveMode_External1\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_SelectSlaveMode(TIM_TypeDef* TIMx, u16 TIM_SlaveMode)\r
+{\r
+ u32 tmpsmcr = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_SLAVE_MODE(TIM_SlaveMode));\r
+\r
+ tmpsmcr = TIMx->SMCR;\r
+\r
+ /* Reset the SMS Bits */\r
+ tmpsmcr &= SMCR_SMS_Mask;\r
+\r
+ /* Select the Slave Mode */\r
+ tmpsmcr |= TIM_SlaveMode;\r
+\r
+ TIMx->SMCR = (u16)tmpsmcr;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_SelectMasterSlaveMode\r
+* Description : Sets or Resets the TIMx Master/Slave Mode.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_MasterSlaveMode: specifies the Timer Master Slave Mode.\r
+* This paramter can be one of the following values:\r
+* - TIM_MasterSlaveMode_Enable: synchronization between the\r
+* current timer and its slaves (through TRGO).\r
+* - TIM_MasterSlaveMode_Disable: No action\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_SelectMasterSlaveMode(TIM_TypeDef* TIMx, u16 TIM_MasterSlaveMode)\r
+{\r
+ u32 tmpsmcr = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_MSM_STATE(TIM_MasterSlaveMode));\r
+\r
+ tmpsmcr = TIMx->SMCR;\r
+\r
+ /* Set or Reset the MSM Bit */\r
+ tmpsmcr &= SMCR_MSM_Mask;\r
+ tmpsmcr |= TIM_MasterSlaveMode;\r
+\r
+ TIMx->SMCR = (u16)tmpsmcr;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_SetAutoreload\r
+* Description : Sets the TIMx Autoreload Register value\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - Autoreload: specifies the Autoreload register new value.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_SetAutoreload(TIM_TypeDef* TIMx, u16 Autoreload)\r
+{\r
+ /* Set the Autoreload Register value */\r
+ TIMx->ARR = Autoreload;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_SetCompare1\r
+* Description : Sets the TIMx Capture Compare1 Register value\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - Compare1: specifies the Capture Compare1 register new value.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_SetCompare1(TIM_TypeDef* TIMx, u16 Compare1)\r
+{\r
+ /* Set the Capture Compare1 Register value */\r
+ TIMx->CCR1 = Compare1;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_SetCompare2\r
+* Description : Sets the TIMx Capture Compare2 Register value\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - Compare2: specifies the Capture Compare2 register new value.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_SetCompare2(TIM_TypeDef* TIMx, u16 Compare2)\r
+{\r
+ /* Set the Capture Compare2 Register value */\r
+ TIMx->CCR2 = Compare2;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_SetCompare3\r
+* Description : Sets the TIMx Capture Compare3 Register value\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - Compare3: specifies the Capture Compare3 register new value.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_SetCompare3(TIM_TypeDef* TIMx, u16 Compare3)\r
+{\r
+ /* Set the Capture Compare3 Register value */\r
+ TIMx->CCR3 = Compare3;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_SetCompare4\r
+* Description : Sets the TIMx Capture Compare4 Register value\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - Compare4: specifies the Capture Compare4 register new value.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_SetCompare4(TIM_TypeDef* TIMx, u16 Compare4)\r
+{\r
+ /* Set the Capture Compare4 Register value */\r
+ TIMx->CCR4 = Compare4;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_SetIC1Prescaler\r
+* Description : Sets the TIMx Input Capture 1 prescaler.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_IC1Prescaler: specifies the Input Capture1 prescaler\r
+* new value.\r
+* This parameter can be one of the following values:\r
+* - TIM_ICPSC_DIV1: no prescaler\r
+* - TIM_ICPSC_DIV2: capture is done once every 2 events\r
+* - TIM_ICPSC_DIV4: capture is done once every 4 events\r
+* - TIM_ICPSC_DIV8: capture is done once every 8 events\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_SetIC1Prescaler(TIM_TypeDef* TIMx, u16 TIM_IC1Prescaler)\r
+{\r
+ u32 tmpccmr1 = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_IC_PRESCALER(TIM_IC1Prescaler));\r
+\r
+ tmpccmr1 = TIMx->CCMR1;\r
+\r
+ /* Reset the IC1PSC Bits */\r
+ tmpccmr1 &= CCMR_IC13PSC_Mask;\r
+\r
+ /* Set the IC1PSC value */\r
+ tmpccmr1 |= TIM_IC1Prescaler;\r
+\r
+ TIMx->CCMR1 = (u16)tmpccmr1;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_SetIC2Prescaler\r
+* Description : Sets the TIMx Input Capture 2 prescaler.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_IC2Prescaler: specifies the Input Capture2 prescaler\r
+* new value.\r
+* This parameter can be one of the following values:\r
+* - TIM_ICPSC_DIV1: no prescaler\r
+* - TIM_ICPSC_DIV2: capture is done once every 2 events\r
+* - TIM_ICPSC_DIV4: capture is done once every 4 events\r
+* - TIM_ICPSC_DIV8: capture is done once every 8 events\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_SetIC2Prescaler(TIM_TypeDef* TIMx, u16 TIM_IC2Prescaler)\r
+{\r
+ u32 tmpccmr1 = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_IC_PRESCALER(TIM_IC2Prescaler));\r
+\r
+ tmpccmr1 = TIMx->CCMR1;\r
+\r
+ /* Reset the IC2PSC Bits */\r
+ tmpccmr1 &= CCMR_IC24PSC_Mask;\r
+\r
+ /* Set the IC2PSC value */\r
+ tmpccmr1 |= (u16)((u16)TIM_IC2Prescaler << 8);\r
+\r
+ TIMx->CCMR1 = (u16)tmpccmr1;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_SetIC3Prescaler\r
+* Description : Sets the TIMx Input Capture 3 prescaler.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_IC3Prescaler: specifies the Input Capture3 prescaler\r
+* new value.\r
+* This parameter can be one of the following values:\r
+* - TIM_ICPSC_DIV1: no prescaler\r
+* - TIM_ICPSC_DIV2: capture is done once every 2 events\r
+* - TIM_ICPSC_DIV4: capture is done once every 4 events\r
+* - TIM_ICPSC_DIV8: capture is done once every 8 events\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_SetIC3Prescaler(TIM_TypeDef* TIMx, u16 TIM_IC3Prescaler)\r
+{\r
+ u32 tmpccmr2 = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_IC_PRESCALER(TIM_IC3Prescaler));\r
+\r
+ tmpccmr2 = TIMx->CCMR2;\r
+\r
+ /* Reset the IC3PSC Bits */\r
+ tmpccmr2 &= CCMR_IC13PSC_Mask;\r
+\r
+ /* Set the IC3PSC value */\r
+ tmpccmr2 |= TIM_IC3Prescaler;\r
+\r
+ TIMx->CCMR2 = (u16)tmpccmr2;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_SetIC4Prescaler\r
+* Description : Sets the TIMx Input Capture 4 prescaler.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_IC4Prescaler: specifies the Input Capture4 prescaler\r
+* new value.\r
+* This parameter can be one of the following values:\r
+* - TIM_ICPSC_DIV1: no prescaler\r
+* - TIM_ICPSC_DIV2: capture is done once every 2 events\r
+* - TIM_ICPSC_DIV4: capture is done once every 4 events\r
+* - TIM_ICPSC_DIV8: capture is done once every 8 events\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_SetIC4Prescaler(TIM_TypeDef* TIMx, u16 TIM_IC4Prescaler)\r
+{\r
+ u32 tmpccmr2 = 0;\r
+ \r
+ /* Check the parameters */\r
+ assert(IS_TIM_IC_PRESCALER(TIM_IC4Prescaler));\r
+\r
+ tmpccmr2 = TIMx->CCMR2;\r
+\r
+ /* Reset the IC4PSC Bits */\r
+ tmpccmr2 &= CCMR_IC24PSC_Mask;\r
+\r
+ /* Set the IC4PSC value */\r
+ tmpccmr2 |= (u16)((u16)TIM_IC4Prescaler << 8);\r
+\r
+ TIMx->CCMR2 = (u16)tmpccmr2;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_SetClockDivision\r
+* Description : Sets the TIMx Clock Division value.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_CKD: specifies the clock division value.\r
+* This parameter can be one of the following value:\r
+* - TIM_CKD_DIV1: TDTS = Tck_tim\r
+* - TIM_CKD_DIV2: TDTS = 2*Tck_tim\r
+* - TIM_CKD_DIV4: TDTS = 4*Tck_tim\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_SetClockDivision(TIM_TypeDef* TIMx, u16 TIM_CKD)\r
+{\r
+ u32 tmpcr1 = 0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_CKD_DIV(TIM_CKD));\r
+\r
+ tmpcr1 = TIMx->CR1;\r
+\r
+ /* Reset the CKD Bits */\r
+ tmpcr1 &= CR1_CKD_Mask;\r
+\r
+ /* Set the CKD value */\r
+ tmpcr1 |= TIM_CKD;\r
+\r
+ TIMx->CR1 = (u16)tmpcr1;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_GetCapture1\r
+* Description : Gets the TIMx Input Capture 1 value.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* Output : None\r
+* Return : Capture Compare 1 Register value.\r
+*******************************************************************************/\r
+u16 TIM_GetCapture1(TIM_TypeDef* TIMx)\r
+{\r
+ /* Get the Capture 1 Register value */\r
+ return TIMx->CCR1;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_GetCapture2\r
+* Description : Gets the TIMx Input Capture 2 value.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* Output : None\r
+* Return : Capture Compare 2 Register value.\r
+*******************************************************************************/\r
+u16 TIM_GetCapture2(TIM_TypeDef* TIMx)\r
+{\r
+ /* Get the Capture 2 Register value */\r
+ return TIMx->CCR2;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_GetCapture3\r
+* Description : Gets the TIMx Input Capture 3 value.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* Output : None\r
+* Return : Capture Compare 3 Register value.\r
+*******************************************************************************/\r
+u16 TIM_GetCapture3(TIM_TypeDef* TIMx)\r
+{\r
+ /* Get the Capture 3 Register value */\r
+ return TIMx->CCR3;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_GetCapture4\r
+* Description : Gets the TIMx Input Capture 4 value.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* Output : None\r
+* Return : Capture Compare 4 Register value.\r
+*******************************************************************************/\r
+u16 TIM_GetCapture4(TIM_TypeDef* TIMx)\r
+{\r
+ /* Get the Capture 4 Register value */\r
+ return TIMx->CCR4;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_GetCounter\r
+* Description : Gets the TIMx Counter value.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* Output : None\r
+* Return : Counter Register value.\r
+*******************************************************************************/\r
+u16 TIM_GetCounter(TIM_TypeDef* TIMx)\r
+{\r
+ /* Get the Counter Register value */\r
+ return TIMx->CNT;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_GetPrescaler\r
+* Description : Gets the TIMx Prescaler value.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* Output : None\r
+* Return : Prescaler Register value.\r
+*******************************************************************************/\r
+u16 TIM_GetPrescaler(TIM_TypeDef* TIMx)\r
+{\r
+ /* Get the Prescaler Register value */\r
+ return TIMx->PSC;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_GetFlagStatus\r
+* Description : Checks whether the specified TIMx flag is set or not.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_FLAG: specifies the flag to check.\r
+* This parameter can be one of the following values:\r
+* - TIM_FLAG_Update: Timer update Flag\r
+* - TIM_FLAG_CC1: Timer Capture Compare 1 Flag\r
+* - TIM_FLAG_CC2: Timer Capture Compare 2 Flag\r
+* - TIM_FLAG_CC3: Timer Capture Compare 3 Flag\r
+* - TIM_FLAG_CC4: Timer Capture Compare 4 Flag\r
+* - TIM_FLAG_Trigger: Timer Trigger Flag\r
+* - TIM_FLAG_CC1OF: Timer Capture Compare 1 overcapture Flag\r
+* - TIM_FLAG_CC2OF: Timer Capture Compare 2 overcapture Flag\r
+* - TIM_FLAG_CC3OF: Timer Capture Compare 3 overcapture Flag\r
+* - TIM_FLAG_CC4OF: Timer Capture Compare 4 overcapture Flag\r
+* Output : None\r
+* Return : The new state of TIM_FLAG (SET or RESET).\r
+*******************************************************************************/\r
+FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, u16 TIM_FLAG)\r
+{\r
+ FlagStatus bitstatus = RESET;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_GET_FLAG(TIM_FLAG));\r
+\r
+ if ((TIMx->SR & TIM_FLAG) != (u16)RESET )\r
+ {\r
+ bitstatus = SET;\r
+ }\r
+ else\r
+ {\r
+ bitstatus = RESET;\r
+ }\r
+ return bitstatus;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_ClearFlag\r
+* Description : Clears the TIMx's pending flags.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_FLAG: specifies the flag bit to clear.\r
+* This parameter can be any combination of the following values:\r
+* - TIM_FLAG_Update: Timer update Flag\r
+* - TIM_FLAG_CC1: Timer Capture Compare 1 Flag\r
+* - TIM_FLAG_CC2: Timer Capture Compare 2 Flag\r
+* - TIM_FLAG_CC3: Timer Capture Compare 3 Flag\r
+* - TIM_FLAG_CC4: Timer Capture Compare 4 Flag\r
+* - TIM_FLAG_Trigger: Timer Trigger Flag\r
+* - TIM_FLAG_CC1OF: Timer Capture Compare 1 overcapture Flag\r
+* - TIM_FLAG_CC2OF: Timer Capture Compare 2 overcapture Flag\r
+* - TIM_FLAG_CC3OF: Timer Capture Compare 3 overcapture Flag\r
+* - TIM_FLAG_CC4OF: Timer Capture Compare 4 overcapture Flag\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_ClearFlag(TIM_TypeDef* TIMx, u16 TIM_FLAG)\r
+{\r
+ /* Check the parameters */\r
+ assert(IS_TIM_CLEAR_FLAG(TIM_FLAG));\r
+\r
+ /* Clear the flags */\r
+ TIMx->SR &= (u16)~TIM_FLAG;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_GetITStatus\r
+* Description : Checks whether the TIMx interrupt has occurred or not.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_IT: specifies the TIM interrupt source to check.\r
+* This parameter can be one of the following values:\r
+* - TIM_IT_Update: Timer update Interrupt source\r
+* - TIM_IT_CC1: Timer Capture Compare 1 Interrupt source\r
+* - TIM_IT_CC2: Timer Capture Compare 2 Interrupt source\r
+* - TIM_IT_CC3: Timer Capture Compare 3 Interrupt source\r
+* - TIM_IT_CC4: Timer Capture Compare 4 Interrupt source\r
+* - TIM_IT_Trigger: Timer Trigger Interrupt source\r
+* Output : None\r
+* Return : The new state of the TIM_IT(SET or RESET).\r
+*******************************************************************************/\r
+ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, u16 TIM_IT)\r
+{\r
+ ITStatus bitstatus = RESET;\r
+ \r
+ u16 itstatus = 0x0, itenable = 0x0;\r
+\r
+ /* Check the parameters */\r
+ assert(IS_TIM_GET_IT(TIM_IT));\r
+ \r
+ itstatus = TIMx->SR & TIM_IT;\r
+ \r
+ itenable = TIMx->DIER & TIM_IT;\r
+\r
+ if ((itstatus != (u16)RESET) && (itenable != (u16)RESET))\r
+ {\r
+ bitstatus = SET;\r
+ }\r
+ else\r
+ {\r
+ bitstatus = RESET;\r
+ }\r
+ return bitstatus;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TIM_ClearITPendingBit\r
+* Description : Clears the TIMx's interrupt pending bits.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_IT: specifies the pending bit to clear.\r
+* This parameter can be any combination of the following values:\r
+* - TIM_IT_Update: Timer update Interrupt source\r
+* - TIM_IT_CC1: Timer Capture Compare 1 Interrupt source\r
+* - TIM_IT_CC2: Timer Capture Compare 2 Interrupt source\r
+* - TIM_IT_CC3: Timer Capture Compare 3 Interrupt source\r
+* - TIM_IT_CC4: Timer Capture Compare 4 Interrupt source\r
+* - TIM_IT_Trigger: Timer Trigger Interrupt source\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, u16 TIM_IT)\r
+{\r
+ /* Check the parameters */\r
+ assert(IS_TIM_IT(TIM_IT));\r
+ \r
+ /* Clear the IT pending Bit */\r
+ TIMx->SR &= (u16)~TIM_IT;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : PWMInput_Config\r
+* Description : Configures the TIM peripheral according to the specified\r
+* parameters in the TIM_ICInitStruct to measure an external PWM\r
+* signal.\r
+* Input : - TIM_ICInitStruct: pointer to a TIM_ICInitTypeDef structure\r
+* that contains the configuration information for the specified\r
+* TIM peripheral.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+static void PWMI_Config(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct)\r
+{\r
+ u8 ICPolarity = TIM_ICPolarity_Rising;\r
+ u8 ICSelection = TIM_ICSelection_DirectTI;\r
+\r
+ /* Select the Opposite Input Polarity */\r
+ if (TIM_ICInitStruct->TIM_ICPolarity == TIM_ICPolarity_Rising)\r
+ {\r
+ ICPolarity = TIM_ICPolarity_Falling;\r
+ }\r
+ else\r
+ {\r
+ ICPolarity = TIM_ICPolarity_Rising;\r
+ }\r
+\r
+ /* Select the Opposite Input */\r
+ if (TIM_ICInitStruct->TIM_ICSelection == TIM_ICSelection_DirectTI)\r
+ {\r
+ ICSelection = TIM_ICSelection_IndirectTI;\r
+ }\r
+ else\r
+ {\r
+ ICSelection = TIM_ICSelection_DirectTI;\r
+ }\r
+\r
+ if (TIM_ICInitStruct->TIM_Channel == TIM_Channel_1)\r
+ {\r
+ /* TI1 Configuration */\r
+ TI1_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity, TIM_ICInitStruct->TIM_ICSelection,\r
+ TIM_ICInitStruct->TIM_ICFilter);\r
+\r
+ /* Set the Input Capture Prescaler value */\r
+ TIM_SetIC1Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);\r
+\r
+ /* TI2 Configuration */\r
+ TI2_Config(TIMx, ICPolarity, ICSelection, TIM_ICInitStruct->TIM_ICFilter);\r
+\r
+ /* Set the Input Capture Prescaler value */\r
+ TIM_SetIC2Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);\r
+ }\r
+ else\r
+ { \r
+ /* TI1 Configuration */\r
+ TI2_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity, TIM_ICInitStruct->TIM_ICSelection,\r
+ TIM_ICInitStruct->TIM_ICFilter);\r
+\r
+ /* Set the Input Capture Prescaler value */\r
+ TIM_SetIC2Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);\r
+\r
+ /* TI2 Configuration */\r
+ TI1_Config(TIMx, ICPolarity, ICSelection, TIM_ICInitStruct->TIM_ICFilter);\r
+\r
+ /* Set the Input Capture Prescaler value */\r
+ TIM_SetIC1Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler);\r
+ }\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TI1_Config\r
+* Description : Configure the TI1 as Input.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_ICPolarity : The Input Polarity.\r
+* This parameter can be one of the following values:\r
+* - TIM_ICPolarity_Rising\r
+* - TIM_ICPolarity_Falling\r
+* - TIM_ICSelection: specifies the input to be used.\r
+* This parameter can be one of the following values:\r
+* - TIM_ICSelection_DirectTI: TIM Input 1 is selected to\r
+* be connected to IC1.\r
+* - TIM_ICSelection_IndirectTI: TIM Input 1 is selected to\r
+* be connected to IC2.\r
+* - TIM_ICSelection_TRGI: TIM Input 1 is selected to be\r
+* connected to TRGI.\r
+* - TIM_ICFilter: Specifies the Input Capture Filter.\r
+* This parameter must be a value between 0x00 and 0x0F.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+static void TI1_Config(TIM_TypeDef* TIMx, u16 TIM_ICPolarity, u16 TIM_ICSelection,\r
+ u8 TIM_ICFilter)\r
+{\r
+ u32 tmpccmr1 = 0, tmpccer = 0;\r
+\r
+ tmpccmr1 = TIMx->CCMR1;\r
+ tmpccer = TIMx->CCER;\r
+\r
+ /* Disable the Channel 1: Reset the CCE Bit */\r
+ TIMx->CCER &= CCRE_CC1E_Reset;\r
+\r
+ /* Select the Input and set the filter */\r
+ tmpccmr1 &= CCMR_CC13S_Mask & CCMR_IC13F_Mask;\r
+ tmpccmr1 |= TIM_ICSelection | (u16)((u16)TIM_ICFilter << 4);\r
+\r
+ /* Select the Polarity and set the CCE Bit */\r
+ tmpccer &= CCER_CC1P_Mask & CCRE_CC1E_Mask;\r
+ tmpccer |= TIM_ICPolarity | CCRE_CC1E_Set;\r
+\r
+ TIMx->CCMR1 = 0x0000;\r
+ TIMx->CCMR1 = (u16)tmpccmr1;\r
+ TIMx->CCER = (u16)tmpccer;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TI2_Config\r
+* Description : Configure the TI2 as Input.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_ICPolarity : The Input Polarity.\r
+* This parameter can be one of the following values:\r
+* - TIM_ICPolarity_Rising\r
+* - TIM_ICPolarity_Falling\r
+* - TIM_ICSelection: specifies the input to be used.\r
+* This parameter can be one of the following values:\r
+* - TIM_ICSelection_DirectTI: TIM Input 2 is selected to\r
+* be connected to IC2.\r
+* - TIM_ICSelection_IndirectTI: TIM Input 2 is selected to\r
+* be connected to IC1.\r
+* - TIM_ICSelection_TRGI: TIM Input 2 is selected to be\r
+* connected to TRGI.\r
+* - TIM_ICFilter: Specifies the Input Capture Filter.\r
+* This parameter must be a value between 0x00 and 0x0F.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+static void TI2_Config(TIM_TypeDef* TIMx, u16 TIM_ICPolarity, u16 TIM_ICSelection,\r
+ u8 TIM_ICFilter)\r
+{\r
+ u32 tmpccmr1 = 0, tmpccer = 0, tmp = 0;\r
+\r
+ tmpccmr1 = TIMx->CCMR1;\r
+ tmpccer = TIMx->CCER;\r
+ tmp = (u16)((u16)TIM_ICPolarity << 4);\r
+\r
+ /* Disable the Channel 2: Reset the CCE Bit */\r
+ TIMx->CCER &= CCRE_CC2E_Reset;\r
+\r
+ /* Select the Input and set the filter */\r
+ tmpccmr1 &= CCMR_CC24S_Mask & CCMR_IC24F_Mask;\r
+ tmpccmr1 |= (u16)((u16)TIM_ICFilter << 12);\r
+ tmpccmr1 |= (u16)((u16)TIM_ICSelection << 8);\r
+\r
+ /* Select the Polarity and set the CCE Bit */\r
+ tmpccer &= CCER_CC2P_Mask & CCRE_CC2E_Mask;\r
+ tmpccer |= tmp | CCRE_CC2E_Set;\r
+\r
+ TIMx->CCMR1 = (u16)tmpccmr1 ;\r
+ TIMx->CCER = (u16)tmpccer;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TI3_Config\r
+* Description : Configure the TI3 as Input.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_ICPolarity : The Input Polarity.\r
+* This parameter can be one of the following values:\r
+* - TIM_ICPolarity_Rising\r
+* - TIM_ICPolarity_Falling\r
+* - TIM_ICSelection: specifies the input to be used.\r
+* This parameter can be one of the following values:\r
+* - TIM_ICSelection_DirectTI: TIM Input 3 is selected to\r
+* be connected to IC3.\r
+* - TIM_ICSelection_IndirectTI: TIM Input 3 is selected to\r
+* be connected to IC4.\r
+* - TIM_ICSelection_TRGI: TIM Input 3 is selected to be\r
+* connected to TRGI.\r
+* - TIM_ICFilter: Specifies the Input Capture Filter.\r
+* This parameter must be a value between 0x00 and 0x0F.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+static void TI3_Config(TIM_TypeDef* TIMx, u16 TIM_ICPolarity, u16 TIM_ICSelection,\r
+ u8 TIM_ICFilter)\r
+{\r
+ u32 tmpccmr2 = 0, tmpccer = 0, tmp = 0;\r
+\r
+ tmpccmr2 = TIMx->CCMR2;\r
+ tmpccer = TIMx->CCER;\r
+ tmp = (u16)((u16)TIM_ICPolarity << 8);\r
+\r
+ /* Disable the Channel 3: Reset the CCE Bit */\r
+ TIMx->CCER &= CCRE_CC3E_Reset;\r
+\r
+ /* Select the Input and set the filter */\r
+ tmpccmr2 &= CCMR_CC13S_Mask & CCMR_IC13F_Mask;\r
+ tmpccmr2 |= TIM_ICSelection | (u16)((u16)TIM_ICFilter << 4);\r
+\r
+ /* Select the Polarity and set the CCE Bit */\r
+ tmpccer &= CCER_CC1P_Mask & CCRE_CC1E_Mask;\r
+ tmpccer |= tmp | CCRE_CC3E_Set;\r
+\r
+ TIMx->CCMR2 = (u16)tmpccmr2;\r
+ TIMx->CCER = (u16)tmpccer;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : TI4_Config\r
+* Description : Configure the TI1 as Input.\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_ICPolarity : The Input Polarity.\r
+* This parameter can be one of the following values:\r
+* - TIM_ICPolarity_Rising\r
+* - TIM_ICPolarity_Falling\r
+* - TIM_ICSelection: specifies the input to be used.\r
+* This parameter can be one of the following values:\r
+* - TIM_ICSelection_DirectTI: TIM Input 4 is selected to\r
+* be connected to IC4.\r
+* - TIM_ICSelection_IndirectTI: TIM Input 4 is selected to\r
+* be connected to IC3.\r
+* - TIM_ICSelection_TRGI: TIM Input 4 is selected to be\r
+* connected to TRGI.\r
+* - TIM_ICFilter: Specifies the Input Capture Filter.\r
+* This parameter must be a value between 0x00 and 0x0F.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+static void TI4_Config(TIM_TypeDef* TIMx, u16 TIM_ICPolarity, u16 TIM_ICSelection,\r
+ u8 TIM_ICFilter)\r
+{\r
+ u32 tmpccmr2 = 0, tmpccer = 0, tmp = 0;\r
+\r
+ tmpccmr2 = TIMx->CCMR2;\r
+ tmpccer = TIMx->CCER;\r
+ tmp = (u16)((u16)TIM_ICPolarity << 12);\r
+\r
+ /* Disable the Channel 4: Reset the CCE Bit */\r
+ TIMx->CCER &= CCRE_CC4E_Reset;\r
+\r
+ /* Select the Input and set the filter */\r
+ tmpccmr2 &= CCMR_CC24S_Mask & CCMR_IC24F_Mask;\r
+ tmpccmr2 |= (u16)((u16)TIM_ICSelection << 8) | (u16)((u16)TIM_ICFilter << 12);\r
+\r
+ /* Select the Polarity and set the CCE Bit */\r
+ tmpccer &= CCER_CC4P_Mask & CCRE_CC4E_Mask;\r
+ tmpccer |= tmp | CCRE_CC4E_Set;\r
+\r
+ TIMx->CCMR2 = (u16)tmpccmr2;\r
+ TIMx->CCER = (u16)tmpccer ;\r
+}\r
+\r
+/*******************************************************************************\r
+* Function Name : ETR_Config\r
+* Description : Configure the External Trigger\r
+* Input : - TIMx: where x can be 2, 3 or 4 to select the TIM peripheral.\r
+* - TIM_ExtTRGPrescaler: The external Trigger Prescaler.\r
+* This parameter can be one of the following values:\r
+* - TIM_ExtTRGPSC_OFF\r
+* - TIM_ExtTRGPSC_DIV2\r
+* - TIM_ExtTRGPSC_DIV4\r
+* - TIM_ExtTRGPSC_DIV8\r
+* - TIM_ExtTRGPolarity: The external Trigger Polarity.\r
+* This parameter can be one of the following values:\r
+* - TIM_ExtTRGPolarity_Inverted\r
+* - TIM_ExtTRGPolarity_NonInverted\r
+* - ExtTRGFilter: External Trigger Filter.\r
+* This parameter must be a value between 0x00 and 0x0F.\r
+* Output : None\r
+* Return : None\r
+*******************************************************************************/\r
+static void ETR_Config(TIM_TypeDef* TIMx, u16 TIM_ExtTRGPrescaler, u16 TIM_ExtTRGPolarity,\r
+ u8 ExtTRGFilter)\r
+{\r
+ u32 tmpsmcr = 0;\r
+\r
+ tmpsmcr = TIMx->SMCR;\r
+\r
+ /* Set the Prescaler, the Filter value and the Polarity */\r
+ tmpsmcr &= SMCR_ETR_Mask;\r
+ tmpsmcr |= TIM_ExtTRGPrescaler | TIM_ExtTRGPolarity | (u16)((u16)ExtTRGFilter << 8);\r
+\r
+ TIMx->SMCR = (u16)tmpsmcr;\r
+}\r
+/******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/\r
--- /dev/null
+/*\r
+ FreeRTOS.org V4.6.1 - Copyright (C) 2003-2007 Richard Barry.\r
+\r
+ This file is part of the FreeRTOS.org distribution.\r
+\r
+ FreeRTOS.org is free software; you can redistribute it and/or modify\r
+ it under the terms of the GNU General Public License as published by\r
+ the Free Software Foundation; either version 2 of the License, or\r
+ (at your option) any later version.\r
+\r
+ FreeRTOS.org is distributed in the hope that it will be useful,\r
+ but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ GNU General Public License for more details.\r
+\r
+ You should have received a copy of the GNU General Public License\r
+ along with FreeRTOS.org; if not, write to the Free Software\r
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
+\r
+ A special exception to the GPL can be applied should you wish to distribute\r
+ a combined work that includes FreeRTOS.org, without being obliged to provide\r
+ the source code for any proprietary components. See the licensing section\r
+ of http://www.FreeRTOS.org for full details of how and when the exception\r
+ can be applied.\r
+\r
+ ***************************************************************************\r
+ See http://www.FreeRTOS.org for documentation, latest information, license\r
+ and contact details. Please ensure to read the configuration and relevant\r
+ port sections of the online documentation.\r
+\r
+ Also see http://www.SafeRTOS.com a version that has been certified for use\r
+ in safety critical systems, plus commercial licensing, development and\r
+ support options.\r
+ ***************************************************************************\r
+*/\r
+\r
+/* FreeRTOS.org Logo as a 16bit bitmap. */\r
+\r
+#ifndef BITMAP_H\r
+#define BITMAP_H\r
+\r
+const unsigned short pucImage[] =\r
+{\r
+0xffff,\r
+0xffff,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xffff,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xc318,\r
+0x0842,\r
+0x8210,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0c63,\r
+0xffff,\r
+0x0842,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0x0000,\r
+0x8631,\r
+0x38c6,\r
+0x38c6,\r
+0x38c6,\r
+0x38c6,\r
+0xfbde,\r
+0xffff,\r
+0xbad6,\r
+0x38c6,\r
+0xcb5a,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x3ce7,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0x0000,\r
+0x0842,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0x4529,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0000,\r
+0x8210,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x0842,\r
+0x718c,\r
+0xffff,\r
+0x8e73,\r
+0xb6b5,\r
+0xffff,\r
+0x0c63,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0c63,\r
+0xffff,\r
+0x0842,\r
+0x0c63,\r
+0xffff,\r
+0x0c63,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0c63,\r
+0xffff,\r
+0x0c63,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x031a,\r
+0xe73c,\r
+0x2b5f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x294e,\r
+0xa73c,\r
+0xc108,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x4000,\r
+0x452b,\r
+0x6845,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x2845,\r
+0x031a,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x8422,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x8631,\r
+0x38c6,\r
+0x38c6,\r
+0x38c6,\r
+0xf7bd,\r
+0x38c6,\r
+0x38c6,\r
+0x8631,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x8108,\r
+0xa94d,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0422,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xc319,\r
+0x2c67,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xe94d,\r
+0xc210,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xc210,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x4211,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0842,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0x0842,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x6a56,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0109,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x431a,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xeb5e,\r
+0x0211,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe94d,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x2634,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0421,\r
+0x3084,\r
+0x3084,\r
+0x3084,\r
+0xb294,\r
+0xffff,\r
+0xf7bd,\r
+0x8210,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x8422,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x6c67,\r
+0x294e,\r
+0x2a56,\r
+0x2a56,\r
+0x2a56,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xc108,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x2c67,\r
+0x2a56,\r
+0x2a56,\r
+0xac67,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x6a56,\r
+0x4108,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x052b,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xb294,\r
+0xffff,\r
+0x494a,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xa94d,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xe94d,\r
+0x4000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xc422,\r
+0x2845,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xa94d,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xec67,\r
+0x452b,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x8108,\r
+0x2845,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x852b,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x4108,\r
+0xac67,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0211,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0c63,\r
+0x38c6,\r
+0x494a,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x2c67,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x852b,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x8108,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x673c,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xaa56,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xeb5e,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x694d,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xa73c,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0x8210,\r
+0xf39c,\r
+0xbef7,\r
+0xffff,\r
+0x75ad,\r
+0x0421,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xaa56,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x2a56,\r
+0x4000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0423,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xc108,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x8422,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0211,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x431a,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xc108,\r
+0x0000,\r
+0x0000,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0x38c6,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0x79ce,\r
+0x4108,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xea55,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x2c67,\r
+0x452b,\r
+0x0211,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe844,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x6a56,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x4000,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x8422,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x4108,\r
+0x6b5f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x452b,\r
+0x0422,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x8631,\r
+0xffff,\r
+0x38c6,\r
+0xf7bd,\r
+0xf7bd,\r
+0xb294,\r
+0xffff,\r
+0x494a,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x452b,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xab5e,\r
+0x852b,\r
+0xc108,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x294e,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xe844,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xeb5e,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x8633,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x8633,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0c63,\r
+0xffff,\r
+0x0842,\r
+0x34a5,\r
+0xf39c,\r
+0x4108,\r
+0xffff,\r
+0x0c63,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x294e,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xec67,\r
+0x8633,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x2a56,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x2634,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x2a56,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x2634,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xa844,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x8a52,\r
+0xffff,\r
+0x8631,\r
+0x34a5,\r
+0xf7bd,\r
+0xf39c,\r
+0xffff,\r
+0x494a,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x4000,\r
+0xa73c,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xec67,\r
+0x273c,\r
+0x0000,\r
+0x0000,\r
+0xe94d,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x673c,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xaa56,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x273c,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0109,\r
+0x6a56,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x4529,\r
+0xffff,\r
+0x0c63,\r
+0x34a5,\r
+0xffff,\r
+0xffff,\r
+0xb6b5,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xc108,\r
+0x8633,\r
+0x2a56,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xec67,\r
+0xc210,\r
+0x0000,\r
+0xa94d,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xa94d,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x6c67,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x052b,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x4000,\r
+0xeb5e,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xa94d,\r
+0x273c,\r
+0x8422,\r
+0x0422,\r
+0x2845,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0x0842,\r
+0x4529,\r
+0xcf7b,\r
+0xb6b5,\r
+0x0c63,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xc108,\r
+0x052b,\r
+0xeb5e,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0423,\r
+0x0000,\r
+0xc633,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x2b5f,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0211,\r
+0xec67,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x031a,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x052b,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xa94d,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x273c,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xc318,\r
+0xc318,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x4108,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x273c,\r
+0x0000,\r
+0x0422,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0422,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xa73c,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x4000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe73c,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x4633,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x2634,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0x0421,\r
+0xbad6,\r
+0xffff,\r
+0xffff,\r
+0x3ce7,\r
+0x0842,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x2b5f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xc633,\r
+0x0000,\r
+0x4000,\r
+0x6c67,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xeb5e,\r
+0x8108,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x8211,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x6845,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe94d,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xe94d,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x273c,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0000,\r
+0xfbde,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0x3ce7,\r
+0x8210,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x2634,\r
+0xa94d,\r
+0x452b,\r
+0x0422,\r
+0x031a,\r
+0x0422,\r
+0xc422,\r
+0xea55,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xc319,\r
+0x0000,\r
+0x0000,\r
+0x452b,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x2b5f,\r
+0x4633,\r
+0x031a,\r
+0x0422,\r
+0x673c,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xec67,\r
+0x8319,\r
+0x0000,\r
+0x0422,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x8108,\r
+0x0000,\r
+0xa73c,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x6a56,\r
+0x273c,\r
+0x031a,\r
+0x0422,\r
+0x2845,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0842,\r
+0xffff,\r
+0x34a5,\r
+0xb6b5,\r
+0x34a5,\r
+0x8e73,\r
+0xffff,\r
+0xcb5a,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x2845,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x6a56,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x6845,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xc633,\r
+0x0000,\r
+0x0000,\r
+0x2634,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0211,\r
+0x0000,\r
+0x8319,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x0c63,\r
+0xffff,\r
+0x8631,\r
+0x34a5,\r
+0xf39c,\r
+0x4108,\r
+0xffff,\r
+0x0c63,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe94d,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xeb5e,\r
+0x0109,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x4108,\r
+0xe94d,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xc633,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x273c,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0211,\r
+0x0000,\r
+0x0000,\r
+0x273c,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0x8a52,\r
+0xffff,\r
+0xc739,\r
+0x34a5,\r
+0xbad6,\r
+0x38c6,\r
+0xffff,\r
+0x8631,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x6a56,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x673c,\r
+0x8000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xc422,\r
+0x2b5f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xe94d,\r
+0xc319,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x2634,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0211,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x8422,\r
+0x6a56,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0xed6f,\r
+0x0000,\r
+0xc318,\r
+0xffff,\r
+0x8e73,\r
+0x34a5,\r
+0xffff,\r
+0xffff,\r
+0x718c,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0422,\r
+0xc633,\r
+0x273c,\r
+0xa73c,\r
+0xe844,\r
+0x2634,\r
+0xc633,\r
+0x031a,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x8319,\r
+0x052b,\r
+0x273c,\r
+0x2845,\r
+0xa844,\r
+0x2634,\r
+0x8422,\r
+0x0211,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0211,\r
+0x031a,\r
+0x0422,\r
+0x031a,\r
+0x0422,\r
+0x031a,\r
+0x0422,\r
+0x031a,\r
+0x0422,\r
+0x031a,\r
+0x0422,\r
+0x031a,\r
+0x0422,\r
+0x031a,\r
+0x0422,\r
+0x4000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x8108,\r
+0x0422,\r
+0x031a,\r
+0x0422,\r
+0x031a,\r
+0x0422,\r
+0x031a,\r
+0x0422,\r
+0x031a,\r
+0x0422,\r
+0x031a,\r
+0x4211,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x8a52,\r
+0x3084,\r
+0xc739,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0x0000,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xffff,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xffff,\r
+0xffff,\r
+0xffff,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xe006,\r
+0xffff,\r
+0xffff\r
+};\r
+\r
+#define bmpBITMAP_WIDTH 92\r
+#define bmpBITMAP_HEIGHT 36\r
+\r
+#endif\r
--- /dev/null
+/*\r
+ FreeRTOS.org V4.6.1 - Copyright (C) 2003-2007 Richard Barry.\r
+\r
+ This file is part of the FreeRTOS.org distribution.\r
+\r
+ FreeRTOS.org is free software; you can redistribute it and/or modify\r
+ it under the terms of the GNU General Public License as published by\r
+ the Free Software Foundation; either version 2 of the License, or\r
+ (at your option) any later version.\r
+\r
+ FreeRTOS.org is distributed in the hope that it will be useful,\r
+ but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ GNU General Public License for more details.\r
+\r
+ You should have received a copy of the GNU General Public License\r
+ along with FreeRTOS.org; if not, write to the Free Software\r
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
+\r
+ A special exception to the GPL can be applied should you wish to distribute\r
+ a combined work that includes FreeRTOS.org, without being obliged to provide\r
+ the source code for any proprietary components. See the licensing section\r
+ of http://www.FreeRTOS.org for full details of how and when the exception\r
+ can be applied.\r
+\r
+ ***************************************************************************\r
+ See http://www.FreeRTOS.org for documentation, latest information, license\r
+ and contact details. Please ensure to read the configuration and relevant\r
+ port sections of the online documentation.\r
+\r
+ Also see http://www.SafeRTOS.com a version that has been certified for use\r
+ in safety critical systems, plus commercial licensing, development and\r
+ support options.\r
+ ***************************************************************************\r
+*/\r
+\r
+/*\r
+ * Creates all the demo application tasks, then starts the scheduler. The WEB\r
+ * documentation provides more details of the standard demo application tasks.\r
+ * In addition to the standard demo tasks, the following tasks and tests are\r
+ * defined and/or created within this file:\r
+ *\r
+ * "Fast Interrupt Test" - A high frequency periodic interrupt is generated\r
+ * using a free running timer to demonstrate the use of the\r
+ * configKERNEL_INTERRUPT_PRIORITY configuration constant. The interrupt\r
+ * service routine measures the number of processor clocks that occur between\r
+ * each interrupt - and in so doing measures the jitter in the interrupt timing.\r
+ * The maximum measured jitter time is latched in the ulMaxJitter variable, and\r
+ * displayed on the LCD by the 'Check' task as described below. The\r
+ * fast interrupt is configured and handled in the timertest.c source file.\r
+ *\r
+ * "LCD" task - the LCD task is a 'gatekeeper' task. It is the only task that\r
+ * is permitted to access the display directly. Other tasks wishing to write a\r
+ * message to the LCD send the message on a queue to the LCD task instead of\r
+ * accessing the LCD themselves. The LCD task just blocks on the queue waiting\r
+ * for messages - waking and displaying the messages as they arrive. Messages\r
+ * can either be a text string to display, or an instruction to update MEMS\r
+ * input. The MEMS input is used to display a ball that can be moved around\r
+ * LCD by tilting the STM32 Primer. 45% is taken as the neutral position.\r
+ *\r
+ * "Check" task - This only executes every five seconds but has the highest\r
+ * priority so is guaranteed to get processor time. Its main function is to\r
+ * check that all the standard demo tasks are still operational. Should any\r
+ * unexpected behaviour within a demo task be discovered the 'check' task will\r
+ * write an error to the LCD (via the LCD task). If all the demo tasks are\r
+ * executing with their expected behaviour then the check task writes PASS\r
+ * along with the max jitter time to the LCD (again via the LCD task), as\r
+ * described above.\r
+ *\r
+ * Tick Hook - A tick hook is provided just for demonstration purposes. In \r
+ * this case it is used to periodically send an instruction to updated the\r
+ * MEMS input to the LCD task.\r
+ *\r
+ */\r
+\r
+/* CircleOS includes. Some of the CircleOS peripheral functionality is \r
+utilised, although CircleOS itself is not used. */\r
+#include "circle.h"\r
+\r
+/* Standard includes. */\r
+#include <string.h>\r
+\r
+/* Scheduler includes. */\r
+#include "FreeRTOS.h"\r
+#include "Task.h"\r
+#include "Queue.h"\r
+\r
+/* Demo app includes. */\r
+#include "BlockQ.h"\r
+#include "blocktim.h"\r
+#include "GenQTest.h"\r
+#include "partest.h"\r
+#include "QPeek.h"\r
+\r
+/* The bitmap used to display the FreeRTOS.org logo is stored in 16bit format\r
+and therefore takes up a large proportion of the Flash space. Setting this\r
+parameter to 0 excludes the bitmap from the build, freeing up Flash space for\r
+extra code. */\r
+#define mainINCLUDE_BITMAP 1\r
+\r
+#if mainINCLUDE_BITMAP == 1\r
+ #include "bitmap.h"\r
+#endif\r
+\r
+/* Task priorities. */\r
+#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 )\r
+#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )\r
+#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 )\r
+#define mainGEN_Q_PRIORITY ( tskIDLE_PRIORITY + 0 )\r
+#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )\r
+\r
+/* Splash screen related constants. */\r
+#define mainBITMAP_Y ( 38 )\r
+#define mainBITMAP_X ( 18 )\r
+#define mainURL_Y ( 8 )\r
+#define mainURL_X ( 78 )\r
+#define mainSPLASH_SCREEN_DELAY ( 2000 / portTICK_RATE_MS )\r
+\r
+/* Text drawing related constants. */\r
+#define mainLCD_CHAR_HEIGHT ( 13 )\r
+#define mainLCD_MAX_Y ( 110 )\r
+\r
+/* The maximum number of message that can be waiting for display at any one\r
+time. */\r
+#define mainLCD_QUEUE_SIZE ( 3 )\r
+\r
+/* The check task uses the sprintf function so requires a little more stack. */\r
+#define mainCHECK_TASK_STACK_SIZE ( configMINIMAL_STACK_SIZE + 50 )\r
+\r
+/* The LCD task calls some of the CircleOS functions (for MEMS and LCD access),\r
+these can require a larger stack. */\r
+#define configLCD_TASK_STACK_SIZE ( configMINIMAL_STACK_SIZE + 50 )\r
+\r
+/* Dimensions the buffer into which the jitter time is written. */\r
+#define mainMAX_MSG_LEN 25\r
+\r
+/* The time between cycles of the 'check' task. */\r
+#define mainCHECK_DELAY ( ( portTickType ) 5000 / portTICK_RATE_MS )\r
+\r
+/* The period at which the MEMS input should be updated. */\r
+#define mainMEMS_DELAY ( ( portTickType ) 100 / portTICK_RATE_MS )\r
+\r
+/* The rate at which the flash task toggles the LED. */\r
+#define mainFLASH_DELAY ( ( portTickType ) 1000 / portTICK_RATE_MS )\r
+\r
+/* The number of nano seconds between each processor clock. */\r
+#define mainNS_PER_CLOCK ( ( unsigned portLONG ) ( ( 1.0 / ( double ) configCPU_CLOCK_HZ ) * 1000000000.0 ) )\r
+\r
+/* The two types of message that can be sent to the LCD task. */\r
+#define mainUPDATE_BALL_MESSAGE ( 0 )\r
+#define mainWRITE_STRING_MESSAGE ( 1 )\r
+\r
+/* Type of the message sent to the LCD task. */\r
+typedef struct\r
+{\r
+ portBASE_TYPE xMessageType;\r
+ signed char *pcMessage;\r
+} xLCDMessage;\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/*\r
+ * Configure the clocks, GPIO and other peripherals as required by the demo.\r
+ */\r
+static void prvSetupHardware( void );\r
+\r
+/*\r
+ * The LCD is written two by more than one task so is controlled by a\r
+ * 'gatekeeper' task. This is the only task that is actually permitted to\r
+ * access the LCD directly. Other tasks wanting to display a message send\r
+ * the message to the gatekeeper.\r
+ */\r
+static void prvLCDTask( void *pvParameters );\r
+\r
+/*\r
+ * Checks the status of all the demo tasks then prints a message to the\r
+ * display. The message will be either PASS - and include in brackets the\r
+ * maximum measured jitter time (as described at the to of the file), or a\r
+ * message that describes which of the standard demo tasks an error has been\r
+ * discovered in.\r
+ *\r
+ * Messages are not written directly to the terminal, but passed to prvLCDTask\r
+ * via a queue.\r
+ *\r
+ * The check task also receives instructions to update the MEMS input, which\r
+ * in turn can also lead to the LCD being updated.\r
+ */\r
+static void prvCheckTask( void *pvParameters );\r
+\r
+/*\r
+ * Configures the timers and interrupts for the fast interrupt test as\r
+ * described at the top of this file.\r
+ */\r
+extern void vSetupTimerTest( void );\r
+\r
+/*\r
+ * A cut down version of sprintf() used to percent the HUGE GCC library\r
+ * equivalent from being included in the binary image. \r
+ */\r
+extern int sprintf(char *out, const char *format, ...);\r
+\r
+/*\r
+ * Simple toggle the LED periodically for timing verification.\r
+ */\r
+static void prvFlashTask( void *pvParameters );\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/* The queue used to send messages to the LCD task. */\r
+xQueueHandle xLCDQueue;\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+int main( void )\r
+{\r
+ #ifdef DEBUG\r
+ debug();\r
+ #endif\r
+\r
+ prvSetupHardware();\r
+\r
+ /* Create the queue used by the LCD task. Messages for display on the LCD\r
+ are received via this queue. */\r
+ xLCDQueue = xQueueCreate( mainLCD_QUEUE_SIZE, sizeof( xLCDMessage ) );\r
+ \r
+ /* Start the standard demo tasks. */\r
+ vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );\r
+ vCreateBlockTimeTasks();\r
+ vStartGenericQueueTasks( mainGEN_Q_PRIORITY );\r
+ vStartQueuePeekTasks();\r
+ vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );\r
+\r
+ /* Start the tasks defined within this file/specific to this demo. */\r
+ xTaskCreate( prvCheckTask, ( signed portCHAR * ) "Check", mainCHECK_TASK_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); \r
+ xTaskCreate( prvLCDTask, ( signed portCHAR * ) "LCD", configLCD_TASK_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );\r
+ xTaskCreate( prvFlashTask, ( signed portCHAR * ) "Flash", configMINIMAL_STACK_SIZE, NULL, mainFLASH_TASK_PRIORITY, NULL );\r
+\r
+ /* Configure the timers used by the fast interrupt timer test. */\r
+ vSetupTimerTest();\r
+ \r
+ /* Start the scheduler. */\r
+ vTaskStartScheduler();\r
+ \r
+ /* Will only get here if there was not enough heap space to create the\r
+ idle task. */\r
+ return 0;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void prvLCDTask( void *pvParameters )\r
+{\r
+xLCDMessage xMessage;\r
+portCHAR cY = mainLCD_CHAR_HEIGHT;\r
+const portCHAR * const pcString = "www.FreeRTOS.org";\r
+const portCHAR * const pcBlankLine = " ";\r
+\r
+ DRAW_Init();\r
+\r
+ #if mainINCLUDE_BITMAP == 1\r
+ DRAW_SetImage( pucImage, mainBITMAP_Y, mainBITMAP_X, bmpBITMAP_HEIGHT, bmpBITMAP_WIDTH );\r
+ #endif\r
+\r
+ LCD_SetScreenOrientation( V9 );\r
+ DRAW_DisplayString( mainURL_Y, mainURL_X, pcString, strlen( pcString ) );\r
+ vTaskDelay( mainSPLASH_SCREEN_DELAY );\r
+ LCD_FillRect( 0, 0, CHIP_SCREEN_WIDTH, CHIP_SCREEN_HEIGHT, RGB_WHITE );\r
+\r
+ for( ;; )\r
+ {\r
+ /* Wait for a message to arrive that requires displaying. */\r
+ while( xQueueReceive( xLCDQueue, &xMessage, portMAX_DELAY ) != pdPASS );\r
+\r
+ /* Check the message type. */\r
+ if( xMessage.xMessageType == mainUPDATE_BALL_MESSAGE )\r
+ {\r
+ /* Read the MEMS and update the ball display on the LCD if required. */\r
+ MEMS_Handler();\r
+ POINTER_Handler();\r
+ }\r
+ else\r
+ {\r
+ /* A text string was sent. First blank off the old text string, then\r
+ draw the new text on the next line down. */\r
+ DRAW_DisplayString( 0, cY, pcBlankLine, strlen( pcBlankLine ) );\r
+\r
+ cY -= mainLCD_CHAR_HEIGHT;\r
+ if( cY <= ( mainLCD_CHAR_HEIGHT - 1 ) )\r
+ { \r
+ /* Wrap the line onto which we are going to write the text. */\r
+ cY = mainLCD_MAX_Y;\r
+ }\r
+ \r
+ /* Display the message. */\r
+ DRAW_DisplayString( 0, cY, xMessage.pcMessage, strlen( xMessage.pcMessage ) );\r
+ }\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvCheckTask( void *pvParameters )\r
+{\r
+portTickType xLastExecutionTime;\r
+xLCDMessage xMessage;\r
+static signed portCHAR cPassMessage[ mainMAX_MSG_LEN ];\r
+extern unsigned portSHORT usMaxJitter;\r
+\r
+ /* Initialise the xLastExecutionTime variable on task entry. */\r
+ xLastExecutionTime = xTaskGetTickCount();\r
+\r
+ /* Setup the message we are going to send to the LCD task. */\r
+ xMessage.xMessageType = mainWRITE_STRING_MESSAGE;\r
+ xMessage.pcMessage = cPassMessage;\r
+ \r
+ for( ;; )\r
+ {\r
+ /* Perform this check every mainCHECK_DELAY milliseconds. */\r
+ vTaskDelayUntil( &xLastExecutionTime, mainCHECK_DELAY );\r
+\r
+ /* Has an error been found in any task? If so then point the text\r
+ we are going to send to the LCD task to an error message instead of\r
+ the PASS message. */\r
+ if( xAreGenericQueueTasksStillRunning() != pdTRUE )\r
+ {\r
+ xMessage.pcMessage = "ERROR IN GEN Q";\r
+ }\r
+ if( xAreBlockingQueuesStillRunning() != pdTRUE )\r
+ {\r
+ xMessage.pcMessage = "ERROR IN BLOCK Q";\r
+ }\r
+ else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE )\r
+ {\r
+ xMessage.pcMessage = "ERROR IN BLOCK TIME";\r
+ }\r
+ else if( xArePollingQueuesStillRunning() != pdTRUE )\r
+ {\r
+ xMessage.pcMessage = "ERROR IN POLL Q";\r
+ }\r
+ else if( xAreQueuePeekTasksStillRunning() != pdTRUE )\r
+ {\r
+ xMessage.pcMessage = "ERROR IN PEEK Q";\r
+ }\r
+ else\r
+ {\r
+ /* No errors were found in any task, so send a pass message\r
+ with the max measured jitter time also included (as per the\r
+ fast interrupt test described at the top of this file and on\r
+ the online documentation page for this demo application). */\r
+ sprintf( ( portCHAR * ) cPassMessage, "PASS [%uns]", ( ( unsigned portLONG ) usMaxJitter ) * mainNS_PER_CLOCK );\r
+ }\r
+\r
+ /* Send the message to the LCD gatekeeper for display. */\r
+ xQueueSend( xLCDQueue, &xMessage, portMAX_DELAY );\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vApplicationTickHook( void )\r
+{\r
+static unsigned portLONG ulCallCount;\r
+static const xLCDMessage xMemsMessage = { mainUPDATE_BALL_MESSAGE, NULL };\r
+\r
+ /* Periodically send a message to the LCD task telling it to update\r
+ the MEMS input, and then if necessary the LCD. */\r
+ ulCallCount++;\r
+ if( ulCallCount >= mainMEMS_DELAY )\r
+ {\r
+ ulCallCount = 0;\r
+ xQueueSendFromISR( xLCDQueue, &xMemsMessage, pdFALSE );\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvSetupHardware( void )\r
+{\r
+ /* Start with the clocks in their expected state. */\r
+ RCC_DeInit();\r
+\r
+ /* Enable HSE (high speed external clock). */\r
+ RCC_HSEConfig( RCC_HSE_ON );\r
+\r
+ /* Wait till HSE is ready. */\r
+ while( RCC_GetFlagStatus( RCC_FLAG_HSERDY ) == RESET )\r
+ {\r
+ }\r
+\r
+ /* 2 wait states required on the flash. */\r
+ *( ( unsigned portLONG * ) 0x40022000 ) = 0x02;\r
+\r
+ /* HCLK = SYSCLK */\r
+ RCC_HCLKConfig( RCC_SYSCLK_Div1 );\r
+\r
+ /* PCLK2 = HCLK */\r
+ RCC_PCLK2Config( RCC_HCLK_Div1 );\r
+\r
+ /* PCLK1 = HCLK/2 */\r
+ RCC_PCLK1Config( RCC_HCLK_Div2 );\r
+\r
+ /* PLLCLK = 12MHz * 6 = 72 MHz. */\r
+ RCC_PLLConfig( RCC_PLLSource_HSE_Div1, RCC_PLLMul_6 );\r
+\r
+ /* Enable PLL. */\r
+ RCC_PLLCmd( ENABLE );\r
+\r
+ /* Wait till PLL is ready. */\r
+ while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)\r
+ {\r
+ }\r
+\r
+ /* Select PLL as system clock source. */\r
+ RCC_SYSCLKConfig( RCC_SYSCLKSource_PLLCLK );\r
+\r
+ /* Wait till PLL is used as system clock source. */\r
+ while( RCC_GetSYSCLKSource() != 0x08 )\r
+ {\r
+ }\r
+\r
+ /* Enable GPIOA, GPIOB, GPIOC, GPIOD, GPIOE and AFIO clocks */\r
+ RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |RCC_APB2Periph_GPIOC\r
+ | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE );\r
+\r
+ /* SPI2 Periph clock enable */\r
+ RCC_APB1PeriphClockCmd( RCC_APB1Periph_SPI2, ENABLE );\r
+\r
+\r
+ /* Set the Vector Table base address at 0x08000000 */\r
+ NVIC_SetVectorTable( NVIC_VectTab_FLASH, 0x0 );\r
+\r
+ NVIC_PriorityGroupConfig( NVIC_PriorityGroup_4 );\r
+ \r
+ /* Configure HCLK clock as SysTick clock source. */\r
+ SysTick_CLKSourceConfig( SysTick_CLKSource_HCLK );\r
+ \r
+ /* Misc initialisation, including some of the CircleOS features. Note\r
+ that CircleOS itself is not used. */\r
+ vParTestInitialise();\r
+ MEMS_Init();\r
+ POINTER_Init();\r
+ POINTER_SetMode( POINTER_RESTORE_LESS );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvFlashTask( void *pvParameters )\r
+{\r
+portTickType xLastExecutionTime;\r
+\r
+ /* Initialise the xLastExecutionTime variable on task entry. */\r
+ xLastExecutionTime = xTaskGetTickCount();\r
+\r
+ for( ;; )\r
+ {\r
+ /* Simple toggle the LED periodically. This just provides some timing\r
+ verification. */\r
+ vTaskDelayUntil( &xLastExecutionTime, mainFLASH_DELAY );\r
+ vParTestToggleLED( 0 );\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void starting_delay( unsigned long ul )\r
+{\r
+ vTaskDelay( ( portTickType ) ul );\r
+}\r
+\r
+\r
+\r
--- /dev/null
+/*
+ Copyright 2001, 2002 Georges Menie (www.menie.org)
+ stdarg version contributed by Christian Ettinger
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+/*
+ putchar is the only external dependency for this file,
+ if you have a working putchar, leave it commented out.
+ If not, uncomment the define below and
+ replace outbyte(c) by your own function call.
+
+#define putchar(c) outbyte(c)
+*/
+
+#include <stdarg.h>
+
+static void printchar(char **str, int c)
+{
+ extern int putchar(int c);
+
+ if (str) {
+ **str = c;
+ ++(*str);
+ }
+ else (void)putchar(c);
+}
+
+#define PAD_RIGHT 1
+#define PAD_ZERO 2
+
+static int prints(char **out, const char *string, int width, int pad)
+{
+ register int pc = 0, padchar = ' ';
+
+ if (width > 0) {
+ register int len = 0;
+ register const char *ptr;
+ for (ptr = string; *ptr; ++ptr) ++len;
+ if (len >= width) width = 0;
+ else width -= len;
+ if (pad & PAD_ZERO) padchar = '0';
+ }
+ if (!(pad & PAD_RIGHT)) {
+ for ( ; width > 0; --width) {
+ printchar (out, padchar);
+ ++pc;
+ }
+ }
+ for ( ; *string ; ++string) {
+ printchar (out, *string);
+ ++pc;
+ }
+ for ( ; width > 0; --width) {
+ printchar (out, padchar);
+ ++pc;
+ }
+
+ return pc;
+}
+
+/* the following should be enough for 32 bit int */
+#define PRINT_BUF_LEN 12
+
+static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase)
+{
+ char print_buf[PRINT_BUF_LEN];
+ register char *s;
+ register int t, neg = 0, pc = 0;
+ register unsigned int u = i;
+
+ if (i == 0) {
+ print_buf[0] = '0';
+ print_buf[1] = '\0';
+ return prints (out, print_buf, width, pad);
+ }
+
+ if (sg && b == 10 && i < 0) {
+ neg = 1;
+ u = -i;
+ }
+
+ s = print_buf + PRINT_BUF_LEN-1;
+ *s = '\0';
+
+ while (u) {
+ t = u % b;
+ if( t >= 10 )
+ t += letbase - '0' - 10;
+ *--s = t + '0';
+ u /= b;
+ }
+
+ if (neg) {
+ if( width && (pad & PAD_ZERO) ) {
+ printchar (out, '-');
+ ++pc;
+ --width;
+ }
+ else {
+ *--s = '-';
+ }
+ }
+
+ return pc + prints (out, s, width, pad);
+}
+
+static int print( char **out, const char *format, va_list args )
+{
+ register int width, pad;
+ register int pc = 0;
+ char scr[2];\r
+\r
+ for (; *format != 0; ++format) {\r
+ if (*format == '%') {
+ ++format;
+ width = pad = 0;
+ if (*format == '\0') break;
+ if (*format == '%') goto out;
+ if (*format == '-') {
+ ++format;
+ pad = PAD_RIGHT;
+ }
+ while (*format == '0') {
+ ++format;
+ pad |= PAD_ZERO;
+ }
+ for ( ; *format >= '0' && *format <= '9'; ++format) {
+ width *= 10;
+ width += *format - '0';
+ }
+ if( *format == 's' ) {
+ register char *s = (char *)va_arg( args, int );
+ pc += prints (out, s?s:"(null)", width, pad);
+ continue;
+ }
+ if( *format == 'd' ) {
+ pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a');
+ continue;
+ }
+ if( *format == 'x' ) {
+ pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a');
+ continue;
+ }
+ if( *format == 'X' ) {
+ pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A');
+ continue;
+ }
+ if( *format == 'u' ) {
+ pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a');
+ continue;
+ }
+ if( *format == 'c' ) {
+ /* char are converted to int then pushed on the stack */
+ scr[0] = (char)va_arg( args, int );
+ scr[1] = '\0';
+ pc += prints (out, scr, width, pad);
+ continue;
+ }
+ }
+ else {
+ out:\r
+ printchar (out, *format);
+ ++pc;\r
+ }
+ }
+ if (out) **out = '\0';
+ va_end( args );
+ return pc;
+}
+
+int printf(const char *format, ...)
+{
+ va_list args;
+
+ va_start( args, format );
+ return print( 0, format, args );
+}
+
+int sprintf(char *out, const char *format, ...)
+{
+ va_list args;
+
+ va_start( args, format );
+ return print( &out, format, args );
+}
+\r
+\r
+int snprintf( char *buf, unsigned int count, const char *format, ... )\r
+{\r
+ va_list args;
+
+ ( void ) count;\r
+ \r
+ va_start( args, format );\r
+ return print( &buf, format, args );\r
+}\r
+\r
+
+#ifdef TEST_PRINTF
+int main(void)
+{
+ char *ptr = "Hello world!";
+ char *np = 0;
+ int i = 5;
+ unsigned int bs = sizeof(int)*8;
+ int mi;
+ char buf[80];
+
+ mi = (1 << (bs-1)) + 1;
+ printf("%s\n", ptr);
+ printf("printf test\n");
+ printf("%s is null pointer\n", np);
+ printf("%d = 5\n", i);
+ printf("%d = - max int\n", mi);
+ printf("char %c = 'a'\n", 'a');
+ printf("hex %x = ff\n", 0xff);
+ printf("hex %02x = 00\n", 0);
+ printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3);
+ printf("%d %s(s)%", 0, "message");
+ printf("\n");
+ printf("%d %s(s) with %%\n", 0, "message");
+ sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf);
+ sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf);
+ sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf);
+ sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf);
+ sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf);
+ sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf);
+ sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf);
+ sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf);
+
+ return 0;
+}
+
+/*
+ * if you compile this file with
+ * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c
+ * you will get a normal warning:
+ * printf.c:214: warning: spurious trailing `%' in format
+ * this line is testing an invalid % at the end of the format string.
+ *
+ * this should display (on 32bit int machine) :
+ *
+ * Hello world!
+ * printf test
+ * (null) is null pointer
+ * 5 = 5
+ * -2147483647 = - max int
+ * char a = 'a'
+ * hex ff = ff
+ * hex 00 = 00
+ * signed -3 = unsigned 4294967293 = hex fffffffd
+ * 0 message(s)
+ * 0 message(s) with %
+ * justif: "left "
+ * justif: " right"
+ * 3: 0003 zero padded
+ * 3: 3 left justif.
+ * 3: 3 right justif.
+ * -3: -003 zero padded
+ * -3: -3 left justif.
+ * -3: -3 right justif.
+ */
+
+#endif
+
+
--- /dev/null
+/*\r
+ FreeRTOS.org V4.6.1 - Copyright (C) 2003-2007 Richard Barry.\r
+\r
+ This file is part of the FreeRTOS.org distribution.\r
+\r
+ FreeRTOS.org is free software; you can redistribute it and/or modify\r
+ it under the terms of the GNU General Public License as published by\r
+ the Free Software Foundation; either version 2 of the License, or\r
+ (at your option) any later version.\r
+\r
+ FreeRTOS.org is distributed in the hope that it will be useful,\r
+ but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ GNU General Public License for more details.\r
+\r
+ You should have received a copy of the GNU General Public License\r
+ along with FreeRTOS.org; if not, write to the Free Software\r
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
+\r
+ A special exception to the GPL can be applied should you wish to distribute\r
+ a combined work that includes FreeRTOS.org, without being obliged to provide\r
+ the source code for any proprietary components. See the licensing section\r
+ of http://www.FreeRTOS.org for full details of how and when the exception\r
+ can be applied.\r
+\r
+ ***************************************************************************\r
+ See http://www.FreeRTOS.org for documentation, latest information, license\r
+ and contact details. Please ensure to read the configuration and relevant\r
+ port sections of the online documentation.\r
+\r
+ Also see http://www.SafeRTOS.com a version that has been certified for use\r
+ in safety critical systems, plus commercial licensing, development and\r
+ support options.\r
+ ***************************************************************************\r
+*/\r
+\r
+/* High speed timer test as described in main.c. */\r
+\r
+/* Scheduler includes. */\r
+#include "FreeRTOS.h"\r
+\r
+/* Library includes. */\r
+#include "stm32f10x_lib.h"\r
+#include "stm32f10x_tim.h"\r
+#include "stm32f10x_map.h"\r
+\r
+/* The set frequency of the interrupt. Deviations from this are measured as\r
+the jitter. */\r
+#define timerINTERRUPT_FREQUENCY ( ( unsigned portSHORT ) 20000 )\r
+\r
+/* The expected time between each of the timer interrupts - if the jitter was\r
+zero. */\r
+#define timerEXPECTED_DIFFERENCE_VALUE ( configCPU_CLOCK_HZ / timerINTERRUPT_FREQUENCY )\r
+\r
+/* The highest available interrupt priority. */\r
+#define timerHIGHEST_PRIORITY ( 0 )\r
+\r
+/* Misc defines. */\r
+#define timerMAX_32BIT_VALUE ( 0xffffffffUL )\r
+#define timerTIMER_1_COUNT_VALUE ( * ( ( unsigned long * ) ( TIMER1_BASE + 0x48 ) ) )\r
+\r
+/* The number of interrupts to pass before we start looking at the jitter. */\r
+#define timerSETTLE_TIME 5\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/*\r
+ * Configures the two timers used to perform the test.\r
+ */\r
+void vSetupTimerTest( void );\r
+\r
+/* Interrupt handler in which the jitter is measured. */\r
+void vTimer2IntHandler( void );\r
+\r
+/* Stores the value of the maximum recorded jitter between interrupts. */\r
+volatile unsigned portSHORT usMaxJitter = 0;\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+void vSetupTimerTest( void )\r
+{\r
+unsigned long ulFrequency;\r
+TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;\r
+NVIC_InitTypeDef NVIC_InitStructure;\r
+\r
+\r
+ /* Enable timer clocks */\r
+ RCC_APB1PeriphClockCmd( RCC_APB1Periph_TIM2, ENABLE );\r
+ RCC_APB1PeriphClockCmd( RCC_APB1Periph_TIM3, ENABLE );\r
+\r
+ /* Initialise data. */\r
+ TIM_DeInit( TIM2 );\r
+ TIM_DeInit( TIM3 );\r
+ TIM_TimeBaseStructInit( &TIM_TimeBaseStructure );\r
+\r
+ /* Time base configuration for timer 2 - which generates the interrupts. */\r
+ ulFrequency = configCPU_CLOCK_HZ / timerINTERRUPT_FREQUENCY; \r
+ TIM_TimeBaseStructure.TIM_Period = ( unsigned portSHORT ) ( ulFrequency & 0xffffUL );\r
+ TIM_TimeBaseStructure.TIM_Prescaler = 0x0;\r
+ TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;\r
+ TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;\r
+ TIM_TimeBaseInit( TIM2, &TIM_TimeBaseStructure );\r
+ TIM_ARRPreloadConfig( TIM2, ENABLE );\r
+\r
+ \r
+ /* Configuration for timer 3 which is used as a high resolution time\r
+ measurement. */\r
+ TIM_TimeBaseStructure.TIM_Period = ( unsigned portSHORT ) 0xffff;\r
+ TIM_TimeBaseInit( TIM3, &TIM_TimeBaseStructure );\r
+ TIM_ARRPreloadConfig( TIM3, ENABLE );\r
+ \r
+ /* Enable TIM2 IT. TIM3 does not generate an interrupt. */\r
+ NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel;\r
+ NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;\r
+ NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = timerHIGHEST_PRIORITY;\r
+ NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;\r
+ NVIC_Init( &NVIC_InitStructure ); \r
+ TIM_ITConfig( TIM2, TIM_IT_Update, ENABLE );\r
+\r
+ /* Finally, enable both timers. */\r
+ TIM_Cmd( TIM2, ENABLE );\r
+ TIM_Cmd( TIM3, ENABLE );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vTimer2IntHandler( void )\r
+{\r
+static unsigned portSHORT usLastCount = 0, usSettleCount = 0, usMaxDifference = 0;\r
+unsigned portSHORT usThisCount, usDifference;\r
+\r
+ /* Capture the free running timer 3 value as we enter the interrupt. */\r
+ usThisCount = TIM3->CNT;\r
+ \r
+ if( usSettleCount >= timerSETTLE_TIME )\r
+ {\r
+ /* What is the difference between the timer value in this interrupt\r
+ and the value from the last interrupt. */\r
+ usDifference = usThisCount - usLastCount;\r
+\r
+ /* Store the difference in the timer values if it is larger than the\r
+ currently stored largest value. The difference over and above the\r
+ expected difference will give the 'jitter' in the processing of these\r
+ interrupts. */\r
+ if( usDifference > usMaxDifference )\r
+ {\r
+ usMaxDifference = usDifference;\r
+ usMaxJitter = usMaxDifference - timerEXPECTED_DIFFERENCE_VALUE;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ /* Don't bother storing any values for the first couple of\r
+ interrupts. */\r
+ usSettleCount++;\r
+ }\r
+\r
+ /* Remember what the timer value was this time through, so we can calculate\r
+ the difference the next time through. */\r
+ usLastCount = usThisCount;\r
+\r
+ TIM_ClearITPendingBit( TIM2, TIM_IT_Update );\r
+}\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
#include "../../Source/portable/GCC/ARM_CM3/portmacro.h"\r
#endif\r
\r
+#ifdef GCC_ARMCM3\r
+ #include "../../Source/portable/GCC/ARM_CM3/portmacro.h"\r
+#endif\r
+\r
#ifdef IAR_ARM_CM3\r
#include "../../Source/portable/IAR/ARM_CM3/portmacro.h"\r
#endif\r