]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/RX700_RX71M_RSK_Renesas_e2studio/src/cg_src/r_cg_icu.c
Baseline new GCC and Renesas compiler projects for RX71M and RX113 before adding...
[freertos] / FreeRTOS / Demo / RX700_RX71M_RSK_Renesas_e2studio / src / cg_src / r_cg_icu.c
1 /***********************************************************************************************************************\r
2 * DISCLAIMER\r
3 * This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products.\r
4 * No other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all\r
5 * applicable laws, including copyright laws. \r
6 * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIESREGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED\r
7 * OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
8 * NON-INFRINGEMENT.  ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY\r
9 * LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE FOR ANY DIRECT,\r
10 * INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR\r
11 * ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\r
12 * Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability \r
13 * of this software. By using this software, you agree to the additional terms and conditions found by accessing the \r
14 * following link:\r
15 * http://www.renesas.com/disclaimer\r
16 *\r
17 * Copyright (C) 2015 Renesas Electronics Corporation. All rights reserved.\r
18 ***********************************************************************************************************************/\r
19 \r
20 /***********************************************************************************************************************\r
21 * File Name    : r_cg_icu.c\r
22 * Version      : Code Generator for RX71M V1.00.02.02 [28 May 2015]\r
23 * Device(s)    : R5F571MLCxFC\r
24 * Tool-Chain   : CCRX\r
25 * Description  : This file implements device driver for ICU module.\r
26 * Creation Date: 20/09/2015\r
27 ***********************************************************************************************************************/\r
28 \r
29 /***********************************************************************************************************************\r
30 Pragma directive\r
31 ***********************************************************************************************************************/\r
32 /* Start user code for pragma. Do not edit comment generated here */\r
33 /* End user code. Do not edit comment generated here */\r
34 \r
35 /***********************************************************************************************************************\r
36 Includes\r
37 ***********************************************************************************************************************/\r
38 #include "r_cg_macrodriver.h"\r
39 #include "r_cg_icu.h"\r
40 /* Start user code for include. Do not edit comment generated here */\r
41 /* End user code. Do not edit comment generated here */\r
42 #include "r_cg_userdefine.h"\r
43 \r
44 /***********************************************************************************************************************\r
45 Global variables and functions\r
46 ***********************************************************************************************************************/\r
47 /* Start user code for global. Do not edit comment generated here */\r
48 /* End user code. Do not edit comment generated here */\r
49 \r
50 /***********************************************************************************************************************\r
51 * Function Name: R_ICU_Create\r
52 * Description  : This function initializes ICU module.\r
53 * Arguments    : None\r
54 * Return Value : None\r
55 ***********************************************************************************************************************/\r
56 void R_ICU_Create(void)\r
57 {\r
58     /* Disable IRQ interrupts */\r
59     ICU.IER[0x08].BYTE = _00_ICU_IRQ0_DISABLE | _00_ICU_IRQ1_DISABLE | _00_ICU_IRQ2_DISABLE | _00_ICU_IRQ3_DISABLE |\r
60                          _00_ICU_IRQ4_DISABLE | _00_ICU_IRQ5_DISABLE | _00_ICU_IRQ6_DISABLE | _00_ICU_IRQ7_DISABLE;\r
61     ICU.IER[0x09].BYTE = _00_ICU_IRQ8_DISABLE | _00_ICU_IRQ9_DISABLE | _00_ICU_IRQ10_DISABLE | _00_ICU_IRQ11_DISABLE |\r
62                          _00_ICU_IRQ12_DISABLE | _00_ICU_IRQ13_DISABLE | _00_ICU_IRQ14_DISABLE | _00_ICU_IRQ15_DISABLE;\r
63 \r
64     /* Disable group interrupts */\r
65     IEN(ICU,GROUPBL0) = 0U;\r
66 \r
67     /* Set IRQ settings */\r
68     ICU.IRQCR[2].BYTE = _04_ICU_IRQ_EDGE_FALLING;\r
69     ICU.IRQCR[5].BYTE = _04_ICU_IRQ_EDGE_FALLING;\r
70 \r
71     /* Set IRQ2 priority level */\r
72     IPR(ICU,IRQ2) = _0F_ICU_PRIORITY_LEVEL15;\r
73 \r
74     /* Set IRQ5 priority level */\r
75     IPR(ICU,IRQ5) = _0F_ICU_PRIORITY_LEVEL15;\r
76 \r
77     /* Set Group BL0 priority level */\r
78     IPR(ICU,GROUPBL0) = _0F_ICU_PRIORITY_LEVEL15;\r
79 \r
80     /* Enable group BL0 interrupt */\r
81     IEN(ICU,GROUPBL0) = 1U;\r
82 \r
83     /* Set IRQ2 pin */\r
84     MPC.P12PFS.BYTE = 0x40U;\r
85     PORT1.PDR.BYTE &= 0xFBU;\r
86     PORT1.PMR.BYTE &= 0xFBU;\r
87 \r
88     /* Set IRQ5 pin */\r
89     MPC.P15PFS.BYTE = 0x40U;\r
90     PORT1.PDR.BYTE &= 0xDFU;\r
91     PORT1.PMR.BYTE &= 0xDFU;\r
92 }\r
93 /***********************************************************************************************************************\r
94 * Function Name: R_ICU_IRQ2_Start\r
95 * Description  : This function enables IRQ2 interrupt.\r
96 * Arguments    : None\r
97 * Return Value : None\r
98 ***********************************************************************************************************************/\r
99 void R_ICU_IRQ2_Start(void)\r
100 {\r
101     /* Enable IRQ2 interrupt */\r
102     IEN(ICU,IRQ2) = 1U;\r
103 }\r
104 /***********************************************************************************************************************\r
105 * Function Name: R_ICU_IRQ2_Stop\r
106 * Description  : This function disables IRQ2 interrupt.\r
107 * Arguments    : None\r
108 * Return Value : None\r
109 ***********************************************************************************************************************/\r
110 void R_ICU_IRQ2_Stop(void)\r
111 {\r
112     /* Disable IRQ2 interrupt */\r
113     IEN(ICU,IRQ2) = 0U;\r
114 }\r
115 /***********************************************************************************************************************\r
116 * Function Name: R_ICU_IRQ5_Start\r
117 * Description  : This function enables IRQ5 interrupt.\r
118 * Arguments    : None\r
119 * Return Value : None\r
120 ***********************************************************************************************************************/\r
121 void R_ICU_IRQ5_Start(void)\r
122 {\r
123     /* Enable IRQ5 interrupt */\r
124     IEN(ICU,IRQ5) = 1U;\r
125 }\r
126 /***********************************************************************************************************************\r
127 * Function Name: R_ICU_IRQ5_Stop\r
128 * Description  : This function disables IRQ5 interrupt.\r
129 * Arguments    : None\r
130 * Return Value : None\r
131 ***********************************************************************************************************************/\r
132 void R_ICU_IRQ5_Stop(void)\r
133 {\r
134     /* Disable IRQ5 interrupt */\r
135     IEN(ICU,IRQ5) = 0U;\r
136 }\r
137 \r
138 /* Start user code for adding. Do not edit comment generated here */\r
139 /*******************************************************************************\r
140 * Function Name: R_ICU_IRQIsFallingEdge\r
141 * Description  : This function returns 1 if the specified ICU_IRQ is set to\r
142 *                falling edge triggered, otherwise 0.\r
143 * Arguments    : uint8_t irq_no\r
144 * Return Value : 1 if falling edge triggered, 0 if not\r
145 *******************************************************************************/\r
146 uint8_t R_ICU_IRQIsFallingEdge (const uint8_t irq_no)\r
147 {\r
148     uint8_t falling_edge_trig = 0x0;\r
149     \r
150     if (ICU.IRQCR[irq_no].BYTE & _04_ICU_IRQ_EDGE_FALLING)\r
151     {\r
152         falling_edge_trig = 1;\r
153     }\r
154         \r
155     return falling_edge_trig;\r
156     \r
157 }\r
158 \r
159 /*******************************************************************************\r
160 * End of function R_ICU_IRQIsFallingEdge\r
161 *******************************************************************************/\r
162 \r
163 /*******************************************************************************\r
164 * Function Name: R_ICU_IRQSetFallingEdge\r
165 * Description  : This function sets/clears the falling edge trigger for the\r
166 *                specified ICU_IRQ.\r
167 * Arguments    : uint8_t irq_no\r
168 *                uint8_t set_f_edge, 1 if setting falling edge triggered, 0 if\r
169 *                clearing\r
170 * Return Value : None\r
171 *******************************************************************************/\r
172 void R_ICU_IRQSetFallingEdge (const uint8_t irq_no, const uint8_t set_f_edge)\r
173 {\r
174     if (1 == set_f_edge)\r
175     {\r
176         ICU.IRQCR[irq_no].BYTE |= _04_ICU_IRQ_EDGE_FALLING;\r
177     }\r
178     else\r
179     {\r
180         ICU.IRQCR[irq_no].BYTE &= (uint8_t) ~_04_ICU_IRQ_EDGE_FALLING;\r
181     }\r
182 }\r
183 \r
184 /******************************************************************************\r
185 * End of function R_ICU_IRQSetFallingEdge\r
186 *******************************************************************************/\r
187 \r
188 /*******************************************************************************\r
189 * Function Name: R_ICU_IRQSetRisingEdge\r
190 * Description  : This function sets/clear the rising edge trigger for the\r
191 *                specified ICU_IRQ.\r
192 * Arguments    : uint8_t irq_no\r
193 *                uint8_t set_r_edge, 1 if setting rising edge triggered, 0 if\r
194 *                clearing\r
195 * Return Value : None\r
196 *******************************************************************************/\r
197 void R_ICU_IRQSetRisingEdge (const uint8_t irq_no, const uint8_t set_r_edge)\r
198 {\r
199     if (1 == set_r_edge)\r
200     {\r
201         ICU.IRQCR[irq_no].BYTE |= _08_ICU_IRQ_EDGE_RISING;\r
202     }\r
203     else\r
204     {\r
205         ICU.IRQCR[irq_no].BYTE &= (uint8_t) ~_08_ICU_IRQ_EDGE_RISING;\r
206     }\r
207 }\r
208 \r
209 /******************************************************************************\r
210 * End of function R_ICU_IRQSetRisingEdge\r
211 *******************************************************************************/\r
212 \r
213 \r
214 /* End user code. Do not edit comment generated here */\r