]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_A5_SAMA5D3x_Xplained_IAR/FreeRTOS_tick_config.c
Update version numbers in preparation for a new release.
[freertos] / FreeRTOS / Demo / CORTEX_A5_SAMA5D3x_Xplained_IAR / FreeRTOS_tick_config.c
1 /*\r
2  * FreeRTOS Kernel V10.1.0\r
3  * Copyright (C) 2017 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\r
4  *\r
5  * Permission is hereby granted, free of charge, to any person obtaining a copy of\r
6  * this software and associated documentation files (the "Software"), to deal in\r
7  * the Software without restriction, including without limitation the rights to\r
8  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\r
9  * the Software, and to permit persons to whom the Software is furnished to do so,\r
10  * subject to the following conditions:\r
11  *\r
12  * The above copyright notice and this permission notice shall be included in all\r
13  * copies or substantial portions of the Software.\r
14  *\r
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\r
17  * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\r
18  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\r
19  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
20  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
21  *\r
22  * http://www.FreeRTOS.org\r
23  * http://aws.amazon.com/freertos\r
24  *\r
25  * 1 tab == 4 spaces!\r
26  */\r
27 \r
28 /* FreeRTOS includes. */\r
29 #include "FreeRTOS.h"\r
30 #include "task.h"\r
31 \r
32 /* Library includes. */\r
33 #include "board.h"\r
34 \r
35 /*\r
36  * The FreeRTOS tick handler.  This function must be installed as the handler\r
37  * for the timer used to generate the tick interrupt.  Note that the interrupt\r
38  * generated by the PIT is shared by other system peripherals, so if the PIT is\r
39  * used for Tick generation then FreeRTOS_Tick_Handler() can only be installed\r
40  * directly as the PIT handler if no other system interrupts need to be\r
41  * serviced.  If system interrupts other than the PIT need to be serviced then\r
42  * install System_Handler() as the PIT interrupt handler in place of\r
43  * FreeRTOS_Tick_Handler() and add additional interrupt processing into the\r
44  * implementation of System_Handler().\r
45  */\r
46 extern void FreeRTOS_Tick_Handler( void );\r
47 static void System_Handler( void );\r
48 \r
49 /*-----------------------------------------------------------*/\r
50 \r
51 static void System_Handler( void )\r
52 {\r
53         /* See the comments above the function prototype in this file. */\r
54         FreeRTOS_Tick_Handler();\r
55 }\r
56 /*-----------------------------------------------------------*/\r
57 \r
58 /*\r
59  * The application must provide a function that configures a peripheral to\r
60  * create the FreeRTOS tick interrupt, then define configSETUP_TICK_INTERRUPT()\r
61  * in FreeRTOSConfig.h to call the function.  This file contains a function\r
62  * that is suitable for use on the Atmel SAMA5.\r
63  */\r
64 void vConfigureTickInterrupt( void )\r
65 {\r
66         /* NOTE:  The PIT interrupt is cleared by the configCLEAR_TICK_INTERRUPT()\r
67         macro in FreeRTOSConfig.h. */\r
68 \r
69         /* Enable the PIT clock. */\r
70         PMC->PMC_PCER0 = 1 << ID_PIT;\r
71 \r
72         /* Initialize the PIT to the desired frequency - specified in uS. */\r
73         PIT_Init( 1000000UL / configTICK_RATE_HZ, BOARD_MCK / 1000000 );\r
74 \r
75         /* Configure interrupt on PIT.  Note this is on the system interrupt, which\r
76         is shared with other system peripherals, so System_Handler() must be\r
77         installed in place of FreeRTOS_Tick_Handler() if other system handlers are\r
78         required.  The tick must be given the lowest priority (0 in the SAMA5 AIC) */\r
79         IRQ_ConfigureIT( ID_PIT, AIC_SMR_SRCTYPE_EXT_POSITIVE_EDGE, FreeRTOS_Tick_Handler );\r
80         /* See commend directly above IRQ_ConfigureIT( ID_PIT, 0, System_Handler ); */\r
81         IRQ_EnableIT( ID_PIT );\r
82         PIT_EnableIT();\r
83 \r
84         /* Enable the pit. */\r
85         PIT_Enable();\r
86 \r
87         /* Prevent compiler warnings in the case where System_Handler() is not used\r
88         as the handler.  See the comments above the System_Handler() function\r
89         prototype at the top of this file. */\r
90         ( void ) System_Handler;\r
91 }\r
92 /*-----------------------------------------------------------*/\r
93 \r