mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-08-19 09:38:32 -04:00
Commit 3 RX100 low power demos.
This commit is contained in:
parent
2b41be4cb9
commit
2bd7d0c1f5
112 changed files with 37911 additions and 0 deletions
|
@ -0,0 +1,252 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : lcd.c
|
||||
* Device(s) : RX
|
||||
* H/W Platform : RSKRX111
|
||||
* Description : Provides variable and function declarations for lcd.c file
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 08.11.2012 0.01 Beta Release
|
||||
***********************************************************************************************************************/
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Includes <System Includes> , "Project Includes"
|
||||
***********************************************************************************************************************/
|
||||
/* Standard string manipulation & formatting functions */
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
/* Defines standard variable types used in this function */
|
||||
#include <stdint.h>
|
||||
/* Bring in board includes. */
|
||||
#include "platform.h"
|
||||
/* Following header file provides function prototypes for LCD controlling functions & macro defines */
|
||||
#include "lcd.h"
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Private global variables and functions
|
||||
***********************************************************************************************************************/
|
||||
static void lcd_delay(volatile int32_t nsecs);
|
||||
static void lcd_nibble_write(uint8_t data_or_ctrl, uint8_t value);
|
||||
static void lcd_write(uint8_t data_or_ctrl, uint8_t value);
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name : lcd_initialize
|
||||
* Description : Initializes the LCD display.
|
||||
* Arguments : none
|
||||
* Return Value : none
|
||||
***********************************************************************************************************************/
|
||||
void lcd_initialize(void)
|
||||
{
|
||||
/* Set LCD data pins as outputs. */
|
||||
PORT4.PDR.BYTE |= 0x0F;
|
||||
|
||||
/* Set LCD control pins as outputs. */
|
||||
RS_PIN_DDR = 1;
|
||||
E_PIN_DDR = 1;
|
||||
|
||||
/* Power Up Delay for the LCD Module */
|
||||
lcd_delay(50000000);
|
||||
|
||||
/* Display initialises in 8 bit mode - so send one write (seen as 8 bit) to set to 4 bit mode. */
|
||||
lcd_nibble_write(CTRL_WR, 0x03);
|
||||
lcd_delay(5000000);
|
||||
lcd_nibble_write(CTRL_WR, 0x03);
|
||||
lcd_delay(5000000);
|
||||
lcd_nibble_write(CTRL_WR, 0x03);
|
||||
lcd_delay(5000000);
|
||||
|
||||
/* Function Set */
|
||||
lcd_nibble_write(CTRL_WR, 0x02);
|
||||
lcd_delay(39000);
|
||||
lcd_nibble_write(CTRL_WR, 0x02);
|
||||
lcd_nibble_write(CTRL_WR, (LCD_DISPLAY_ON | LCD_TWO_LINE ));
|
||||
lcd_delay(39000);
|
||||
|
||||
/* Display ON/OFF control */
|
||||
lcd_write(CTRL_WR, LCD_CURSOR_OFF);
|
||||
lcd_delay(39000);
|
||||
|
||||
/* Display Clear */
|
||||
lcd_write(CTRL_WR, LCD_CLEAR);
|
||||
lcd_delay(2000000);
|
||||
|
||||
/* Entry Mode Set */
|
||||
lcd_write(CTRL_WR, 0x06);
|
||||
lcd_delay(39000);
|
||||
|
||||
/* Home the cursor */
|
||||
lcd_write(CTRL_WR, LCD_HOME_L1);
|
||||
lcd_delay(5000000);
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name : lcd_clear
|
||||
* Description : Clears the LCD
|
||||
* Arguments : none
|
||||
* Return Value : none
|
||||
***********************************************************************************************************************/
|
||||
void lcd_clear(void)
|
||||
{
|
||||
/* Display Clear */
|
||||
lcd_write(CTRL_WR, LCD_CLEAR);
|
||||
lcd_delay(2000000);
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name : lcd_display
|
||||
* Description : This function controls LCD writes to line 1 or 2 of the LCD.
|
||||
* You need to use the defines LCD_LINE1 and LCD_LINE2 in order to specify the starting position.
|
||||
* For example, to start at the 2nd position on line 1...
|
||||
* lcd_display(LCD_LINE1 + 1, "Hello")
|
||||
* Arguments : position -
|
||||
* Line number of display
|
||||
* string -
|
||||
* Pointer to null terminated string
|
||||
* Return Value : none
|
||||
***********************************************************************************************************************/
|
||||
void lcd_display(uint8_t position, uint8_t const * string)
|
||||
{
|
||||
/* Declare next position variable */
|
||||
static uint8_t next_pos = 0xFF;
|
||||
|
||||
/* Set line position if needed. We don't want to if we don't need to because LCD control operations take longer
|
||||
than LCD data operations. */
|
||||
if (next_pos != position)
|
||||
{
|
||||
if(position < LCD_LINE2)
|
||||
{
|
||||
/* Display on Line 1 */
|
||||
lcd_write(CTRL_WR, ((uint8_t)(LCD_HOME_L1 + position)));
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Display on Line 2 */
|
||||
lcd_write(CTRL_WR, ((uint8_t)((LCD_HOME_L2 + position) - LCD_LINE2)));
|
||||
}
|
||||
|
||||
lcd_delay(39000);
|
||||
|
||||
/* set position index to known value */
|
||||
next_pos = position;
|
||||
}
|
||||
|
||||
do
|
||||
{
|
||||
/* Write character to LCD. */
|
||||
lcd_write(DATA_WR,*string++);
|
||||
|
||||
lcd_delay(43000);
|
||||
|
||||
/* Increment position index */
|
||||
next_pos++;
|
||||
}
|
||||
while(*string);
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name : lcd_delay
|
||||
* Description : Implements LCD required delays.
|
||||
* Arguments : nsecs -
|
||||
* Number of nanoseconds to delay. RX111 has max clock of 32MHz which gives a cycle time of 31.3ns.
|
||||
* This means that nothing under 313ns should be input. 313ns would be 10 cycles which is still
|
||||
* being optimistic for getting in and out of this function.
|
||||
* Return Value : none
|
||||
***********************************************************************************************************************/
|
||||
static void lcd_delay(volatile int32_t nsecs)
|
||||
{
|
||||
while (0 < nsecs)
|
||||
{
|
||||
/* Subtract off 10 cycles per iteration. This number was obtained when using the Renesas toolchain at
|
||||
optimization level 2. The number to nanoseconds to subtract off below is calculated off of the ICLK speed. */
|
||||
nsecs -= (int32_t)((313.0)*(32000000.0/(float)ICLK_HZ));
|
||||
}
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name : lcd_nibble_write
|
||||
* Description : Writes data to display. Sends command to display.
|
||||
* Arguments : value -
|
||||
* The value to write
|
||||
* data_or_ctrl -
|
||||
* Whether to write data or control.
|
||||
* 1 = DATA
|
||||
* 0 = CONTROL
|
||||
* Return Value : none
|
||||
***********************************************************************************************************************/
|
||||
static void lcd_nibble_write(uint8_t data_or_ctrl, uint8_t value)
|
||||
{
|
||||
/* Set Register Select pin high for Data */
|
||||
if (data_or_ctrl == DATA_WR)
|
||||
{
|
||||
/* Data write. */
|
||||
RS_PIN = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Control write. */
|
||||
RS_PIN = 0;
|
||||
}
|
||||
|
||||
/* tsu1 delay */
|
||||
lcd_delay(60);
|
||||
|
||||
/* EN enable chip (HIGH) */
|
||||
E_PIN = 1;
|
||||
|
||||
/* Output the data */
|
||||
PORT4.PODR.BYTE = (value & 0x0F);
|
||||
|
||||
/* tw delay */
|
||||
lcd_delay(450);
|
||||
|
||||
/* Latch data by dropping E */
|
||||
E_PIN = 0;
|
||||
|
||||
/* th2 delay */
|
||||
lcd_delay(10);
|
||||
|
||||
/* tc delay */
|
||||
lcd_delay(480);
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name : lcd_write
|
||||
* Description : This function controls LCD writes to line 1 or 2 of the LCD. You need to use the defines LCD_LINE1 and
|
||||
* LCD_LINE2 in order to specify the starting position.
|
||||
* For example, to start at the 2nd position on line 1...
|
||||
* lcd_display(LCD_LINE1 + 1, "Hello")
|
||||
* Arguments : value -
|
||||
* The value to write
|
||||
* data_or_ctrl -
|
||||
* Whether to write data or control.
|
||||
* 1 = DATA
|
||||
* 0 = CONTROL
|
||||
* Return Value : none
|
||||
***********************************************************************************************************************/
|
||||
static void lcd_write(uint8_t data_or_ctrl, uint8_t value)
|
||||
{
|
||||
/* Write upper nibble first */
|
||||
lcd_nibble_write(data_or_ctrl, (uint8_t)((value & 0xF0) >> 4));
|
||||
|
||||
/* Write lower nibble second */
|
||||
lcd_nibble_write(data_or_ctrl, (uint8_t)(value & 0x0F));
|
||||
}
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : lcd.h
|
||||
* Device(s) : RX
|
||||
* H/W Platform : RSKRX111
|
||||
* Description : Provides variable and function declarations for lcd.c file
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 08.11.2012 0.01 Beta Release
|
||||
***********************************************************************************************************************/
|
||||
|
||||
/* Multiple inclusion prevention macro */
|
||||
#ifndef LCD_H
|
||||
#define LCD_H
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Includes <System Includes> , "Project Includes"
|
||||
***********************************************************************************************************************/
|
||||
/* Defines standard integer variable types used in this file */
|
||||
#include <stdint.h>
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Macro definitions
|
||||
***********************************************************************************************************************/
|
||||
/* RS register select pin */
|
||||
#define RS_PIN PORTC.PODR.BIT.B5
|
||||
#define RS_PIN_DDR PORTC.PDR.BIT.B5
|
||||
/* Display enable pin */
|
||||
#define E_PIN PORTB.PODR.BIT.B1
|
||||
#define E_PIN_DDR PORTB.PDR.BIT.B1
|
||||
/* Data write/read definition */
|
||||
#define DATA_WR 1
|
||||
/* Control write/read definition */
|
||||
#define CTRL_WR 0
|
||||
/* Maximum characters per line of LCD display. */
|
||||
#define NUMB_CHARS_PER_LINE 8
|
||||
/* Number of lines on the LCD display */
|
||||
#define MAXIMUM_LINES 2
|
||||
/* Character position of LCD line 1 */
|
||||
#define LCD_LINE1 0
|
||||
/* Character position of LCD line 2 */
|
||||
#define LCD_LINE2 16
|
||||
/* Clear LCD display and home cursor */
|
||||
#define LCD_CLEAR 0x01
|
||||
/* Move cursor to line 1 */
|
||||
#define LCD_HOME_L1 0x80
|
||||
/* Move cursor to line 2 */
|
||||
#define LCD_HOME_L2 0xC0
|
||||
/* Cursor auto decrement after R/W */
|
||||
#define CURSOR_MODE_DEC 0x04
|
||||
/* Cursor auto increment after R/W */
|
||||
#define CURSOR_MODE_INC 0x06
|
||||
/* Setup, 4 bits,2 lines, 5X7 */
|
||||
#define FUNCTION_SET 0x28
|
||||
/* Display ON with Cursor */
|
||||
#define LCD_CURSOR_ON 0x0E
|
||||
/* Display ON with Cursor off */
|
||||
#define LCD_CURSOR_OFF 0x0C
|
||||
/* Display on with blinking cursor */
|
||||
#define LCD_CURSOR_BLINK 0x0D
|
||||
/* Move Cursor Left One Position */
|
||||
#define LCD_CURSOR_LEFT 0x10
|
||||
/* Move Cursor Right One Position */
|
||||
#define LCD_CURSOR_RIGHT 0x14
|
||||
/* Enable LCD display */
|
||||
#define LCD_DISPLAY_ON 0x04
|
||||
/* Enable both LCD lines */
|
||||
#define LCD_TWO_LINE 0x08
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Exported global functions (to be accessed by other files)
|
||||
***********************************************************************************************************************/
|
||||
/* LCD initialisation function declaration */
|
||||
void lcd_initialize (void);
|
||||
|
||||
/* Update display function declaration */
|
||||
void lcd_display(uint8_t position, uint8_t const * string);
|
||||
|
||||
/* Clear LCD function delcaration */
|
||||
void lcd_clear (void);
|
||||
|
||||
/* End of multiple inclusion prevention macro */
|
||||
#endif
|
|
@ -0,0 +1,50 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : r_bsp.h
|
||||
* H/W Platform : RSKRX111
|
||||
* Description : Has the header files that should be included for this platform.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 08.11.2012 0.01 Beta Release
|
||||
***********************************************************************************************************************/
|
||||
|
||||
#ifndef PLATFORM_BOARD_RSKRX111
|
||||
#define PLATFORM_BOARD_RSKRX111
|
||||
|
||||
/* Make sure that no other platforms have already been defined. Do not touch this! */
|
||||
#ifdef PLATFORM_DEFINED
|
||||
#error "Error - Multiple platforms defined in platform.h!"
|
||||
#else
|
||||
#define PLATFORM_DEFINED
|
||||
#endif
|
||||
|
||||
/***********************************************************************************************************************
|
||||
INCLUDE APPROPRIATE MCU AND BOARD FILES
|
||||
***********************************************************************************************************************/
|
||||
#include "r_bsp_config.h"
|
||||
#include ".\mcu\rx111\iodefine.h"
|
||||
#include ".\mcu\rx111\mcu_info.h"
|
||||
#include ".\board\rskrx111\rskrx111.h"
|
||||
#include ".\board\rskrx111\lcd.h"
|
||||
|
||||
#endif /* PLATFORM_BOARD_RSKRX111 */
|
||||
|
||||
|
|
@ -0,0 +1,250 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : r_bsp_config_reference.c
|
||||
* Device(s) : RX111
|
||||
* Description : The file r_bsp_config.h is used to configure your BSP. r_bsp_config.h should be included
|
||||
* somewhere in your package so that the r_bsp code has access to it. This file (r_bsp_config_reference.h)
|
||||
* is just a reference file that the user can use to make their own r_bsp_config.h file.
|
||||
************************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 07.11.2012 0.01 Beta Release
|
||||
***********************************************************************************************************************/
|
||||
#ifndef R_BSP_CONFIG_REF_HEADER_FILE
|
||||
#define R_BSP_CONFIG_REF_HEADER_FILE
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Configuration Options
|
||||
***********************************************************************************************************************/
|
||||
/* Enter the product part number for your MCU. This information will be used to obtain information about your MCU such
|
||||
as package and memory size.
|
||||
To help parse this information, the part number will be defined using multiple macros.
|
||||
R 5 F 51 11 5 A D FM
|
||||
| | | | | | | | | Macro Name Description
|
||||
| | | | | | | | |__MCU_PART_PACKAGE = Package type, number of pins, and pin pitch
|
||||
| | | | | | | |____not used = Products with wide temperature range (D: -40 to 85C G: -40 to 105C)
|
||||
| | | | | | |______not used = Blank
|
||||
| | | | | |________MCU_PART_MEMORY_SIZE = ROM, RAM, and Data Flash Capacity
|
||||
| | | | |___________MCU_PART_GROUP = Group name
|
||||
| | | |______________MCU_PART_SERIES = Series name
|
||||
| | |________________MCU_PART_MEMORY_TYPE = Type of memory (Flash)
|
||||
| |__________________not used = Renesas MCU
|
||||
|____________________not used = Renesas semiconductor product.
|
||||
*/
|
||||
|
||||
/* Package type. Set the macro definition based on values below:
|
||||
Character(s) = Value for macro = Package Type/Number of Pins/Pin Pitch
|
||||
FM = 0x0 = LFQFP/64/0.50
|
||||
FK = 0x1 = LQFP/64/0.80
|
||||
LF = 0x2 = TFLGA/64/0.50
|
||||
FL = 0x3 = LFQFP/48/0.50
|
||||
NE = 0x4 = VQFN/48/0.50
|
||||
NC = 0x5 = HWQFN/36/0.50
|
||||
LM = 0x6 = WFLGA/36/0.50
|
||||
SB = 0x7 = SSOP/36/0.80
|
||||
*/
|
||||
#define MCU_PART_PACKAGE (0x0)
|
||||
|
||||
/* ROM, RAM, and Data Flash Capacity.
|
||||
Character(s) = Value for macro = ROM Size/Ram Size/Data Flash Size
|
||||
5 = 0x5 = 128KB/16KB/8KB
|
||||
4 = 0x4 = 96KB/16KB/8KB
|
||||
3 = 0x3 = 64KB/10KB/8KB
|
||||
1 = 0x1 = 32KB/10KB/8KB
|
||||
J = 0x0 = 16KB/8KB/8KB
|
||||
*/
|
||||
#define MCU_PART_MEMORY_SIZE (0x5)
|
||||
|
||||
/* Group name.
|
||||
Character(s) = Value for macro = Description
|
||||
10 = 0x0 = RX110 Group
|
||||
11 = 0x1 = RX111 Group
|
||||
*/
|
||||
#define MCU_PART_GROUP (0x1)
|
||||
|
||||
/* Series name.
|
||||
Character(s) = Value for macro = Description
|
||||
51 = 0x0 = RX100 Series
|
||||
*/
|
||||
#define MCU_PART_SERIES (0x0)
|
||||
|
||||
/* Memory type.
|
||||
Character(s) = Value for macro = Description
|
||||
F = 0x0 = Flash memory version
|
||||
*/
|
||||
#define MCU_PART_MEMORY_TYPE (0x0)
|
||||
|
||||
/* The 'BSP_DECLARE_STACK' macro is checked so that the stack is only declared in one place (resetprg.c). Every time a
|
||||
'#pragma stacksize' is encountered, the stack size is increased. This prevents multiplication of stack size. */
|
||||
#if defined(BSP_DECLARE_STACK)
|
||||
/* User Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */
|
||||
#pragma stacksize su=0x400
|
||||
/* Interrupt Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */
|
||||
#pragma stacksize si=0x100
|
||||
#endif
|
||||
|
||||
/* Heap size in bytes. */
|
||||
#define HEAP_BYTES (0x400)
|
||||
|
||||
/* After reset MCU will operate in Supervisor mode. To switch to User mode, set this macro to '1'. For more information
|
||||
on the differences between these 2 modes see the CPU >> Processor Mode section of your MCU's hardware manual.
|
||||
0 = Stay in Supervisor mode.
|
||||
1 = Switch to User mode.
|
||||
*/
|
||||
#define RUN_IN_USER_MODE (0)
|
||||
|
||||
|
||||
/* This macro lets other modules no if a RTOS is being used.
|
||||
0 = RTOS is not used.
|
||||
1 = RTOS is used.
|
||||
*/
|
||||
#define RTOS_USED (0)
|
||||
|
||||
/* Clock source select (CKSEL).
|
||||
0 = Low Speed On-Chip Oscillator (LOCO)
|
||||
1 = High Speed On-Chip Oscillator (HOCO)
|
||||
2 = Main Clock Oscillator
|
||||
3 = Sub-Clock Oscillator
|
||||
4 = PLL Circuit
|
||||
*/
|
||||
#define CLOCK_SOURCE (4)
|
||||
|
||||
/* Clock configuration options.
|
||||
The input clock frequency is specified and then the system clocks are set by specifying the multipliers used. The
|
||||
multiplier settings are used to set the clock registers in resetprg.c. If a 16MHz clock is used and the
|
||||
ICLK is 24MHz, PCLKB is 24MHz, FCLK is 24MHz, PCLKD is 24MHz, and CKO is 1MHz then the
|
||||
settings would be:
|
||||
|
||||
XTAL_HZ = 16000000
|
||||
PLL_DIV = 2
|
||||
PLL_MUL = 6 (16MHz x 3 = 48MHz)
|
||||
ICK_DIV = 2 : System Clock (ICLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / ICK_DIV) = 24MHz
|
||||
PCKB_DIV = 2 : Peripheral Clock B (PCLKB) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKB_DIV) = 24MHz
|
||||
PCKD_DIV = 2 : Peripheral Clock D (PCLKD) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKD_DIV) = 24MHz
|
||||
FCK_DIV = 2 : Flash IF Clock (FCLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / FCK_DIV) = 24MHz
|
||||
*/
|
||||
/* XTAL - Input clock frequency in Hz */
|
||||
#define XTAL_HZ (16000000)
|
||||
/* PLL Input Frequency Divider Select (PLIDIV).
|
||||
Available divisors = /1 (no division), /2, /4
|
||||
*/
|
||||
#define PLL_DIV (2)
|
||||
/* PLL Frequency Multiplication Factor Select (STC).
|
||||
Available multipliers = x6, x8
|
||||
*/
|
||||
#define PLL_MUL (6)
|
||||
/* System Clock Divider (ICK).
|
||||
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||
*/
|
||||
#define ICK_DIV (2)
|
||||
/* Peripheral Module Clock B Divider (PCKB).
|
||||
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||
*/
|
||||
#define PCKB_DIV (2)
|
||||
/* Peripheral Module Clock D Divider (PCKD).
|
||||
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||
*/
|
||||
#define PCKD_DIV (2)
|
||||
/* Flash IF Clock Divider (FCK).
|
||||
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||
*/
|
||||
#define FCK_DIV (2)
|
||||
|
||||
/* Below are callback functions that can be used for detecting MCU exceptions, undefined interrupt sources, and
|
||||
bus errors. If the user wishes to be alerted of these events then they will need to define the macro as a
|
||||
function to be called when the event occurs. For example, if the user wanted the function
|
||||
excep_undefined_instr_isr() to be called when an undefined interrupt source ISR is triggered then they would
|
||||
do the following:
|
||||
#define UNDEFINED_INT_ISR_CALLBACK undefined_interrupt_cb
|
||||
If the user does not wish to be alerted of these events then they should comment out the macros.
|
||||
|
||||
NOTE: When a callback function is called it will be called from within a ISR. This means that the function
|
||||
will essentially be an interrupt and will hold off other interrupts that occur in the system while it
|
||||
is executing. For this reason, it is recommended to keep these callback functions short as to not
|
||||
decrease the real-time response of your system.
|
||||
*/
|
||||
/* Callback for Supervisor Instruction Violation Exception. */
|
||||
//#define EXCEP_SUPERVISOR_ISR_CALLBACK supervisor_instr_cb
|
||||
|
||||
/* Callback for Undefined Instruction Exception. */
|
||||
//#define EXCEP_UNDEFINED_INSTR_ISR_CALLBACK undefined_instr_cb
|
||||
|
||||
/* Callback for Non-maskable Interrupt. */
|
||||
//#define NMI_ISR_CALLBACK nmi_cb
|
||||
|
||||
/* Callback for all undefined interrupt vectors. User can set a breakpoint in this function to determine which source
|
||||
is creating unwanted interrupts. */
|
||||
//#define UNDEFINED_INT_ISR_CALLBACK undefined_interrupt_cb
|
||||
|
||||
/* Callback for Bus Error Interrupt. */
|
||||
//#define BUS_ERROR_ISR_CALLBACK bus_error_cb
|
||||
|
||||
/* The user has the option of separately choosing little or big endian for the User Application Area */
|
||||
|
||||
/* Endian mode for User Application.
|
||||
0 = Big Endian
|
||||
Else = Little Endian (Default)
|
||||
*/
|
||||
#define USER_APP_ENDIAN (1)
|
||||
|
||||
|
||||
/* Configure WDT and IWDT settings.
|
||||
OFS0 - Option Function Select Register 0
|
||||
OFS0 - Option Function Select Register 0
|
||||
b31:b15 Reserved (set to 1)
|
||||
b14 IWDTSLCSTP - IWDT Sleep Mode Count Stop Control - (0=can't stop count, 1=stop w/some low power modes)
|
||||
b13 Reserved (set to 1)
|
||||
b12 IWDTRSTIRQS - IWDT Reset Interrupt Request - What to do on underflow (0=take interrupt, 1=reset MCU)
|
||||
b11:b10 IWDTRPSS - IWDT Window Start Position Select - (0=25%, 1=50%, 2=75%, 3=100%,don't use)
|
||||
b9:b8 IWDTRPES - IWDT Window End Position Select - (0=75%, 1=50%, 2=25%, 3=0%,don't use)
|
||||
b7:b4 IWDTCKS - IWDT Clock Frequency Division Ratio - (0=none, 2=/16, 3 = /32, 4=/64, 0xF=/128, 5=/256)
|
||||
b3:b2 IWDTTOPS - IWDT Timeout Period Select - (0=128 cycles, 1=512, 2=1024, 3=2048)
|
||||
b1 IWDTSTRT - IWDT Start Mode Select - (0=auto-start after reset, 1=halt after reset)
|
||||
b0 Reserved (set to 1) */
|
||||
#define OFS0_REG_VALUE (0xFFFFFFFF) //Disable by default
|
||||
|
||||
/* Configure whether voltage detection 1 circuit and HOCO are enabled after reset.
|
||||
OFS1 - Option Function Select Register 1
|
||||
b31:b9 Reserved (set to 1)
|
||||
b8 HOCOEN - Enable/disable HOCO oscillation after a reset (0=enable, 1=disable)
|
||||
b7:b4 STUPLVD1LVL - Startup Voltage Monitoring 1 Reset Detection Level Select
|
||||
0 1 0 0: 3.10 V
|
||||
0 1 0 1: 3.00 V
|
||||
0 1 1 0: 2.90 V
|
||||
0 1 1 1: 2.79 V
|
||||
1 0 0 0: 2.68 V
|
||||
1 0 0 1: 2.58 V
|
||||
1 0 1 0: 2.48 V
|
||||
1 0 1 1: 2.06 V
|
||||
1 1 0 0: 1.96 V
|
||||
1 1 0 1: 1.86 V
|
||||
b3:b2 Reserved (set to 1)
|
||||
b2 STUPLVD1REN - Startup Voltage Monitoring 1 Reset Enable (1=monitoring disabled)
|
||||
b0 FASTSTUP - Power-On Fast Startup Time (1=normal; read only) */
|
||||
#define OFS1_REG_VALUE (0xFFFFFFFF) //Disable by default
|
||||
|
||||
/* Initializes C input & output library functions.
|
||||
0 = Disable I/O library initialization in resetprg.c. If you are not using stdio then use this value.
|
||||
1 = Enable I/O library initialization in resetprg.c. This is default and needed if you are using stdio. */
|
||||
#define IO_LIB_ENABLE (1)
|
||||
|
||||
#endif /* R_BSP_CONFIG_REF_HEADER_FILE */
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : rskrx111.h
|
||||
* H/W Platform : RSKRX111
|
||||
* Description : Board specific definitions for the RSKRX111.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 08.11.2012 0.01 Beta Release
|
||||
***********************************************************************************************************************/
|
||||
|
||||
#ifndef RSKRX111_H
|
||||
#define RSKRX111_H
|
||||
|
||||
/* Local defines */
|
||||
#define LED_ON (0)
|
||||
#define LED_OFF (1)
|
||||
#define SET_BIT_HIGH (1)
|
||||
#define SET_BIT_LOW (0)
|
||||
#define SET_BYTE_HIGH (0xFF)
|
||||
#define SET_BYTE_LOW (0x00)
|
||||
|
||||
/* Switches */
|
||||
#define SW_ACTIVE 0
|
||||
#define SW1 PORT3.PIDR.BIT.B0
|
||||
#define SW2 PORT3.PIDR.BIT.B1
|
||||
#define SW3 PORTE.PIDR.BIT.B4
|
||||
#define SW1_PDR PORT3.PDR.BIT.B0
|
||||
#define SW2_PDR PORT3.PDR.BIT.B1
|
||||
#define SW3_PDR PORTE.PDR.BIT.B4
|
||||
#define SW1_PMR PORT3.PMR.BIT.B0
|
||||
#define SW2_PMR PORT3.PMR.BIT.B1
|
||||
#define SW3_PMR PORTE.PMR.BIT.B4
|
||||
|
||||
/* LEDs */
|
||||
#define LED0 PORTB.PODR.BIT.B7
|
||||
#define LED1 PORTA.PODR.BIT.B0
|
||||
#define LED2 PORT5.PODR.BIT.B4
|
||||
#define LED3 PORT1.PODR.BIT.B7
|
||||
#define LED0_PDR PORTB.PDR.BIT.B7
|
||||
#define LED1_PDR PORTA.PDR.BIT.B0
|
||||
#define LED2_PDR PORT5.PDR.BIT.B4
|
||||
#define LED3_PDR PORT1.PDR.BIT.B7
|
||||
|
||||
|
||||
#endif /* RSKRX111_H */
|
|
@ -0,0 +1,367 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : hwsetup.c
|
||||
* Device(s) : RX
|
||||
* H/W Platform : RSKRX210
|
||||
* Description : Defines the initialization routines used each time the MCU is restarted.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 08.11.2012 0.01 Beta Release
|
||||
***********************************************************************************************************************/
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Includes <System Includes> , "Project Includes"
|
||||
***********************************************************************************************************************/
|
||||
/* I/O Register and board definitions */
|
||||
#include "platform.h"
|
||||
#include "r_switches_config.h"
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Private global variables and functions
|
||||
***********************************************************************************************************************/
|
||||
/* MCU I/O port configuration function delcaration */
|
||||
static void output_ports_configure(void);
|
||||
|
||||
/* Interrupt configuration function delcaration */
|
||||
static void interrupts_configure(void);
|
||||
|
||||
/* MCU peripheral module configuration function declaration */
|
||||
static void peripheral_modules_enable(void);
|
||||
|
||||
/* Configure MCU clocks. */
|
||||
static void clock_source_select (void);
|
||||
void operating_frequency_set(void);
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name: hardware_setup
|
||||
* Description : Contains setup functions called at device restart
|
||||
* Arguments : none
|
||||
* Return value : none
|
||||
***********************************************************************************************************************/
|
||||
void HardwareSetup(void)
|
||||
{
|
||||
operating_frequency_set();
|
||||
output_ports_configure();
|
||||
interrupts_configure();
|
||||
peripheral_modules_enable();
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name: output_ports_configure
|
||||
* Description : Configures the port and pin direction settings, and sets the pin outputs to a safe level.
|
||||
* Arguments : none
|
||||
* Return value : none
|
||||
***********************************************************************************************************************/
|
||||
void output_ports_configure(void)
|
||||
{
|
||||
/* Enable LEDs. */
|
||||
/* Start with LEDs off. */
|
||||
LED0 = LED_OFF;
|
||||
LED1 = LED_OFF;
|
||||
LED2 = LED_OFF;
|
||||
LED3 = LED_OFF;
|
||||
|
||||
/* Set LED pins as outputs. */
|
||||
LED0_PDR = 1;
|
||||
LED1_PDR = 1;
|
||||
LED2_PDR = 1;
|
||||
LED3_PDR = 1;
|
||||
|
||||
/* Enable switches. */
|
||||
/* Set pins as inputs. */
|
||||
SW1_PDR = 0;
|
||||
SW2_PDR = 0;
|
||||
SW3_PDR = 0;
|
||||
|
||||
/* Set port mode registers for switches. */
|
||||
SW1_PMR = 0;
|
||||
SW2_PMR = 0;
|
||||
SW3_PMR = 0;
|
||||
|
||||
/* Unlock MPC registers to enable writing to them. */
|
||||
MPC.PWPR.BIT.B0WI = 0 ; /* Unlock protection register */
|
||||
MPC.PWPR.BIT.PFSWE = 1 ; /* Unlock MPC registers */
|
||||
|
||||
/* TXD1 is output. */
|
||||
PORT1.PDR.BIT.B6 = 1;
|
||||
PORT1.PMR.BIT.B6 = 1;
|
||||
MPC.P16PFS.BYTE = 0x0A;
|
||||
/* RXD1 is input. */
|
||||
PORT1.PDR.BIT.B5 = 0;
|
||||
PORT1.PMR.BIT.B5 = 1;
|
||||
MPC.P15PFS.BYTE = 0x0A;
|
||||
|
||||
/* Configure the pin connected to the ADC Pot as an input */
|
||||
PORT4.PDR.BIT.B4 = 0;
|
||||
|
||||
/* Protect off. */
|
||||
SYSTEM.PRCR.WORD = 0xA50B;
|
||||
|
||||
/* Turn off module stop for the A2D converter. */
|
||||
SYSTEM.MSTPCRA.BIT.MSTPA17 = 0;
|
||||
|
||||
/* Protect on. */
|
||||
SYSTEM.PRCR.WORD = 0xA500;
|
||||
|
||||
/* Initialise the first button to generate an interrupt. */
|
||||
R_SWITCHES_Init();
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name: interrupts_configure
|
||||
* Description : Configures interrupts used
|
||||
* Arguments : none
|
||||
* Return value : none
|
||||
***********************************************************************************************************************/
|
||||
void interrupts_configure(void)
|
||||
{
|
||||
/* Add code here to setup additional interrupts */
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name: peripheral_modules_enable
|
||||
* Description : Enables and configures peripheral devices on the MCU
|
||||
* Arguments : none
|
||||
* Return value : none
|
||||
***********************************************************************************************************************/
|
||||
void peripheral_modules_enable(void)
|
||||
{
|
||||
/* Enable triggers to start an ADC conversion. */
|
||||
S12AD.ADCSR.BIT.TRGE = 1;
|
||||
|
||||
/* Only channel 4 is going to be used. */
|
||||
S12AD.ADANSA.BIT.ANSA4 = 1;
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name: operating_frequency_set
|
||||
* Description : Configures the clock settings for each of the device clocks
|
||||
* Arguments : none
|
||||
* Return value : none
|
||||
***********************************************************************************************************************/
|
||||
void operating_frequency_set(void)
|
||||
{
|
||||
/* Used for constructing value to write to SCKCR and CKOCR registers. */
|
||||
uint32_t temp_clock = 0;
|
||||
|
||||
/*
|
||||
Clock Description Frequency
|
||||
----------------------------------------
|
||||
Input Clock Frequency............ 16 MHz
|
||||
PLL frequency (x3)............... 48 MHz
|
||||
Internal Clock Frequency......... 24 MHz
|
||||
Peripheral Clock Frequency....... 24 MHz
|
||||
Clock Out Frequency.............. 1 MHz */
|
||||
|
||||
volatile unsigned int i;
|
||||
|
||||
/* Protect off. */
|
||||
SYSTEM.PRCR.WORD = 0xA50B;
|
||||
|
||||
/* Select the clock based upon user's choice. */
|
||||
clock_source_select();
|
||||
|
||||
|
||||
/* Figure out setting for FCK bits. */
|
||||
#if FCK_DIV == 1
|
||||
/* Do nothing since FCK bits should be 0. */
|
||||
#elif FCK_DIV == 2
|
||||
temp_clock |= 0x10000000;
|
||||
#elif FCK_DIV == 4
|
||||
temp_clock |= 0x20000000;
|
||||
#elif FCK_DIV == 8
|
||||
temp_clock |= 0x30000000;
|
||||
#elif FCK_DIV == 16
|
||||
temp_clock |= 0x40000000;
|
||||
#elif FCK_DIV == 32
|
||||
temp_clock |= 0x50000000;
|
||||
#elif FCK_DIV == 64
|
||||
temp_clock |= 0x60000000;
|
||||
#else
|
||||
#error "Error! Invalid setting for FCK_DIV in r_bsp_config.h"
|
||||
#endif
|
||||
|
||||
/* Figure out setting for ICK bits. */
|
||||
#if ICK_DIV == 1
|
||||
/* Do nothing since ICK bits should be 0. */
|
||||
#elif ICK_DIV == 2
|
||||
temp_clock |= 0x01000000;
|
||||
#elif ICK_DIV == 4
|
||||
temp_clock |= 0x02000000;
|
||||
#elif ICK_DIV == 8
|
||||
temp_clock |= 0x03000000;
|
||||
#elif ICK_DIV == 16
|
||||
temp_clock |= 0x04000000;
|
||||
#elif ICK_DIV == 32
|
||||
temp_clock |= 0x05000000;
|
||||
#elif ICK_DIV == 64
|
||||
temp_clock |= 0x06000000;
|
||||
#else
|
||||
#error "Error! Invalid setting for ICK_DIV in r_bsp_config.h"
|
||||
#endif
|
||||
|
||||
/* Figure out setting for PCKB bits. */
|
||||
#if PCKB_DIV == 1
|
||||
/* Do nothing since PCKB bits should be 0. */
|
||||
#elif PCKB_DIV == 2
|
||||
temp_clock |= 0x00000100;
|
||||
#elif PCKB_DIV == 4
|
||||
temp_clock |= 0x00000200;
|
||||
#elif PCKB_DIV == 8
|
||||
temp_clock |= 0x00000300;
|
||||
#elif PCKB_DIV == 16
|
||||
temp_clock |= 0x00000400;
|
||||
#elif PCKB_DIV == 32
|
||||
temp_clock |= 0x00000500;
|
||||
#elif PCKB_DIV == 64
|
||||
temp_clock |= 0x00000600;
|
||||
#else
|
||||
#error "Error! Invalid setting for PCKB_DIV in r_bsp_config.h"
|
||||
#endif
|
||||
|
||||
/* Figure out setting for PCKD bits. */
|
||||
#if PCKD_DIV == 1
|
||||
/* Do nothing since PCKD bits should be 0. */
|
||||
#elif PCKD_DIV == 2
|
||||
temp_clock |= 0x00000001;
|
||||
#elif PCKD_DIV == 4
|
||||
temp_clock |= 0x00000002;
|
||||
#elif PCKD_DIV == 8
|
||||
temp_clock |= 0x00000003;
|
||||
#elif PCKD_DIV == 16
|
||||
temp_clock |= 0x00000004;
|
||||
#elif PCKD_DIV == 32
|
||||
temp_clock |= 0x00000005;
|
||||
#elif PCKD_DIV == 64
|
||||
temp_clock |= 0x00000006;
|
||||
#else
|
||||
#error "Error! Invalid setting for PCKD_DIV in r_bsp_config.h"
|
||||
#endif
|
||||
|
||||
/* Set SCKCR register. */
|
||||
SYSTEM.SCKCR.LONG = temp_clock;
|
||||
|
||||
/* Choose clock source. Default for r_bsp_config.h is PLL. */
|
||||
SYSTEM.SCKCR3.WORD = ((uint16_t)CLOCK_SOURCE) << 8;
|
||||
|
||||
/* Protect on. */
|
||||
SYSTEM.PRCR.WORD = 0xA500;
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name: clock_source_select
|
||||
* Description : Enables and disables clocks as chosen by the user. This function also implements the software delays
|
||||
* needed for the clocks to stabilize.
|
||||
* Arguments : none
|
||||
* Return value : none
|
||||
***********************************************************************************************************************/
|
||||
static void clock_source_select (void)
|
||||
{
|
||||
/* Declared volatile for software delay purposes. */
|
||||
volatile unsigned int i;
|
||||
|
||||
/* NOTE: AS OF VERSION 0.50 OF THE RX111 HARDWARE MANUAL, ALL OF THE CLOCK
|
||||
* STABILIZATION TIMES ARE TBD. FOR NOW, WHERE EVER A WAIT COUNT REGISTER
|
||||
* IS AVAILABLE, THE DELAY IS SET TO THE MAX NUMBER OF CYCLES. WHERE EVER
|
||||
* DELAY LOOPS ARE PRESENT, THE VALUES FROM THE 63N ARE RE-USED. KEEP IN
|
||||
* MIND THAT THE 63N RUNS ON A FASTER CRYSTAL.
|
||||
*/
|
||||
|
||||
#if (CLOCK_SOURCE == 1)
|
||||
/* HOCO is chosen. Start it operating. */
|
||||
SYSTEM.HOCOCR.BYTE = 0x00;
|
||||
/* The delay period needed is to make sure that the HOCO has stabilized.*/
|
||||
for(i = 0; i< 28; i++) // tHOCOWT2 is TBD
|
||||
{
|
||||
__asm volatile( "NOP" );
|
||||
}
|
||||
#else
|
||||
/* HOCO is not chosen. Stop the HOCO. */
|
||||
SYSTEM.HOCOCR.BYTE = 0x01;
|
||||
#endif
|
||||
|
||||
#if (CLOCK_SOURCE == 2)
|
||||
/* Main clock oscillator is chosen. Start it operating. */
|
||||
SYSTEM.MOSCWTCR.BYTE = 0x07; // Wait 65,536 cycles
|
||||
/* Set the main clock to operating. */
|
||||
SYSTEM.MOSCCR.BYTE = 0x00;
|
||||
/* The delay period needed is to make sure that the main clock has stabilized. */
|
||||
for(i = 0; i< 140; i++) // tMAINOSCWT is TBD
|
||||
{
|
||||
__asm volatile( "NOT" );
|
||||
}
|
||||
#endif
|
||||
|
||||
#if (CLOCK_SOURCE == 3)
|
||||
/* Sub-clock oscillator is chosen. Start it operating. */
|
||||
/* In section 9.8.4, there is a reference to a SOSCWTCR register, but there is no
|
||||
* description for this register in the manual nor reference for it in iodefine.h. */
|
||||
|
||||
/* Set the sub-clock to operating. */
|
||||
SYSTEM.SOSCCR.BYTE = 0x00;
|
||||
/* The delay period needed is to make sure that the sub-clock has stabilized. */
|
||||
for(i = 0; i< 30233; i++) // tSUBOSCWT0 is TBD
|
||||
{
|
||||
__asm volatile( "NOP" );
|
||||
}
|
||||
#else
|
||||
/* Set the sub-clock to stopped. */
|
||||
SYSTEM.SOSCCR.BYTE = 0x01;
|
||||
#endif
|
||||
|
||||
#if (CLOCK_SOURCE == 4)
|
||||
/* PLL is chosen. Start it operating. Must start main clock as well since PLL uses it. */
|
||||
SYSTEM.MOSCWTCR.BYTE = 0x07; // Wait 65,536 cycles
|
||||
/* Set the main clock to operating. */
|
||||
SYSTEM.MOSCCR.BYTE = 0x00;
|
||||
|
||||
/* Set PLL Input Divisor. */
|
||||
SYSTEM.PLLCR.BIT.PLIDIV = PLL_DIV >> 1;
|
||||
|
||||
/* Set PLL Multiplier. */
|
||||
SYSTEM.PLLCR.BIT.STC = (PLL_MUL * 2) - 1;
|
||||
|
||||
/* Set the PLL to operating. */
|
||||
SYSTEM.PLLCR2.BYTE = 0x00;
|
||||
/* The delay period needed is to make sure that the main clock and PLL have stabilized. */
|
||||
for(i = 0; i< 140; i++) // tPLLWT2 is TBD
|
||||
{
|
||||
__asm volatile( "NOP" );
|
||||
}
|
||||
#endif
|
||||
|
||||
/* LOCO is saved for last since it is what is running by default out of reset. This means you do not want to turn
|
||||
it off until another clock has been enabled and is ready to use. */
|
||||
#if (CLOCK_SOURCE == 0)
|
||||
/* LOCO is chosen. This is the default out of reset. */
|
||||
SYSTEM.LOCOCR.BYTE = 0x00;
|
||||
#else
|
||||
/* LOCO is not chosen and another clock has already been setup. Turn off the LOCO. */
|
||||
SYSTEM.LOCOCR.BYTE = 0x01;
|
||||
#endif
|
||||
|
||||
/* Make sure a valid clock was chosen. */
|
||||
#if (CLOCK_SOURCE > 4) || (CLOCK_SOURCE < 0)
|
||||
#error "ERROR - Valid clock source must be chosen in r_bsp_config.h using CLOCK_SOURCE macro."
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : r_bsp.h
|
||||
* Description : Has the header files that should be included for this platform.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 13.01.2012 1.00 First Release
|
||||
* : 27.06.2012 1.10 Updated with new information to reflect udpated r_bsp structure.
|
||||
***********************************************************************************************************************/
|
||||
|
||||
#ifndef PLATFORM_BOARD_USER
|
||||
#define PLATFORM_BOARD_USER
|
||||
|
||||
/* Make sure that no other platforms have already been defined. Do not touch this! */
|
||||
#ifdef PLATFORM_DEFINED
|
||||
#error "Error - Multiple platforms defined in platform.h!"
|
||||
#else
|
||||
#define PLATFORM_DEFINED
|
||||
#endif
|
||||
|
||||
/***********************************************************************************************************************
|
||||
INCLUDE APPROPRIATE MCU AND BOARD FILES
|
||||
***********************************************************************************************************************/
|
||||
/* This is a user defined board. Start off by:
|
||||
1)Copy and rename one of the 'board' folders that most closely matches your system (same MCU Series and Group).
|
||||
2)Substitute in your MCU Group for the *MCU Group* option in the #include below for mcu_info.h.
|
||||
3)Copy the other #includes from the r_bsp.h in the 'board' folder that you copied earlier.
|
||||
4)Configure the BSP for your board by modifying the r_bsp_config_reference.h.
|
||||
5)Copy r_bsp_config_reference.h to your project directory and rename it r_bsp_config.h.
|
||||
You can also add your own include files here as well. */
|
||||
#include "r_bsp_config.h"
|
||||
#include ".\mcu\*MCU Group*\mcu_info.h"
|
||||
|
||||
#endif /* PLATFORM_BOARD_USER */
|
||||
|
||||
|
|
@ -0,0 +1,283 @@
|
|||
/***********************************************************************/
|
||||
/* */
|
||||
/* PROJECT NAME : RTOSDemo_GCC */
|
||||
/* FILE : interrupt_handlers.c */
|
||||
/* DESCRIPTION : Interrupt Handler */
|
||||
/* CPU SERIES : RX100 */
|
||||
/* CPU TYPE : RX111 */
|
||||
/* */
|
||||
/* This file is generated by e2studio. */
|
||||
/* */
|
||||
/***********************************************************************/
|
||||
|
||||
|
||||
|
||||
|
||||
#include "interrupt_handlers.h"
|
||||
|
||||
// INT_Exception(Supervisor Instruction)
|
||||
void INT_Excep_SuperVisorInst(void){/* brk(); */}
|
||||
|
||||
// Exception(Undefined Instruction)
|
||||
void INT_Excep_UndefinedInst(void){/* brk(); */}
|
||||
|
||||
// Exception(Floating Point)
|
||||
void INT_Excep_FloatingPoint(void){/* brk(); */}
|
||||
|
||||
// NMI
|
||||
void INT_NonMaskableInterrupt(void){/* brk(); */}
|
||||
|
||||
// Dummy
|
||||
void Dummy(void)
|
||||
{
|
||||
for( ;; );
|
||||
}
|
||||
|
||||
// BRK
|
||||
void INT_Excep_BRK(void){/* wait(); */}
|
||||
//;0x0000 Reserved
|
||||
|
||||
void INT_Excep_BUSERR(void){ }
|
||||
|
||||
// ICU SWINT
|
||||
void INT_Excep_ICU_SWINT(void){ }
|
||||
|
||||
// CMT0 CMI0
|
||||
void INT_Excep_CMT0_CMI0(void){ }
|
||||
|
||||
// CMT1 CMI1
|
||||
void INT_Excep_CMT1_CMI1(void){ }
|
||||
|
||||
// CAC FERRF
|
||||
void INT_Excep_CAC_FERRF(void){ }
|
||||
|
||||
// CAC MENDF
|
||||
void INT_Excep_CAC_MENDF(void){ }
|
||||
|
||||
// CAC OVFF
|
||||
void INT_Excep_CAC_OVFF(void){ }
|
||||
|
||||
// USB0 D0FIFO0
|
||||
void INT_Excep_USB0_D0FIFO0(void){ }
|
||||
|
||||
// USB0 D1FIFO0
|
||||
void INT_Excep_USB0_D1FIFO0(void){ }
|
||||
|
||||
// USB0 USBI0
|
||||
void INT_Excep_USB0_USBI0(void){ }
|
||||
|
||||
// RSPI0 SPEI0
|
||||
void INT_Excep_RSPI0_SPEI0(void){ }
|
||||
|
||||
// RSPI0 SPRI0
|
||||
void INT_Excep_RSPI0_SPRI0(void){ }
|
||||
|
||||
// RSPI0 SPTI0
|
||||
void INT_Excep_RSPI0_SPTI0(void){ }
|
||||
|
||||
// RSPI0 SPII0
|
||||
void INT_Excep_RSPI0_SPII0(void){ }
|
||||
|
||||
// DOC DOPCF
|
||||
void INT_Excep_DOC_DOPCF(void){ }
|
||||
|
||||
// RTC CUP
|
||||
void INT_Excep_RTC_CUP(void){ }
|
||||
|
||||
// ICU IRQ0
|
||||
void INT_Excep_ICU_IRQ0(void){ }
|
||||
|
||||
// ICU IRQ1
|
||||
void INT_Excep_ICU_IRQ1(void){ }
|
||||
|
||||
// ICU IRQ2
|
||||
void INT_Excep_ICU_IRQ2(void){ }
|
||||
|
||||
// ICU IRQ3
|
||||
void INT_Excep_ICU_IRQ3(void){ }
|
||||
|
||||
// ICU IRQ4
|
||||
void INT_Excep_ICU_IRQ4(void){ }
|
||||
|
||||
// ICU IRQ5
|
||||
void INT_Excep_ICU_IRQ5(void){ }
|
||||
|
||||
// ICU IRQ6
|
||||
void INT_Excep_ICU_IRQ6(void){ }
|
||||
|
||||
// ICU IRQ7
|
||||
void INT_Excep_ICU_IRQ7(void){ }
|
||||
|
||||
// LVD LVD1
|
||||
void INT_Excep_LVD_LVD1(void){ }
|
||||
|
||||
// LVD LVD2
|
||||
void INT_Excep_LVD_LVD2(void){ }
|
||||
|
||||
// USB0 USBR0
|
||||
void INT_Excep_USB0_USBR0(void){ }
|
||||
|
||||
// RTC ALM
|
||||
void INT_Excep_RTC_ALM(void){ }
|
||||
|
||||
// RTC PRD
|
||||
void INT_Excep_RTC_PRD(void){ }
|
||||
|
||||
// S12AD S12ADI0
|
||||
void INT_Excep_S12AD_S12ADI0(void){ }
|
||||
|
||||
// S12AD GBADI
|
||||
void INT_Excep_S12AD_GBADI(void){ }
|
||||
|
||||
// ELC ELSR18I
|
||||
void INT_Excep_ELC_ELSR18I(void){ }
|
||||
|
||||
// MTU0 TGIA0
|
||||
void INT_Excep_MTU0_TGIA0(void){ }
|
||||
|
||||
// MTU0 TGIB0
|
||||
void INT_Excep_MTU0_TGIB0(void){ }
|
||||
|
||||
// MTU0 TGIC0
|
||||
void INT_Excep_MTU0_TGIC0(void){ }
|
||||
|
||||
// MTU0 TGID0
|
||||
void INT_Excep_MTU0_TGID0(void){ }
|
||||
|
||||
// MTU0 TCIV0
|
||||
void INT_Excep_MTU0_TCIV0(void){ }
|
||||
|
||||
// MTU0 TGIE0
|
||||
void INT_Excep_MTU0_TGIE0(void){ }
|
||||
|
||||
// MTU0 TGIF0
|
||||
void INT_Excep_MTU0_TGIF0(void){ }
|
||||
|
||||
// MTU1 TGIA1
|
||||
void INT_Excep_MTU1_TGIA1(void){ }
|
||||
|
||||
// MTU1 TGIB1
|
||||
void INT_Excep_MTU1_TGIB1(void){ }
|
||||
|
||||
// MTU1 TCIV1
|
||||
void INT_Excep_MTU1_TCIV1(void){ }
|
||||
|
||||
// MTU1 TCIU1
|
||||
void INT_Excep_MTU1_TCIU1(void){ }
|
||||
|
||||
// MTU2 TGIA2
|
||||
void INT_Excep_MTU2_TGIA2(void){ }
|
||||
|
||||
// MTU2 TGIB2
|
||||
void INT_Excep_MTU2_TGIB2(void){ }
|
||||
|
||||
// MTU2 TCIV2
|
||||
void INT_Excep_MTU2_TCIV2(void){ }
|
||||
|
||||
// MTU2 TCIU2
|
||||
void INT_Excep_MTU2_TCIU2(void){ }
|
||||
|
||||
// MTU3 TGIA3
|
||||
void INT_Excep_MTU3_TGIA3(void){ }
|
||||
|
||||
// MTU3 TGIB3
|
||||
void INT_Excep_MTU3_TGIB3(void){ }
|
||||
|
||||
// MTU3 TGIC3
|
||||
void INT_Excep_MTU3_TGIC3(void){ }
|
||||
|
||||
// MTU3 TGID3
|
||||
void INT_Excep_MTU3_TGID3(void){ }
|
||||
|
||||
// MTU3 TCIV3
|
||||
void INT_Excep_MTU3_TCIV3(void){ }
|
||||
|
||||
// MTU4 TGIA4
|
||||
void INT_Excep_MTU4_TGIA4(void){ }
|
||||
|
||||
// MTU4 TGIB4
|
||||
void INT_Excep_MTU4_TGIB4(void){ }
|
||||
|
||||
// MTU4 TGIC4
|
||||
void INT_Excep_MTU4_TGIC4(void){ }
|
||||
|
||||
// MTU4 TGID4
|
||||
void INT_Excep_MTU4_TGID4(void){ }
|
||||
|
||||
// MTU4 TCIV4
|
||||
void INT_Excep_MTU4_TCIV4(void){ }
|
||||
|
||||
// MTU5 TGIU5
|
||||
void INT_Excep_MTU5_TGIU5(void){ }
|
||||
|
||||
// MTU5 TGIV5
|
||||
void INT_Excep_MTU5_TGIV5(void){ }
|
||||
|
||||
// MTU5 TGIW5
|
||||
void INT_Excep_MTU5_TGIW5(void){ }
|
||||
|
||||
// POE OEI1
|
||||
void INT_Excep_POE_OEI1(void){ }
|
||||
|
||||
// POE OEI2
|
||||
void INT_Excep_POE_OEI2(void){ }
|
||||
|
||||
// SCI1 ERI1
|
||||
void INT_Excep_SCI1_ERI1(void){ }
|
||||
|
||||
// SCI1 RXI1
|
||||
void INT_Excep_SCI1_RXI1(void){ }
|
||||
|
||||
// SCI1 TXI1
|
||||
void INT_Excep_SCI1_TXI1(void){ }
|
||||
|
||||
// SCI1 TEI1
|
||||
void INT_Excep_SCI1_TEI1(void){ }
|
||||
|
||||
// SCI5 ERI5
|
||||
void INT_Excep_SCI5_ERI5(void){ }
|
||||
|
||||
// SCI5 RXI5
|
||||
void INT_Excep_SCI5_RXI5(void){ }
|
||||
|
||||
// SCI5 TXI5
|
||||
void INT_Excep_SCI5_TXI5(void){ }
|
||||
|
||||
// SCI5 TEI5
|
||||
void INT_Excep_SCI5_TEI5(void){ }
|
||||
|
||||
// SCI12 ERI12
|
||||
void INT_Excep_SCI12_ERI12(void){ }
|
||||
|
||||
// SCI12 RXI12
|
||||
void INT_Excep_SCI12_RXI12(void){ }
|
||||
|
||||
// SCI12 TXI12
|
||||
void INT_Excep_SCI12_TXI12(void){ }
|
||||
|
||||
// SCI12 TEI12
|
||||
void INT_Excep_SCI12_TEI12(void){ }
|
||||
|
||||
// SCI12 SCIX0
|
||||
void INT_Excep_SCI12_SCIX0(void){ }
|
||||
|
||||
// SCI12 SCIX1
|
||||
void INT_Excep_SCI12_SCIX1(void){ }
|
||||
|
||||
// SCI12 SCIX2
|
||||
void INT_Excep_SCI12_SCIX2(void){ }
|
||||
|
||||
// SCI12 SCIX3
|
||||
void INT_Excep_SCI12_SCIX3(void){ }
|
||||
|
||||
// RIIC0 EEI0
|
||||
void INT_Excep_RIIC0_EEI0(void){ }
|
||||
|
||||
// RIIC0 RXI0
|
||||
void INT_Excep_RIIC0_RXI0(void){ }
|
||||
|
||||
// RIIC0 TXI0
|
||||
void INT_Excep_RIIC0_TXI0(void){ }
|
||||
|
||||
// RIIC0 TEI0
|
||||
void INT_Excep_RIIC0_TEI0(void){ }
|
|
@ -0,0 +1,371 @@
|
|||
/***********************************************************************/
|
||||
/* */
|
||||
/* PROJECT NAME : RTOSDemo_GCC */
|
||||
/* FILE : interrupt_handlers.h */
|
||||
/* DESCRIPTION : Interrupt Handler Declarations */
|
||||
/* CPU SERIES : RX100 */
|
||||
/* CPU TYPE : RX111 */
|
||||
/* */
|
||||
/* This file is generated by e2studio. */
|
||||
/* */
|
||||
/***********************************************************************/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#ifndef INTERRUPT_HANDLERS_H
|
||||
#define INTERRUPT_HANDLERS_H
|
||||
|
||||
// Exception(Supervisor Instruction)
|
||||
// Exception(Supervisor Instruction)
|
||||
void INT_Excep_SuperVisorInst(void) __attribute__ ((interrupt));
|
||||
|
||||
// Exception(Undefined Instruction)
|
||||
void INT_Excep_UndefinedInst(void) __attribute__ ((interrupt));
|
||||
|
||||
// Exception(Floating Point)
|
||||
void INT_Excep_FloatingPoint(void) __attribute__ ((interrupt));
|
||||
|
||||
// NMI
|
||||
void INT_NonMaskableInterrupt(void) __attribute__ ((interrupt));
|
||||
|
||||
// Dummy
|
||||
void Dummy (void) __attribute__ ((interrupt));
|
||||
|
||||
// BRK
|
||||
void INT_Excep_BRK(void) __attribute__ ((interrupt));
|
||||
//;0x0000 Reserved
|
||||
|
||||
void INT_Excep_BUSERR(void) __attribute__ ((interrupt));
|
||||
//;0x0044 Reserved
|
||||
|
||||
void INT_Excep_ICU_SWINT(void) __attribute__ ((interrupt));
|
||||
|
||||
// CMT0 CMI0
|
||||
|
||||
void INT_Excep_CMT0_CMI0(void) __attribute__ ((interrupt));
|
||||
|
||||
// CMT1 CMI1
|
||||
|
||||
void INT_Excep_CMT1_CMI1(void) __attribute__ ((interrupt));
|
||||
|
||||
// CAC FERRF
|
||||
|
||||
void INT_Excep_CAC_FERRF(void) __attribute__ ((interrupt));
|
||||
|
||||
// CAC MENDF
|
||||
|
||||
|
||||
void INT_Excep_CAC_MENDF(void) __attribute__ ((interrupt));
|
||||
|
||||
// CAC OVFF
|
||||
|
||||
void INT_Excep_CAC_OVFF(void) __attribute__ ((interrupt));
|
||||
|
||||
// USB0 D0FIFO0
|
||||
|
||||
void INT_Excep_USB0_D0FIFO0(void) __attribute__ ((interrupt));
|
||||
|
||||
// USB0 D1FIFO0
|
||||
|
||||
void INT_Excep_USB0_D1FIFO0(void) __attribute__ ((interrupt));
|
||||
|
||||
// USB0 USBI0
|
||||
|
||||
void INT_Excep_USB0_USBI0(void) __attribute__ ((interrupt));
|
||||
|
||||
// RSPI0 SPEI0
|
||||
|
||||
void INT_Excep_RSPI0_SPEI0(void) __attribute__ ((interrupt));
|
||||
|
||||
// RSPI0 SPRI0
|
||||
|
||||
void INT_Excep_RSPI0_SPRI0(void) __attribute__ ((interrupt));
|
||||
|
||||
// RSPI0 SPTI0
|
||||
|
||||
void INT_Excep_RSPI0_SPTI0(void) __attribute__ ((interrupt));
|
||||
|
||||
// RSPI0 SPII0
|
||||
|
||||
void INT_Excep_RSPI0_SPII0(void) __attribute__ ((interrupt));
|
||||
|
||||
// DOC DOPCF
|
||||
|
||||
void INT_Excep_DOC_DOPCF(void) __attribute__ ((interrupt));
|
||||
|
||||
// RTC CUP
|
||||
|
||||
void INT_Excep_RTC_CUP(void) __attribute__ ((interrupt));
|
||||
|
||||
// ICU IRQ0
|
||||
|
||||
void INT_Excep_ICU_IRQ0(void) __attribute__ ((interrupt));
|
||||
|
||||
// ICU IRQ1
|
||||
|
||||
void INT_Excep_ICU_IRQ1(void) __attribute__ ((interrupt));
|
||||
|
||||
// ICU IRQ2
|
||||
|
||||
void INT_Excep_ICU_IRQ2(void) __attribute__ ((interrupt));
|
||||
|
||||
// ICU IRQ3
|
||||
|
||||
void INT_Excep_ICU_IRQ3(void) __attribute__ ((interrupt));
|
||||
|
||||
// ICU IRQ4
|
||||
|
||||
void INT_Excep_ICU_IRQ4(void) __attribute__ ((interrupt));
|
||||
|
||||
// ICU IRQ5
|
||||
|
||||
void INT_Excep_ICU_IRQ5(void) __attribute__ ((interrupt));
|
||||
|
||||
// ICU IRQ6
|
||||
|
||||
void INT_Excep_ICU_IRQ6(void) __attribute__ ((interrupt));
|
||||
|
||||
// ICU IRQ7
|
||||
|
||||
void INT_Excep_ICU_IRQ7(void) __attribute__ ((interrupt));
|
||||
|
||||
// LVD LVD1
|
||||
|
||||
void INT_Excep_LVD_LVD1(void) __attribute__ ((interrupt));
|
||||
|
||||
// LVD LVD2
|
||||
|
||||
void INT_Excep_LVD_LVD2(void) __attribute__ ((interrupt));
|
||||
|
||||
// USB0 USBR0
|
||||
|
||||
void INT_Excep_USB0_USBR0(void) __attribute__ ((interrupt));
|
||||
|
||||
// RTC ALM
|
||||
|
||||
void INT_Excep_RTC_ALM(void) __attribute__ ((interrupt));
|
||||
|
||||
// RTC PRD
|
||||
|
||||
void INT_Excep_RTC_PRD(void) __attribute__ ((interrupt));
|
||||
|
||||
// S12AD S12ADI0
|
||||
|
||||
void INT_Excep_S12AD_S12ADI0(void) __attribute__ ((interrupt));
|
||||
|
||||
// S12AD GBADI
|
||||
|
||||
void INT_Excep_S12AD_GBADI(void) __attribute__ ((interrupt));
|
||||
|
||||
// ELC ELSR18I
|
||||
|
||||
void INT_Excep_ELC_ELSR18I(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU0 TGIA0
|
||||
|
||||
void INT_Excep_MTU0_TGIA0(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU0 TGIB0
|
||||
|
||||
void INT_Excep_MTU0_TGIB0(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU0 TGIC0
|
||||
|
||||
void INT_Excep_MTU0_TGIC0(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU0 TGID0
|
||||
|
||||
void INT_Excep_MTU0_TGID0(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU0 TCIV0
|
||||
|
||||
void INT_Excep_MTU0_TCIV0(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU0 TGIE0
|
||||
|
||||
void INT_Excep_MTU0_TGIE0(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU0 TGIF0
|
||||
|
||||
void INT_Excep_MTU0_TGIF0(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU1 TGIA1
|
||||
|
||||
void INT_Excep_MTU1_TGIA1(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU1 TGIB1
|
||||
|
||||
void INT_Excep_MTU1_TGIB1(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU1 TCIV1
|
||||
|
||||
void INT_Excep_MTU1_TCIV1(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU1 TCIU1
|
||||
|
||||
void INT_Excep_MTU1_TCIU1(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU2 TGIA2
|
||||
|
||||
void INT_Excep_MTU2_TGIA2(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU2 TGIB2
|
||||
|
||||
void INT_Excep_MTU2_TGIB2(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU2 TCIV2
|
||||
|
||||
void INT_Excep_MTU2_TCIV2(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU2 TCIU2
|
||||
|
||||
void INT_Excep_MTU2_TCIU2(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU3 TGIA3
|
||||
|
||||
void INT_Excep_MTU3_TGIA3(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU3 TGIB3
|
||||
|
||||
void INT_Excep_MTU3_TGIB3(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU3 TGIC3
|
||||
|
||||
void INT_Excep_MTU3_TGIC3(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU3 TGID3
|
||||
|
||||
void INT_Excep_MTU3_TGID3(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU3 TCIV3
|
||||
|
||||
void INT_Excep_MTU3_TCIV3(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU4 TGIA4
|
||||
|
||||
void INT_Excep_MTU4_TGIA4(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU4 TGIB4
|
||||
|
||||
void INT_Excep_MTU4_TGIB4(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU4 TGIC4
|
||||
|
||||
void INT_Excep_MTU4_TGIC4(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU4 TGID4
|
||||
|
||||
void INT_Excep_MTU4_TGID4(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU4 TCIV4
|
||||
|
||||
void INT_Excep_MTU4_TCIV4(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU5 TGIU5
|
||||
|
||||
void INT_Excep_MTU5_TGIU5(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU5 TGIV5
|
||||
|
||||
void INT_Excep_MTU5_TGIV5(void) __attribute__ ((interrupt));
|
||||
|
||||
// MTU5 TGIW5
|
||||
|
||||
void INT_Excep_MTU5_TGIW5(void) __attribute__ ((interrupt));
|
||||
|
||||
// POE OEI1
|
||||
|
||||
void INT_Excep_POE_OEI1(void) __attribute__ ((interrupt));
|
||||
|
||||
// POE OEI2
|
||||
|
||||
void INT_Excep_POE_OEI2(void) __attribute__ ((interrupt));
|
||||
|
||||
// SCI1 ERI1
|
||||
|
||||
void INT_Excep_SCI1_ERI1(void) __attribute__ ((interrupt));
|
||||
|
||||
// SCI1 RXI1
|
||||
|
||||
void INT_Excep_SCI1_RXI1(void) __attribute__ ((interrupt));
|
||||
|
||||
// SCI1 TXI1
|
||||
|
||||
void INT_Excep_SCI1_TXI1(void) __attribute__ ((interrupt));
|
||||
|
||||
// SCI1 TEI1
|
||||
|
||||
void INT_Excep_SCI1_TEI1(void) __attribute__ ((interrupt));
|
||||
|
||||
// SCI5 ERI5
|
||||
|
||||
void INT_Excep_SCI5_ERI5(void) __attribute__ ((interrupt));
|
||||
|
||||
// SCI5 RXI5
|
||||
|
||||
void INT_Excep_SCI5_RXI5(void) __attribute__ ((interrupt));
|
||||
|
||||
// SCI5 TXI5
|
||||
|
||||
void INT_Excep_SCI5_TXI5(void) __attribute__ ((interrupt));
|
||||
|
||||
// SCI5 TEI5
|
||||
|
||||
void INT_Excep_SCI5_TEI5(void) __attribute__ ((interrupt));
|
||||
|
||||
// SCI12 ERI12
|
||||
|
||||
void INT_Excep_SCI12_ERI12(void) __attribute__ ((interrupt));
|
||||
|
||||
// SCI12 RXI12
|
||||
|
||||
void INT_Excep_SCI12_RXI12(void) __attribute__ ((interrupt));
|
||||
|
||||
// SCI12 TXI12
|
||||
|
||||
void INT_Excep_SCI12_TXI12(void) __attribute__ ((interrupt));
|
||||
|
||||
// SCI12 TEI12
|
||||
|
||||
void INT_Excep_SCI12_TEI12(void) __attribute__ ((interrupt));
|
||||
|
||||
// SCI12 SCIX0
|
||||
|
||||
void INT_Excep_SCI12_SCIX0(void) __attribute__ ((interrupt));
|
||||
|
||||
// SCI12 SCIX1
|
||||
|
||||
void INT_Excep_SCI12_SCIX1(void) __attribute__ ((interrupt));
|
||||
|
||||
// SCI12 SCIX2
|
||||
|
||||
void INT_Excep_SCI12_SCIX2(void) __attribute__ ((interrupt));
|
||||
|
||||
// SCI12 SCIX3
|
||||
|
||||
void INT_Excep_SCI12_SCIX3(void) __attribute__ ((interrupt));
|
||||
|
||||
// RIIC0 EEI0
|
||||
|
||||
void INT_Excep_RIIC0_EEI0(void) __attribute__ ((interrupt));
|
||||
|
||||
// RIIC0 RXI0
|
||||
|
||||
void INT_Excep_RIIC0_RXI0(void) __attribute__ ((interrupt));
|
||||
|
||||
// RIIC0 TXI0
|
||||
|
||||
void INT_Excep_RIIC0_TXI0(void) __attribute__ ((interrupt));
|
||||
|
||||
// RIIC0 TEI0
|
||||
|
||||
void INT_Excep_RIIC0_TEI0(void) __attribute__ ((interrupt));
|
||||
|
||||
//;<<VECTOR DATA START (POWER ON RESET)>>
|
||||
//;Power On Reset PC
|
||||
extern void PowerON_Reset(void);
|
||||
//;<<VECTOR DATA END (POWER ON RESET)>>
|
||||
#endif
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,112 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2011 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : mcu_info.h
|
||||
* Device(s) : RX111
|
||||
* Description : Information about the MCU on this board (RSKRX111).
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 08.11.2012 0.01 Beta Release
|
||||
***********************************************************************************************************************/
|
||||
|
||||
#ifndef _MCU_INFO
|
||||
#define _MCU_INFO
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Includes <System Includes> , "Project Includes"
|
||||
***********************************************************************************************************************/
|
||||
/* Gets MCU configuration information. */
|
||||
#include "r_bsp_config.h"
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Macro definitions
|
||||
***********************************************************************************************************************/
|
||||
/* MCU Series. */
|
||||
#if MCU_PART_SERIES == 0x0
|
||||
#define MCU_SERIES_RX100 (1)
|
||||
#else
|
||||
#error "ERROR - MCU_PART_SERIES - Unknown MCU Series chosen in r_bsp_config.h"
|
||||
#endif
|
||||
|
||||
/* MCU Group name. */
|
||||
#if MCU_PART_GROUP == 0x1
|
||||
#define MCU_RX111 (1)
|
||||
#define MCU_RX11x (1)
|
||||
#else
|
||||
#error "ERROR - MCU_PART_GROUP - Unknown MCU Group chosen in r_bsp_config.h"
|
||||
#endif
|
||||
|
||||
/* Package. */
|
||||
#if MCU_PART_PACKAGE == 0x0
|
||||
#define PACKAGE_LFQFP64 (1)
|
||||
#elif MCU_PART_PACKAGE == 0x1
|
||||
#define PACKAGE_LQFP64 (1)
|
||||
#elif MCU_PART_PACKAGE == 0x2
|
||||
#define PACKAGE_TFLGA64 (1)
|
||||
#elif MCU_PART_PACKAGE == 0x3
|
||||
#define PACKAGE_LFQFP48 (1)
|
||||
#elif MCU_PART_PACKAGE == 0x4
|
||||
#define PACKAGE_VQFN48 (1)
|
||||
#elif MCU_PART_PACKAGE == 0x5
|
||||
#define PACKAGE_HWQFN36 (1)
|
||||
#elif MCU_PART_PACKAGE == 0x6
|
||||
#define PACKAGE_WFLGA36 (1)
|
||||
#elif MCU_PART_PACKAGE == 0x7
|
||||
#define PACKAGE_SSOP36 (1)
|
||||
#else
|
||||
#error "ERROR - MCU_PART_PACKAGE - Unknown package chosen in r_bsp_config.h"
|
||||
#endif
|
||||
|
||||
/* Memory size of your MCU. */
|
||||
#if MCU_PART_MEMORY_SIZE == 0x0 // "J" parts
|
||||
#define ROM_SIZE_BYTES (16384)
|
||||
#define RAM_SIZE_BYTES (8192)
|
||||
#define DF_SIZE_BYTES (8192)
|
||||
#elif MCU_PART_MEMORY_SIZE == 0x1
|
||||
#define ROM_SIZE_BYTES (32768)
|
||||
#define RAM_SIZE_BYTES (10240)
|
||||
#define DF_SIZE_BYTES (8192)
|
||||
#elif MCU_PART_MEMORY_SIZE == 0x3
|
||||
#define ROM_SIZE_BYTES (65536)
|
||||
#define RAM_SIZE_BYTES (10240)
|
||||
#define DF_SIZE_BYTES (8192)
|
||||
#elif MCU_PART_MEMORY_SIZE == 0x4
|
||||
#define ROM_SIZE_BYTES (98304)
|
||||
#define RAM_SIZE_BYTES (16384)
|
||||
#define DF_SIZE_BYTES (8192)
|
||||
#elif MCU_PART_MEMORY_SIZE == 0x5
|
||||
#define ROM_SIZE_BYTES (131072)
|
||||
#define RAM_SIZE_BYTES (16384)
|
||||
#define DF_SIZE_BYTES (8192)
|
||||
#else
|
||||
#error "ERROR - MCU_PART_MEMORY_SIZE - Unknown memory size chosen in r_bsp_config.h"
|
||||
#endif
|
||||
|
||||
/* System clock speed in Hz. */
|
||||
#define ICLK_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / ICK_DIV)
|
||||
/* Peripheral Module Clock B speed in Hz. */
|
||||
#define PCLKB_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKB_DIV)
|
||||
/* Peripheral Module Clock D speed in Hz. */
|
||||
#define PCLKD_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKD_DIV)
|
||||
/* FlashIF clock speed in Hz. */
|
||||
#define FCLK_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / FCK_DIV)
|
||||
|
||||
#endif /* _MCU_INFO */
|
||||
|
|
@ -0,0 +1,175 @@
|
|||
/***********************************************************************/
|
||||
/* */
|
||||
/* PROJECT NAME : RTOSDemo_GCC */
|
||||
/* FILE : reset_program.asm */
|
||||
/* DESCRIPTION : Reset Program */
|
||||
/* CPU SERIES : RX100 */
|
||||
/* CPU TYPE : RX111 */
|
||||
/* */
|
||||
/* This file is generated by e2studio. */
|
||||
/* */
|
||||
/***********************************************************************/
|
||||
|
||||
|
||||
|
||||
/*reset_program.asm*/
|
||||
|
||||
.list
|
||||
.section .text
|
||||
.global _PowerON_Reset /*global Start routine */
|
||||
|
||||
.extern _HardwareSetup /*external Sub-routine to initialise Hardware*/
|
||||
.extern _data
|
||||
.extern _mdata
|
||||
.extern _ebss
|
||||
.extern _bss
|
||||
.extern _edata
|
||||
.extern _main
|
||||
.extern _ustack
|
||||
.extern _istack
|
||||
.extern _rvectors
|
||||
.extern _exit
|
||||
|
||||
|
||||
_PowerON_Reset :
|
||||
/* initialise user stack pointer */
|
||||
mvtc #_ustack,USP
|
||||
|
||||
/* initialise interrupt stack pointer */
|
||||
mvtc #_istack,ISP
|
||||
|
||||
/* setup intb */
|
||||
mvtc #_rvectors_start, intb /* INTERRUPT VECTOR ADDRESS definition */
|
||||
|
||||
/* load data section from ROM to RAM */
|
||||
|
||||
mov #_mdata,r2 /* src ROM address of data section in R2 */
|
||||
mov #_data,r1 /* dest start RAM address of data section in R1 */
|
||||
mov #_edata,r3 /* end RAM address of data section in R3 */
|
||||
sub r1,r3 /* size of data section in R3 (R3=R3-R1) */
|
||||
smovf /* block copy R3 bytes from R2 to R1 */
|
||||
|
||||
/* bss initialisation : zero out bss */
|
||||
|
||||
mov #00h,r2 /* load R2 reg with zero */
|
||||
mov #_ebss, r3 /* store the end address of bss in R3 */
|
||||
mov #_bss, r1 /* store the start address of bss in R1 */
|
||||
sub r1,r3 /* size of bss section in R3 (R3=R3-R1) */
|
||||
sstr.b
|
||||
/* call the hardware initialiser */
|
||||
bsr.a _HardwareSetup
|
||||
nop
|
||||
|
||||
#ifdef RUN_IN_USER_MODE
|
||||
/* setup PSW */
|
||||
mvtc #10000h, psw /* Set Ubit & Ibit for PSW */
|
||||
|
||||
/* change PSW PM to user-mode */
|
||||
MVFC PSW,R1
|
||||
OR #00100000h,R1
|
||||
PUSH.L R1
|
||||
MVFC PC,R1
|
||||
ADD #10,R1
|
||||
PUSH.L R1
|
||||
RTE
|
||||
NOP
|
||||
NOP
|
||||
#endif
|
||||
#ifdef CPPAPP
|
||||
bsr.a __rx_init
|
||||
#endif
|
||||
/* start user program */
|
||||
bsr.a _main
|
||||
bsr.a _exit
|
||||
|
||||
#ifdef CPPAPP
|
||||
.global _rx_run_preinit_array
|
||||
.type _rx_run_preinit_array,@function
|
||||
_rx_run_preinit_array:
|
||||
mov #__preinit_array_start,r1
|
||||
mov #__preinit_array_end,r2
|
||||
bra.a _rx_run_inilist
|
||||
|
||||
.global _rx_run_init_array
|
||||
.type _rx_run_init_array,@function
|
||||
_rx_run_init_array:
|
||||
mov #__init_array_start,r1
|
||||
mov #__init_array_end,r2
|
||||
mov #4, r3
|
||||
bra.a _rx_run_inilist
|
||||
|
||||
.global _rx_run_fini_array
|
||||
.type _rx_run_fini_array,@function
|
||||
_rx_run_fini_array:
|
||||
mov #__fini_array_start,r2
|
||||
mov #__fini_array_end,r1
|
||||
mov #-4, r3
|
||||
/* fall through */
|
||||
|
||||
_rx_run_inilist:
|
||||
next_inilist:
|
||||
cmp r1,r2
|
||||
beq.b done_inilist
|
||||
mov.l [r1],r4
|
||||
cmp #-1, r4
|
||||
beq.b skip_inilist
|
||||
cmp #0, r4
|
||||
beq.b skip_inilist
|
||||
pushm r1-r3
|
||||
jsr r4
|
||||
popm r1-r3
|
||||
skip_inilist:
|
||||
add r3,r1
|
||||
bra.b next_inilist
|
||||
done_inilist:
|
||||
rts
|
||||
|
||||
.section .init,"ax"
|
||||
.balign 4
|
||||
|
||||
.global __rx_init
|
||||
__rx_init:
|
||||
|
||||
.section .fini,"ax"
|
||||
.balign 4
|
||||
|
||||
.global __rx_fini
|
||||
__rx_fini:
|
||||
bsr.a _rx_run_fini_array
|
||||
|
||||
.section .sdata
|
||||
.balign 4
|
||||
.global __gp
|
||||
.weak __gp
|
||||
__gp:
|
||||
|
||||
.section .data
|
||||
.global ___dso_handle
|
||||
.weak ___dso_handle
|
||||
___dso_handle:
|
||||
.long 0
|
||||
|
||||
.section .init,"ax"
|
||||
bsr.a _rx_run_preinit_array
|
||||
bsr.a _rx_run_init_array
|
||||
rts
|
||||
|
||||
.global __rx_init_end
|
||||
__rx_init_end:
|
||||
|
||||
.section .fini,"ax"
|
||||
|
||||
rts
|
||||
.global __rx_fini_end
|
||||
__rx_fini_end:
|
||||
|
||||
#endif
|
||||
|
||||
/* call to exit*/
|
||||
_exit:
|
||||
bra _loop_here
|
||||
_loop_here:
|
||||
bra _loop_here
|
||||
|
||||
.text
|
||||
.end
|
|
@ -0,0 +1,25 @@
|
|||
/***********************************************************************/
|
||||
/* */
|
||||
/* PROJECT NAME : RTOSDemo_GCC */
|
||||
/* FILE : typedefine.h */
|
||||
/* DESCRIPTION : Aliases of Integer Type */
|
||||
/* CPU SERIES : RX100 */
|
||||
/* CPU TYPE : RX111 */
|
||||
/* */
|
||||
/* This file is generated by e2studio. */
|
||||
/* */
|
||||
/***********************************************************************/
|
||||
|
||||
|
||||
|
||||
|
||||
typedef signed char _SBYTE;
|
||||
typedef unsigned char _UBYTE;
|
||||
typedef signed short _SWORD;
|
||||
typedef unsigned short _UWORD;
|
||||
typedef signed int _SINT;
|
||||
typedef unsigned int _UINT;
|
||||
typedef signed long _SDWORD;
|
||||
typedef unsigned long _UDWORD;
|
||||
typedef signed long long _SQWORD;
|
||||
typedef unsigned long long _UQWORD;
|
|
@ -0,0 +1,590 @@
|
|||
/***********************************************************************/
|
||||
/* */
|
||||
/* PROJECT NAME : RTOSDemo_GCC */
|
||||
/* FILE : vector_table.c */
|
||||
/* DESCRIPTION : Vector Table */
|
||||
/* CPU SERIES : RX100 */
|
||||
/* CPU TYPE : RX111 */
|
||||
/* */
|
||||
/* This file is generated by e2studio. */
|
||||
/* */
|
||||
/***********************************************************************/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#include "interrupt_handlers.h"
|
||||
|
||||
typedef void (*fp) (void);
|
||||
extern void PowerON_Reset (void);
|
||||
extern void stack (void);
|
||||
extern void vPortSoftwareInterruptISR( void );
|
||||
extern void vPortTickISR( void );
|
||||
extern void Dummy( void );
|
||||
extern void vButtonInterrupt( void );
|
||||
|
||||
#ifdef __RX_LITTLE_ENDIAN__
|
||||
const unsigned char Endian_Select[] __attribute__ ((section (".endian_bytes"))) = {
|
||||
0xff, 0xff, 0xff, 0xff
|
||||
};
|
||||
#elif __RX_BIG_ENDIAN__
|
||||
const unsigned char Endian_Select[] __attribute__ ((section (".endian_bytes"))) = {
|
||||
0xff, 0xff, 0xff, 0xf8
|
||||
};
|
||||
#endif
|
||||
|
||||
// Option bytes setting for OFS1:0xFFFFFF88 and OFS0:0xFFFFFF8C
|
||||
const unsigned char Security_Id[] __attribute__ ((section (".option_bytes"))) = {
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
|
||||
};
|
||||
|
||||
|
||||
#define FVECT_SECT __attribute__ ((section (".fvectors")))
|
||||
|
||||
const void *HardwareVectors[] FVECT_SECT = {
|
||||
//;0xffffffd0 Exception(Supervisor Instruction)
|
||||
INT_Excep_SuperVisorInst,
|
||||
//;0xffffffd4 Reserved
|
||||
(fp)0,
|
||||
//;0xffffffd8 Reserved
|
||||
(fp)0,
|
||||
//;0xffffffdc Exception(Undefined Instruction)
|
||||
INT_Excep_UndefinedInst,
|
||||
//;0xffffffe0 Reserved
|
||||
(fp)0,
|
||||
//;0xffffffe4 Exception(Floating Point)
|
||||
INT_Excep_FloatingPoint,
|
||||
//;0xffffffe8 Reserved
|
||||
(fp)0,
|
||||
//;0xffffffec Reserved
|
||||
(fp)0,
|
||||
//;0xfffffff0 Reserved
|
||||
(fp)0,
|
||||
//;0xfffffff4 Reserved
|
||||
(fp)0,
|
||||
//;0xfffffff8 NMI
|
||||
INT_NonMaskableInterrupt,
|
||||
//;0xfffffffc RESET
|
||||
//;<<VECTOR DATA START (POWER ON RESET)>>
|
||||
//;Power On Reset PC
|
||||
PowerON_Reset
|
||||
//;<<VECTOR DATA END (POWER ON RESET)>>
|
||||
};
|
||||
#define RVECT_SECT __attribute__ ((section (".rvectors")))
|
||||
|
||||
const fp RelocatableVectors[] RVECT_SECT = {
|
||||
|
||||
//;0x0000 Reserved
|
||||
(fp)0,
|
||||
//;0x0004 Reserved
|
||||
(fp)0,
|
||||
//;0x0008 Reserved
|
||||
(fp)0,
|
||||
//;0x000C Reserved
|
||||
(fp)0,
|
||||
//;0x0010 Reserved
|
||||
(fp)0,
|
||||
//;0x0014 Reserved
|
||||
(fp)0,
|
||||
//;0x0018 Reserved
|
||||
(fp)0,
|
||||
//;0x001C Reserved
|
||||
(fp)0,
|
||||
//;0x0020 Reserved
|
||||
(fp)0,
|
||||
//;0x0024 Reserved
|
||||
(fp)0,
|
||||
//;0x0028 Reserved
|
||||
(fp)0,
|
||||
//;0x002C Reserved
|
||||
(fp)0,
|
||||
//;0x0030 Reserved
|
||||
(fp)0,
|
||||
//;0x0034 Reserved
|
||||
(fp)0,
|
||||
//;0x0038 Reserved
|
||||
(fp)0,
|
||||
//;0x003C Reserved
|
||||
(fp)0,
|
||||
//;0x0040
|
||||
(fp)Dummy,
|
||||
//;0x0044 Reserved
|
||||
(fp)0,
|
||||
//;0x0048 Reserved
|
||||
(fp)0,
|
||||
//;0x004C Reserved
|
||||
(fp)0,
|
||||
//;0x0050 Reserved
|
||||
(fp)0,
|
||||
//;0x0054
|
||||
(fp)Dummy,
|
||||
//;0x0058 Reserved
|
||||
(fp)0,
|
||||
//;0x005C
|
||||
(fp)Dummy,
|
||||
//;0x0060 Reserved
|
||||
(fp)0,
|
||||
//;0x0064 Reserved
|
||||
(fp)0,
|
||||
//;0x0068 Reserved
|
||||
(fp)0,
|
||||
//;0x006C Reserved
|
||||
(fp)vPortSoftwareInterruptISR,
|
||||
//;0x0070 CMTU0_CMT0
|
||||
(fp)vPortTickISR,
|
||||
//;0x0074
|
||||
(fp)Dummy,
|
||||
//;0x0078
|
||||
(fp)Dummy,
|
||||
//;0x007C
|
||||
(fp)Dummy,
|
||||
//;0x0080
|
||||
(fp)Dummy,
|
||||
//;0x0084 Reserved
|
||||
(fp)0,
|
||||
//;0x0088 Reserved
|
||||
(fp)0,
|
||||
//;0x008C Reserved
|
||||
(fp)0,
|
||||
//;0x0090 Reserved
|
||||
(fp)0,
|
||||
//;0x0094 Reserved
|
||||
(fp)0,
|
||||
//;0x0098 Reserved
|
||||
(fp)0,
|
||||
//;0x009C Reserved
|
||||
(fp)0,
|
||||
//;0x00A0 Reserved
|
||||
(fp)0,
|
||||
//;0x00A4 Reserved
|
||||
(fp)0,
|
||||
//;0x00A8 Reserved
|
||||
(fp)0,
|
||||
//;0x00AC Reserved
|
||||
(fp)0,
|
||||
//;0x00B0 Reserved
|
||||
(fp)0,
|
||||
//;0x00B4 Reserved
|
||||
(fp)0,
|
||||
//;0x00B8 Reserved
|
||||
(fp)0,
|
||||
//;0x00BC Reserved
|
||||
(fp)0,
|
||||
//;0x00C0 Reserved
|
||||
(fp)0,
|
||||
//;0x00C4 Reserved
|
||||
(fp)0,
|
||||
//;0x00C8 Reserved
|
||||
(fp)0,
|
||||
//;0x00CC Reserved
|
||||
(fp)0,
|
||||
//;0x00D0 Reserved
|
||||
(fp)0,
|
||||
//;0x00D4 Reserved
|
||||
(fp)0,
|
||||
//;0x00D8 Reserved
|
||||
(fp)0,
|
||||
//;0x00DC Reserved
|
||||
(fp)0,
|
||||
//;0x00E0 Reserved
|
||||
(fp)0,
|
||||
//;0x00E4 Reserved
|
||||
(fp)0,
|
||||
//;0x00E8 Reserved
|
||||
(fp)0,
|
||||
//;0x00EC Reserved
|
||||
(fp)0,
|
||||
//;0x00F0 Reserved
|
||||
(fp)0,
|
||||
//;0x00F4 Reserved
|
||||
(fp)0,
|
||||
//;0x00F8 Reserved
|
||||
(fp)0,
|
||||
//;0x00FC Reserved
|
||||
(fp)0,
|
||||
//;0x0100 IRQ0
|
||||
(fp)vButtonInterrupt,
|
||||
//;0x0104 IRQ1
|
||||
(fp)vButtonInterrupt,
|
||||
//;0x0108 IRQ2
|
||||
(fp)Dummy,
|
||||
//;0x010C IRQ3
|
||||
(fp)Dummy,
|
||||
//;0x0110 IRQ4
|
||||
(fp)vButtonInterrupt,
|
||||
//;0x0114 IRQ5
|
||||
(fp)Dummy,
|
||||
//;0x0118 IRQ6
|
||||
(fp)Dummy,
|
||||
//;0x011C IRQ7
|
||||
(fp)Dummy,
|
||||
//;0x0120
|
||||
(fp)Dummy,
|
||||
//;0x0124
|
||||
(fp)Dummy,
|
||||
//;0x0128
|
||||
(fp)Dummy,
|
||||
//;0x012C
|
||||
(fp)Dummy,
|
||||
//;0x0130
|
||||
(fp)Dummy,
|
||||
//;0x0134
|
||||
(fp)Dummy,
|
||||
//;0x0138
|
||||
(fp)Dummy,
|
||||
//;0x013C
|
||||
(fp)Dummy,
|
||||
//;0x0140 Reserved
|
||||
(fp)0,
|
||||
//;0x0144 Reserved
|
||||
(fp)0,
|
||||
//;0x0148 Reserved
|
||||
(fp)0,
|
||||
//;0x014C Reserved
|
||||
(fp)0,
|
||||
//;0x0150 Reserved
|
||||
(fp)0,
|
||||
//;0x0154 Reserved
|
||||
(fp)0,
|
||||
//;0x0158 Reserved
|
||||
(fp)0,
|
||||
//;0x015C Reserved
|
||||
(fp)0,
|
||||
//;0x0160 Reserved
|
||||
(fp)0,
|
||||
//;0x0164 Reserved
|
||||
(fp)0,
|
||||
//;0x0168 Reserved
|
||||
(fp)0,
|
||||
//;0x016C Reserved
|
||||
(fp)0,
|
||||
//;0x0170 Reserved
|
||||
(fp)0,
|
||||
//;0x0174 Reserved
|
||||
(fp)0,
|
||||
//;0x0178 Reserved
|
||||
(fp)0,
|
||||
//;0x017C Reserved
|
||||
(fp)0,
|
||||
//;0x0180
|
||||
(fp)Dummy,
|
||||
//;0x0184 Reserved
|
||||
(fp)0,
|
||||
//;0x0188
|
||||
(fp)Dummy,
|
||||
//;0x018C
|
||||
(fp)Dummy,
|
||||
//;0x0190
|
||||
(fp)Dummy,
|
||||
//;0x0194
|
||||
(fp)Dummy,
|
||||
//;0x0198 Reserved
|
||||
(fp)0,
|
||||
//;0x019C Reserved
|
||||
(fp)0,
|
||||
//;0x01A0
|
||||
(fp)Dummy,
|
||||
//;0x01A4
|
||||
(fp)Dummy,
|
||||
//;0x01A8
|
||||
(fp)Dummy,
|
||||
//;0x01AC
|
||||
(fp)Dummy,
|
||||
//;0x01B0
|
||||
(fp)Dummy,
|
||||
//;0x01B4 Reserved
|
||||
(fp)0,
|
||||
//;0x01B8 Reserved
|
||||
(fp)0,
|
||||
//;0x01BC
|
||||
(fp)Dummy,
|
||||
//;0x01C0
|
||||
(fp)Dummy,
|
||||
//;0x01C4 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x01C8 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x01CC
|
||||
(fp)Dummy,
|
||||
//;0x01D0
|
||||
(fp)Dummy,
|
||||
//;0x01D4
|
||||
(fp)Dummy,
|
||||
//;0x01D8
|
||||
(fp)Dummy,
|
||||
//;0x01DC Reserved
|
||||
(fp)Dummy,
|
||||
//;0x01E0
|
||||
(fp)Dummy,
|
||||
//;0x01E4
|
||||
(fp)Dummy,
|
||||
//;0x01E8
|
||||
(fp)Dummy,
|
||||
//;0x01EC
|
||||
(fp)Dummy,
|
||||
//;0x01F0
|
||||
(fp)Dummy,
|
||||
//;0x01F4
|
||||
(fp)Dummy,
|
||||
//;0x01F8
|
||||
(fp)Dummy,
|
||||
//;0x01FC
|
||||
(fp)Dummy,
|
||||
//;0x0200
|
||||
(fp)Dummy,
|
||||
//;0x0204 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x0208 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x020C
|
||||
(fp)Dummy,
|
||||
//;0x0210
|
||||
(fp)Dummy,
|
||||
//;0x0214
|
||||
(fp)Dummy,
|
||||
//;0x0218
|
||||
(fp)Dummy,
|
||||
//;0x021C Reserved
|
||||
(fp)Dummy,
|
||||
//;0x0220
|
||||
(fp)Dummy,
|
||||
//;0x0224
|
||||
(fp)Dummy,
|
||||
//;0x0228
|
||||
(fp)Dummy,
|
||||
//;0x022C
|
||||
(fp)Dummy,
|
||||
//;0x0230
|
||||
(fp)Dummy,
|
||||
//;0x0234
|
||||
(fp)Dummy,
|
||||
//;0x0238
|
||||
(fp)Dummy,
|
||||
//;0x023C Reserved
|
||||
(fp)Dummy,
|
||||
//;0x0240 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x0244
|
||||
(fp)Dummy,
|
||||
//;0x0248
|
||||
(fp)Dummy,
|
||||
//;0x024C Reserved
|
||||
(fp)Dummy,
|
||||
//;0x0250 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x0254
|
||||
(fp)Dummy,
|
||||
//;0x0258
|
||||
(fp)Dummy,
|
||||
//;0x025C
|
||||
(fp)Dummy,
|
||||
//;0x0260
|
||||
(fp)Dummy,
|
||||
//;0x0264 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x0268
|
||||
(fp)Dummy,
|
||||
//;0x026C
|
||||
(fp)Dummy,
|
||||
//;0x0270
|
||||
(fp)Dummy,
|
||||
//;0x0274
|
||||
(fp)Dummy,
|
||||
//;0x0278
|
||||
(fp)Dummy,
|
||||
//;0x027C
|
||||
(fp)Dummy,
|
||||
//;0x0280
|
||||
(fp)Dummy,
|
||||
//;0x0284
|
||||
(fp)Dummy,
|
||||
//;0x0288
|
||||
(fp)Dummy,
|
||||
//;0x028C Reserved
|
||||
(fp)Dummy,
|
||||
//;0x0290 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x0294
|
||||
(fp)Dummy,
|
||||
//;0x0298
|
||||
(fp)Dummy,
|
||||
//;0x029C
|
||||
(fp)Dummy,
|
||||
//;0x02A0
|
||||
(fp)Dummy,
|
||||
//;0x02A4 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x02A8
|
||||
(fp)Dummy,
|
||||
//;0x02AC
|
||||
(fp)Dummy,
|
||||
//;0x02B0 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x02B4 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x02B8
|
||||
(fp)Dummy,
|
||||
//;0x02BC
|
||||
(fp)Dummy,
|
||||
//;0x02C0
|
||||
(fp)Dummy,
|
||||
//;0x02C4
|
||||
(fp)Dummy,
|
||||
//;0x02C8
|
||||
(fp)Dummy,
|
||||
//;0x02CC
|
||||
(fp)Dummy,
|
||||
//;0x02D0
|
||||
(fp)Dummy,
|
||||
//;0x02D4
|
||||
(fp)Dummy,
|
||||
//;0x02D8
|
||||
(fp)Dummy,
|
||||
//;0x02DC
|
||||
(fp)Dummy,
|
||||
//;0x02E0
|
||||
(fp)Dummy,
|
||||
//;0x02E4
|
||||
(fp)Dummy,
|
||||
//;0x02E8 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x02EC Reserved
|
||||
(fp)Dummy,
|
||||
//;0x02F0 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x02F4 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x02F8 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x02FC Reserved
|
||||
(fp)Dummy,
|
||||
//;0x0300 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x0304 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x0308 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x030C Reserved
|
||||
(fp)Dummy,
|
||||
//;0x0310 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x0314 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x0318
|
||||
(fp)Dummy,
|
||||
//;0x031C
|
||||
(fp)Dummy,
|
||||
//;0x0320
|
||||
(fp)Dummy,
|
||||
//;0x0324
|
||||
(fp)Dummy,
|
||||
//;0x0328 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x032C Reserved
|
||||
(fp)Dummy,
|
||||
//;0x0330 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x0334 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x0338 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x033C Reserved
|
||||
(fp)Dummy,
|
||||
//;0x0340 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x0344 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x0348 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x034C Reserved
|
||||
(fp)Dummy,
|
||||
//;0x0350 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x0354 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x0358
|
||||
(fp)Dummy,
|
||||
//;0x035C
|
||||
(fp)Dummy,
|
||||
//;0x0360
|
||||
(fp)Dummy,
|
||||
//;0x0364
|
||||
(fp)Dummy,
|
||||
//;0x0368
|
||||
(fp)Dummy,
|
||||
//;0x036C
|
||||
(fp)Dummy,
|
||||
//;0x0370
|
||||
(fp)Dummy,
|
||||
//;0x0374
|
||||
(fp)Dummy,
|
||||
//;0x0378
|
||||
(fp)Dummy,
|
||||
//;0x037C
|
||||
(fp)Dummy,
|
||||
//;0x0380
|
||||
(fp)Dummy,
|
||||
//;0x0384
|
||||
(fp)Dummy,
|
||||
//;0x0388
|
||||
(fp)Dummy,
|
||||
//;0x038C
|
||||
(fp)Dummy,
|
||||
//;0x0390
|
||||
(fp)Dummy,
|
||||
//;0x0394
|
||||
(fp)Dummy,
|
||||
//;0x0398
|
||||
(fp)Dummy,
|
||||
//;0x039C
|
||||
(fp)Dummy,
|
||||
//;0x03A0
|
||||
(fp)Dummy,
|
||||
//;0x03A4
|
||||
(fp)Dummy,
|
||||
//;0x03A8
|
||||
(fp)Dummy,
|
||||
//;0x03AC
|
||||
(fp)Dummy,
|
||||
//;0x03B0
|
||||
(fp)Dummy,
|
||||
//;0x03B4
|
||||
(fp)Dummy,
|
||||
//;0x03B8
|
||||
(fp)Dummy,
|
||||
//;0x03BC
|
||||
(fp)Dummy,
|
||||
//;0x03C0
|
||||
(fp)Dummy,
|
||||
//;0x03C4
|
||||
(fp)Dummy,
|
||||
//;0x03C8 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x03CC Reserved
|
||||
(fp)Dummy,
|
||||
//;0x03D0 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x03D4 Reserved
|
||||
(fp)Dummy,
|
||||
//;0x03D8
|
||||
(fp)Dummy,
|
||||
//;0x03DC
|
||||
(fp)Dummy,
|
||||
//;0x03E0
|
||||
(fp)Dummy,
|
||||
//;0x03E4
|
||||
(fp)Dummy,
|
||||
//;0x03E8
|
||||
(fp)Dummy,
|
||||
//;0x03EC
|
||||
(fp)Dummy,
|
||||
//;0x03F0
|
||||
(fp)Dummy,
|
||||
//;0x03F4
|
||||
(fp)Dummy,
|
||||
//;0x03F8 Reserved
|
||||
(fp)0,
|
||||
//;0x03FC Reserved
|
||||
(fp)0,
|
||||
};
|
|
@ -0,0 +1,88 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : platform.h
|
||||
* Description : The user chooses which MCU and board they are developing for in this file. If the board you are using
|
||||
* is not listed below, please add your own or use the default 'User Board'.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 30.11.2011 1.00 First Release
|
||||
* : 13.01.2012 1.10 Moved from having platform defined using macro defintion, to having platform defined
|
||||
* by choosing an include path. This makes this file simpler and cleans up the issue
|
||||
* where HEW shows all header files for all platforms under 'Dependencies'.
|
||||
* : 14.02.2012 1.20 Added RX210 BSP.
|
||||
* : 18.04.2012 1.30 Updated to v0.70 of FIT S/W Spec and v0.20 of FIT r_bsp Spec. This includes adding
|
||||
* locking.c and locking.h in board folders. Also, r_bsp can now be configured through
|
||||
* r_bsp_config.h.
|
||||
* : 26.06.2012 1.40 Added new options such as exception callbacks and the ability to choose your MCU using
|
||||
* its part number in r_bsp_config.h. Moved mcu_info.h to the 'mcu' folder. Made an effort
|
||||
* to remove any extra files that the user would need to touch. Removed the flash_options.c
|
||||
* file and put its contents in vecttbl.c.
|
||||
* : 17.07.2012 1.50 Fixed bug with exception callback function names. Added BCLK_OUTPUT and SDCLK_OUTPUT
|
||||
* macro options in r_bsp_config.h. Added some extra code to handle exceptions in
|
||||
* vecttbl.c. Added vecttbl.h so that user has prototypes for exception callbacks.
|
||||
* : 08.11.2012 1.60 Added RX111 BSP
|
||||
***********************************************************************************************************************/
|
||||
|
||||
#ifndef _PLATFORM_H_
|
||||
#define _PLATFORM_H_
|
||||
|
||||
/***********************************************************************************************************************
|
||||
DEFINE YOUR SYSTEM - UNCOMMENT THE INCLUDE PATH FOR THE PLATFORM YOU ARE USING.
|
||||
***********************************************************************************************************************/
|
||||
/* RSKRX610 */
|
||||
//#include "./board/rskrx610/r_bsp.h"
|
||||
|
||||
/* RSKRX62N */
|
||||
//#include "./board/rskrx62n/r_bsp.h"
|
||||
|
||||
/* RSKRX62T */
|
||||
//#include "./board/rskrx62t/r_bsp.h"
|
||||
|
||||
/* RDKRX62N */
|
||||
//#include "./board/rdkrx62n/r_bsp.h"
|
||||
|
||||
/* RSKRX630 */
|
||||
//#include "./board/rskrx630/r_bsp.h"
|
||||
|
||||
/* RSKRX63N */
|
||||
//#include "./board/rskrx63n/r_bsp.h"
|
||||
|
||||
/* RDKRX63N */
|
||||
//#include "./board/rdkrx63n/r_bsp.h"
|
||||
|
||||
/* RSKRX210 */
|
||||
//#include "./board/rskrx210/r_bsp.h"
|
||||
|
||||
/* RSKRX111 */
|
||||
#include "./board/rskrx111/r_bsp.h"
|
||||
|
||||
/* User Board - Define your own board here. */
|
||||
//#include "./board/user/r_bsp.h"
|
||||
|
||||
/***********************************************************************************************************************
|
||||
MAKE SURE AT LEAST ONE PLATFORM WAS DEFINED - DO NOT EDIT BELOW THIS POINT
|
||||
***********************************************************************************************************************/
|
||||
#ifndef PLATFORM_DEFINED
|
||||
#error "Error - No platform defined in platform.h!"
|
||||
#endif
|
||||
|
||||
#endif /* _PLATFORM_H_ */
|
||||
|
|
@ -0,0 +1,250 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : r_bsp_config_reference.c
|
||||
* Device(s) : RX111
|
||||
* Description : The file r_bsp_config.h is used to configure your BSP. r_bsp_config.h should be included
|
||||
* somewhere in your package so that the r_bsp code has access to it. This file (r_bsp_config_reference.h)
|
||||
* is just a reference file that the user can use to make their own r_bsp_config.h file.
|
||||
************************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 07.11.2012 0.01 Beta Release
|
||||
***********************************************************************************************************************/
|
||||
#ifndef R_BSP_CONFIG_REF_HEADER_FILE
|
||||
#define R_BSP_CONFIG_REF_HEADER_FILE
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Configuration Options
|
||||
***********************************************************************************************************************/
|
||||
/* Enter the product part number for your MCU. This information will be used to obtain information about your MCU such
|
||||
as package and memory size.
|
||||
To help parse this information, the part number will be defined using multiple macros.
|
||||
R 5 F 51 11 5 A D FM
|
||||
| | | | | | | | | Macro Name Description
|
||||
| | | | | | | | |__MCU_PART_PACKAGE = Package type, number of pins, and pin pitch
|
||||
| | | | | | | |____not used = Products with wide temperature range (D: -40 to 85C G: -40 to 105C)
|
||||
| | | | | | |______not used = Blank
|
||||
| | | | | |________MCU_PART_MEMORY_SIZE = ROM, RAM, and Data Flash Capacity
|
||||
| | | | |___________MCU_PART_GROUP = Group name
|
||||
| | | |______________MCU_PART_SERIES = Series name
|
||||
| | |________________MCU_PART_MEMORY_TYPE = Type of memory (Flash)
|
||||
| |__________________not used = Renesas MCU
|
||||
|____________________not used = Renesas semiconductor product.
|
||||
*/
|
||||
|
||||
/* Package type. Set the macro definition based on values below:
|
||||
Character(s) = Value for macro = Package Type/Number of Pins/Pin Pitch
|
||||
FM = 0x0 = LFQFP/64/0.50
|
||||
FK = 0x1 = LQFP/64/0.80
|
||||
LF = 0x2 = TFLGA/64/0.50
|
||||
FL = 0x3 = LFQFP/48/0.50
|
||||
NE = 0x4 = VQFN/48/0.50
|
||||
NC = 0x5 = HWQFN/36/0.50
|
||||
LM = 0x6 = WFLGA/36/0.50
|
||||
SB = 0x7 = SSOP/36/0.80
|
||||
*/
|
||||
#define MCU_PART_PACKAGE (0x0)
|
||||
|
||||
/* ROM, RAM, and Data Flash Capacity.
|
||||
Character(s) = Value for macro = ROM Size/Ram Size/Data Flash Size
|
||||
5 = 0x5 = 128KB/16KB/8KB
|
||||
4 = 0x4 = 96KB/16KB/8KB
|
||||
3 = 0x3 = 64KB/10KB/8KB
|
||||
1 = 0x1 = 32KB/10KB/8KB
|
||||
J = 0x0 = 16KB/8KB/8KB
|
||||
*/
|
||||
#define MCU_PART_MEMORY_SIZE (0x5)
|
||||
|
||||
/* Group name.
|
||||
Character(s) = Value for macro = Description
|
||||
10 = 0x0 = RX110 Group
|
||||
11 = 0x1 = RX111 Group
|
||||
*/
|
||||
#define MCU_PART_GROUP (0x1)
|
||||
|
||||
/* Series name.
|
||||
Character(s) = Value for macro = Description
|
||||
51 = 0x0 = RX100 Series
|
||||
*/
|
||||
#define MCU_PART_SERIES (0x0)
|
||||
|
||||
/* Memory type.
|
||||
Character(s) = Value for macro = Description
|
||||
F = 0x0 = Flash memory version
|
||||
*/
|
||||
#define MCU_PART_MEMORY_TYPE (0x0)
|
||||
|
||||
/* The 'BSP_DECLARE_STACK' macro is checked so that the stack is only declared in one place (resetprg.c). Every time a
|
||||
'#pragma stacksize' is encountered, the stack size is increased. This prevents multiplication of stack size. */
|
||||
#if defined(BSP_DECLARE_STACK)
|
||||
/* User Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */
|
||||
#pragma stacksize su=0x400
|
||||
/* Interrupt Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */
|
||||
#pragma stacksize si=0x100
|
||||
#endif
|
||||
|
||||
/* Heap size in bytes. */
|
||||
#define HEAP_BYTES (0x001)
|
||||
|
||||
/* After reset MCU will operate in Supervisor mode. To switch to User mode, set this macro to '1'. For more information
|
||||
on the differences between these 2 modes see the CPU >> Processor Mode section of your MCU's hardware manual.
|
||||
0 = Stay in Supervisor mode.
|
||||
1 = Switch to User mode.
|
||||
*/
|
||||
#define RUN_IN_USER_MODE (0)
|
||||
|
||||
|
||||
/* This macro lets other modules no if a RTOS is being used.
|
||||
0 = RTOS is not used.
|
||||
1 = RTOS is used.
|
||||
*/
|
||||
#define RTOS_USED (0)
|
||||
|
||||
/* Clock source select (CKSEL).
|
||||
0 = Low Speed On-Chip Oscillator (LOCO)
|
||||
1 = High Speed On-Chip Oscillator (HOCO)
|
||||
2 = Main Clock Oscillator
|
||||
3 = Sub-Clock Oscillator
|
||||
4 = PLL Circuit
|
||||
*/
|
||||
#define CLOCK_SOURCE (4) // GI org 4
|
||||
|
||||
/* Clock configuration options.
|
||||
The input clock frequency is specified and then the system clocks are set by specifying the multipliers used. The
|
||||
multiplier settings are used to set the clock registers in resetprg.c. If a 16MHz clock is used and the
|
||||
ICLK is 24MHz, PCLKB is 24MHz, FCLK is 24MHz, PCLKD is 24MHz, and CKO is 1MHz then the
|
||||
settings would be:
|
||||
|
||||
XTAL_HZ = 16000000
|
||||
PLL_DIV = 2
|
||||
PLL_MUL = 6 (16MHz x 3 = 48MHz)
|
||||
ICK_DIV = 2 : System Clock (ICLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / ICK_DIV) = 24MHz
|
||||
PCKB_DIV = 2 : Peripheral Clock B (PCLKB) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKB_DIV) = 24MHz
|
||||
PCKD_DIV = 2 : Peripheral Clock D (PCLKD) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKD_DIV) = 24MHz
|
||||
FCK_DIV = 2 : Flash IF Clock (FCLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / FCK_DIV) = 24MHz
|
||||
*/
|
||||
/* XTAL - Input clock frequency in Hz */
|
||||
#define XTAL_HZ (16000000)
|
||||
/* PLL Input Frequency Divider Select (PLIDIV).
|
||||
Available divisors = /1 (no division), /2, /4
|
||||
*/
|
||||
#define PLL_DIV (2) // GI org 2
|
||||
/* PLL Frequency Multiplication Factor Select (STC).
|
||||
Available multipliers = x6, x8
|
||||
*/
|
||||
#define PLL_MUL (6) // GI org 6
|
||||
/* System Clock Divider (ICK).
|
||||
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||
*/
|
||||
#define ICK_DIV (2) // NOTE: ICLK CANNOT BE SLOWER THAN PCLK!
|
||||
/* Peripheral Module Clock B Divider (PCKB).
|
||||
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||
*/
|
||||
#define PCKB_DIV (2) // GI org 2
|
||||
/* Peripheral Module Clock D Divider (PCKD).
|
||||
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||
*/
|
||||
#define PCKD_DIV (2)
|
||||
/* Flash IF Clock Divider (FCK).
|
||||
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||
*/
|
||||
#define FCK_DIV (2)
|
||||
|
||||
/* Below are callback functions that can be used for detecting MCU exceptions, undefined interrupt sources, and
|
||||
bus errors. If the user wishes to be alerted of these events then they will need to define the macro as a
|
||||
function to be called when the event occurs. For example, if the user wanted the function
|
||||
excep_undefined_instr_isr() to be called when an undefined interrupt source ISR is triggered then they would
|
||||
do the following:
|
||||
#define UNDEFINED_INT_ISR_CALLBACK undefined_interrupt_cb
|
||||
If the user does not wish to be alerted of these events then they should comment out the macros.
|
||||
|
||||
NOTE: When a callback function is called it will be called from within a ISR. This means that the function
|
||||
will essentially be an interrupt and will hold off other interrupts that occur in the system while it
|
||||
is executing. For this reason, it is recommended to keep these callback functions short as to not
|
||||
decrease the real-time response of your system.
|
||||
*/
|
||||
/* Callback for Supervisor Instruction Violation Exception. */
|
||||
//#define EXCEP_SUPERVISOR_ISR_CALLBACK supervisor_instr_cb
|
||||
|
||||
/* Callback for Undefined Instruction Exception. */
|
||||
//#define EXCEP_UNDEFINED_INSTR_ISR_CALLBACK undefined_instr_cb
|
||||
|
||||
/* Callback for Non-maskable Interrupt. */
|
||||
//#define NMI_ISR_CALLBACK nmi_cb
|
||||
|
||||
/* Callback for all undefined interrupt vectors. User can set a breakpoint in this function to determine which source
|
||||
is creating unwanted interrupts. */
|
||||
//#define UNDEFINED_INT_ISR_CALLBACK undefined_interrupt_cb
|
||||
|
||||
/* Callback for Bus Error Interrupt. */
|
||||
//#define BUS_ERROR_ISR_CALLBACK bus_error_cb
|
||||
|
||||
/* The user has the option of separately choosing little or big endian for the User Application Area */
|
||||
|
||||
/* Endian mode for User Application.
|
||||
0 = Big Endian
|
||||
Else = Little Endian (Default)
|
||||
*/
|
||||
#define USER_APP_ENDIAN (1)
|
||||
|
||||
|
||||
/* Configure WDT and IWDT settings.
|
||||
OFS0 - Option Function Select Register 0
|
||||
OFS0 - Option Function Select Register 0
|
||||
b31:b15 Reserved (set to 1)
|
||||
b14 IWDTSLCSTP - IWDT Sleep Mode Count Stop Control - (0=can't stop count, 1=stop w/some low power modes)
|
||||
b13 Reserved (set to 1)
|
||||
b12 IWDTRSTIRQS - IWDT Reset Interrupt Request - What to do on underflow (0=take interrupt, 1=reset MCU)
|
||||
b11:b10 IWDTRPSS - IWDT Window Start Position Select - (0=25%, 1=50%, 2=75%, 3=100%,don't use)
|
||||
b9:b8 IWDTRPES - IWDT Window End Position Select - (0=75%, 1=50%, 2=25%, 3=0%,don't use)
|
||||
b7:b4 IWDTCKS - IWDT Clock Frequency Division Ratio - (0=none, 2=/16, 3 = /32, 4=/64, 0xF=/128, 5=/256)
|
||||
b3:b2 IWDTTOPS - IWDT Timeout Period Select - (0=128 cycles, 1=512, 2=1024, 3=2048)
|
||||
b1 IWDTSTRT - IWDT Start Mode Select - (0=auto-start after reset, 1=halt after reset)
|
||||
b0 Reserved (set to 1) */
|
||||
#define OFS0_REG_VALUE (0xFFFFFFFF) //Disable by default
|
||||
|
||||
/* Configure whether voltage detection 1 circuit and HOCO are enabled after reset.
|
||||
OFS1 - Option Function Select Register 1
|
||||
b31:b9 Reserved (set to 1)
|
||||
b8 HOCOEN - Enable/disable HOCO oscillation after a reset (0=enable, 1=disable)
|
||||
b7:b4 STUPLVD1LVL - Startup Voltage Monitoring 1 Reset Detection Level Select
|
||||
0 1 0 0: 3.10 V
|
||||
0 1 0 1: 3.00 V
|
||||
0 1 1 0: 2.90 V
|
||||
0 1 1 1: 2.79 V
|
||||
1 0 0 0: 2.68 V
|
||||
1 0 0 1: 2.58 V
|
||||
1 0 1 0: 2.48 V
|
||||
1 0 1 1: 2.06 V
|
||||
1 1 0 0: 1.96 V
|
||||
1 1 0 1: 1.86 V
|
||||
b3:b2 Reserved (set to 1)
|
||||
b2 STUPLVD1REN - Startup Voltage Monitoring 1 Reset Enable (1=monitoring disabled)
|
||||
b0 FASTSTUP - Power-On Fast Startup Time (1=normal; read only) */
|
||||
#define OFS1_REG_VALUE (0xFFFFFFFF) //Disable by default
|
||||
|
||||
/* Initializes C input & output library functions.
|
||||
0 = Disable I/O library initialization in resetprg.c. If you are not using stdio then use this value.
|
||||
1 = Enable I/O library initialization in resetprg.c. This is default and needed if you are using stdio. */
|
||||
#define IO_LIB_ENABLE (0)
|
||||
|
||||
#endif /* R_BSP_CONFIG_REF_HEADER_FILE */
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
r_bsp Package
|
||||
=============
|
||||
|
||||
Document Number
|
||||
---------------
|
||||
N/A
|
||||
|
||||
Version
|
||||
-------
|
||||
v1.60
|
||||
|
||||
Overview
|
||||
--------
|
||||
The r_bsp package provides a foundation for code to be built on top of. It provides startup code, iodefines, and MCU
|
||||
information for different boards. There are 2 folders that make up the r_bsp package. The 'mcu' folder has iodefine
|
||||
files and a file named 'mcu_info.h' for each MCU group. The 'mcu_info.h' file has information about the MCU on the board
|
||||
and is configured based on the information given in r_bsp_config.h. The information in 'mcu_info.h' is used to help
|
||||
configure Renesas middleware that uses the r_bsp package. The 'board' folder has a folder with startup code for each
|
||||
supported board. Which MCU and board is chosen is decided by the settings in 'platform.h'. The user can choose which
|
||||
board they are using by uncommenting the include path that applies to their board. For example, if you are using the
|
||||
RSK+RX62N then you would uncomment the #include "./board/rskrx62n/r_bsp.h" include path. Users are encouraged to add
|
||||
their own boards to the 'board' directory. BSPs are configured by using the r_bsp_config.h file. Each board will have a
|
||||
reference configuration file named r_bsp_config_reference.h. The user should copy this file to their project, rename it
|
||||
to r_bsp_config.h, and use the options inside the file to configure the BSP for their project.
|
||||
|
||||
Features
|
||||
--------
|
||||
* Provides foundation to build code on top of.
|
||||
* Provides MCU startup code.
|
||||
* Provides SFR access through iodefine.h
|
||||
* Stores details of MCU in 'mcu_info.h' to help configure Renesas middleware.
|
||||
* Easily configure BSP through r_bsp_config.h.
|
||||
* Choose MCU easily by inputting part number details in r_bsp_config.h.
|
||||
* Provides callbacks for MCU exceptions and the bus error interrupt.
|
||||
|
||||
Limitations
|
||||
-----------
|
||||
N/A
|
||||
|
||||
Peripherals Used Directly
|
||||
-------------------------
|
||||
N/A
|
||||
|
||||
Required Packages
|
||||
-----------------
|
||||
* r_glyph [required if you want to use LCD for RDK boards]
|
||||
* r_rspi_rx [required if you want to use LCD for RDK boards]
|
||||
|
||||
How to add to your project
|
||||
--------------------------
|
||||
* Copy the r_bsp folder to your project.
|
||||
* Add an include path to the 'r_bsp' directory.
|
||||
* Add all of the source files for your board from the 'r_bsp\board\--YOUR_BOARD--' directory to your project.
|
||||
* Uncomment the include path for your board in 'platform.h' which is located in the 'r_bsp' directory.
|
||||
* Copy the file r_bsp_config_reference.h from the 'r_bsp\board\--YOUR_BOARD--' directory and copy it to your project's
|
||||
source code directory. Rename the file r_bsp_config.h.
|
||||
* Open r_bsp_config.h and use the macros to configure the BSP for your project.
|
||||
|
||||
File Structure
|
||||
--------------
|
||||
r_bsp
|
||||
| platform.h (choose which board is being used)
|
||||
| readme.txt
|
||||
|
|
||||
+---board (contains supported boards)
|
||||
| +---rdkrx62n (contains BSP source and header files)
|
||||
| |
|
||||
| +---rdkrx63n
|
||||
| |
|
||||
| +---rskrx111
|
||||
| |
|
||||
| +---rskrx210
|
||||
| |
|
||||
| +---rskrx610
|
||||
| |
|
||||
| +---rskrx62n
|
||||
| |
|
||||
| +---rskrx62t
|
||||
| |
|
||||
| +---rskrx630
|
||||
| |
|
||||
| +---rskrx63n
|
||||
| |
|
||||
| \---user
|
||||
|
|
||||
\---mcu
|
||||
+---rx111 (contains common files to this MCU group, e.g. iodefine.h)
|
||||
|
|
||||
+---rx210
|
||||
|
|
||||
+---rx610
|
||||
|
|
||||
+---rx62n
|
||||
|
|
||||
+---rx62t
|
||||
|
|
||||
+---rx630
|
||||
|
|
||||
\---rx63n
|
||||
|
Binary file not shown.
|
@ -0,0 +1,47 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2011 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : r_switches_config.c
|
||||
* Description : Configures the switches code
|
||||
************************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 17.01.2012 1.00 First Release
|
||||
* : 17.02.2012 1.10 Added RSKRX210 support.
|
||||
* : 08.03.2012 1.20 Added GetVersion() function (though it's really a macro).
|
||||
* : 04.06.2012 1.30 Code can now be interrupt or poll driven.
|
||||
***********************************************************************************************************************/
|
||||
#ifndef SWITCHES_CONFIG_HEADER_FILE
|
||||
#define SWITCHES_CONFIG_HEADER_FILE
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Configuration Options
|
||||
***********************************************************************************************************************/
|
||||
/* This macro sets whether interrupts or polling is used for detecting switch presses. The benefit of using interrupts
|
||||
is that no extra processing is used for polling and the use of a system timer tick is not a requirement. The downside
|
||||
of using interrupts is that callback functions are called from within an interrupt so if your ISR is long then it can
|
||||
degrade the real-time response of your system. The benefit of polling is that functions are called at the application
|
||||
level and debouncing is supported. The downside to polling is that your system must call the R_SWITCHES_Update() on a
|
||||
regular basis which requires extra processing.
|
||||
|
||||
0 = Use interrupts
|
||||
1 = Use polling
|
||||
*/
|
||||
#define SWITCHES_DETECTION_MODE (0)
|
||||
|
||||
#endif /* SWITCHES_CONFIG_HEADER_FILE */
|
|
@ -0,0 +1,72 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2011 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : r_switches_if.h
|
||||
* Description : Functions for using switches with callback functions.
|
||||
************************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 17.01.2012 1.00 First Release
|
||||
* : 17.02.2012 1.10 Added RSKRX210 support.
|
||||
* : 08.03.2012 1.20 Added GetVersion() function (though it's really a macro).
|
||||
* : 04.06.2012 1.30 Code can now be interrupt or poll driven.
|
||||
***********************************************************************************************************************/
|
||||
|
||||
#ifndef SWITCHES_API_HEADER_FILE
|
||||
#define SWITCHES_API_HEADER_FILE
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Includes <System Includes> , "Project Includes"
|
||||
***********************************************************************************************************************/
|
||||
/* Fixed width integer support. */
|
||||
#include <stdint.h>
|
||||
/* Used for configuring the code */
|
||||
#include "r_switches_config.h"
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Macro definitions
|
||||
***********************************************************************************************************************/
|
||||
/* Version Number of API. */
|
||||
#define SWITCHES_VERSION_MAJOR (1)
|
||||
#define SWITCHES_VERSION_MINOR (0)
|
||||
/* The process of getting the version number is done through the macro below. The version number is encoded where the
|
||||
top 2 bytes are the major version number and the bottom 2 bytes are the minor version number. For example,
|
||||
Version 4.25 would be returned as 0x00040019. */
|
||||
#define R_SWITCHES_GetVersion() ((((uint32_t)SWITCHES_VERSION_MAJOR) << 16) | (uint32_t)SWITCHES_VERSION_MINOR)
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Public Functions
|
||||
***********************************************************************************************************************/
|
||||
void R_SWITCHES_Init(void);
|
||||
void R_SWITCHES_Update(void);
|
||||
|
||||
/* Callback prototypes. */
|
||||
#if defined(SW1_CALLBACK_FUNCTION)
|
||||
void SW1_CALLBACK_FUNCTION(void);
|
||||
#endif
|
||||
|
||||
#if defined(SW2_CALLBACK_FUNCTION)
|
||||
void SW2_CALLBACK_FUNCTION(void);
|
||||
#endif
|
||||
|
||||
#if defined(SW3_CALLBACK_FUNCTION)
|
||||
void SW3_CALLBACK_FUNCTION(void);
|
||||
#endif
|
||||
|
||||
#endif /* SWITCHES_API_HEADER_FILE */
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
PLEASE REFER TO THE APPLICATION NOTE FOR THIS MIDDLEWARE FOR MORE INFORMATION
|
||||
|
||||
Switches
|
||||
========
|
||||
|
||||
Document Number
|
||||
---------------
|
||||
N/A
|
||||
|
||||
Version
|
||||
-------
|
||||
v1.40
|
||||
|
||||
Overview
|
||||
--------
|
||||
Configures port pins for switches and calls user defined function on switch press. Switch presses can be detected using
|
||||
IRQ interrupts or by polling. The benefit of using interrupts is that no extra processing is used for polling and the
|
||||
use of a system timer tick is not a requirement. The downside of using interrupts is that callback functions are called
|
||||
from within an interrupt so if your ISR is long then it can degrade the real-time response of your system. The benefit
|
||||
of polling is that functions are called at the application level and debouncing is supported. The downside to polling is
|
||||
that your system must call the R_SWITCHES_Update() on a regular basis which requires extra processing.
|
||||
|
||||
Features
|
||||
--------
|
||||
* Call one function to setup switches.
|
||||
* Define function to call when switch is pressed.
|
||||
* Can be configured to be interrupt or poll driven.
|
||||
|
||||
Supported MCUs
|
||||
--------------
|
||||
* RX610 Group
|
||||
* RX621, RX62N Group
|
||||
* RX62T Group
|
||||
* RX630 Group
|
||||
* RX631, RX63N Group
|
||||
* RX210 Group
|
||||
* RX111 Group
|
||||
|
||||
Boards Tested On
|
||||
----------------
|
||||
* RSKRX610
|
||||
* RSK+RX62N
|
||||
* RSKRX62T
|
||||
* RDKRX62N
|
||||
* RSKRX630
|
||||
* RSKRX63N
|
||||
* RDKRX63N
|
||||
* RSKRX111
|
||||
|
||||
Limitations
|
||||
-----------
|
||||
* None
|
||||
|
||||
Peripherals Used Directly
|
||||
-------------------------
|
||||
* None
|
||||
|
||||
Required Packages
|
||||
-----------------
|
||||
* None
|
||||
|
||||
How to add to your project
|
||||
--------------------------
|
||||
* Add src\r_switches.c to your project.
|
||||
* Add an include path to the 'r_switches' directory.
|
||||
* Add an include path to the 'r_switches\src' directory.
|
||||
* Configure middleware through r_switches_config.h.
|
||||
* Add a #include for r_switches_if.h to files that need to use this package.
|
||||
|
||||
Toolchain(s) Used
|
||||
-----------------
|
||||
* Renesas RX v1.02
|
||||
|
||||
File Structure
|
||||
--------------
|
||||
r_switches
|
||||
| readme.txt
|
||||
| r_switches_config.h
|
||||
| r_switches_if.h
|
||||
|
|
||||
\---src
|
||||
r_switches.c
|
||||
|
|
@ -0,0 +1,232 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2011 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : r_switches.c
|
||||
* Description : Functions for using switches with callback functions.
|
||||
************************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 17.01.2012 1.00 First Release
|
||||
* : 17.02.2012 1.10 Added RSKRX210 support.
|
||||
* : 08.03.2012 1.20 Added GetVersion() function (though it's really a macro).
|
||||
* : 04.06.2012 1.30 Code can now be interrupt or poll driven.
|
||||
* : 07.11.2012 1.40 Added support for RSKRX111
|
||||
***********************************************************************************************************************/
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Includes <System Includes> , "Project Includes"
|
||||
***********************************************************************************************************************/
|
||||
/* Board and MCU support. */
|
||||
#include "platform.h"
|
||||
/* Switches prototypes. */
|
||||
#include "r_switches_if.h"
|
||||
/* Scheduler includes. */
|
||||
#include "FreeRTOS.h"
|
||||
typedef int bool;
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Macro definitions
|
||||
***********************************************************************************************************************/
|
||||
/* This helps reduce the amount of unique code for each supported board. */
|
||||
#define X_IRQ( x ) XX_IRQ( x )
|
||||
#define XX_IRQ( x ) _ICU_IRQ##x
|
||||
|
||||
/* These macros define which IRQ pins are used for the switches. Note that these defintions cannot have parentheses
|
||||
around them. */
|
||||
#if defined(PLATFORM_BOARD_RSKRX111)
|
||||
#define SW1_IRQ_NUMBER 0
|
||||
#define SW2_IRQ_NUMBER 1
|
||||
#define SW3_IRQ_NUMBER 4
|
||||
#else
|
||||
#error This file is only for use on the RX100 RSK
|
||||
#endif
|
||||
|
||||
/* Number of switches on this board. */
|
||||
#define SWITCHES_NUM (3)
|
||||
|
||||
/* Register definitions not yet correct in iodefine.h. */
|
||||
#define MPC_P30PFS_REG ( * ( unsigned char * ) 0x0008C158 )
|
||||
#define MPC_P31PFS_REG ( * ( unsigned char * ) 0x0008C159 )
|
||||
#define MPC_PE4PFS_REG ( * ( unsigned char * ) 0x0008C1B4 )
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Typedef definitions
|
||||
***********************************************************************************************************************/
|
||||
typedef struct
|
||||
{
|
||||
bool active;
|
||||
int32_t debounce_cnt;
|
||||
} switch_t;
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Private global variables and functions
|
||||
***********************************************************************************************************************/
|
||||
#if SWITCHES_DETECTION_MODE == 1
|
||||
/* Update Hz */
|
||||
static uint32_t g_sw_debounce_cnts;
|
||||
/* Used for debounce. */
|
||||
switch_t g_switches[SWITCHES_NUM];
|
||||
#endif
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function Name: R_SWITCHES_Init
|
||||
* Description : Initializes pins to be input and interrupt on switch presses.
|
||||
* Arguments :
|
||||
* Return Value : none
|
||||
***********************************************************************************************************************/
|
||||
|
||||
void R_SWITCHES_Init (void)
|
||||
{
|
||||
/* Unlock protection register */
|
||||
MPC.PWPR.BYTE &= 0x7F;
|
||||
/* Unlock MPC registers */
|
||||
MPC.PWPR.BYTE |= 0x40;
|
||||
|
||||
/* Make switch pins inputs. */
|
||||
PORT3.PDR.BYTE &= 0xFC;
|
||||
PORTE.PDR.BYTE &= 0xEF;
|
||||
|
||||
/* Set port mode registers for switches. */
|
||||
PORT3.PMR.BYTE &= 0xFC;
|
||||
PORTE.PMR.BYTE &= 0xEF;
|
||||
|
||||
MPC_P30PFS_REG = 0x40; /* P30 is used as IRQ pin */
|
||||
MPC_P31PFS_REG = 0x40; /* P31 is used as IRQ pin */
|
||||
MPC_PE4PFS_REG = 0x40; /* PE4 is used as IRQ pin */
|
||||
|
||||
/* Set IRQ type (falling edge) */
|
||||
ICU.IRQCR[ SW1_IRQ_NUMBER ].BYTE = 0x04;
|
||||
ICU.IRQCR[ SW2_IRQ_NUMBER ].BYTE = 0x04;
|
||||
ICU.IRQCR[ SW3_IRQ_NUMBER ].BYTE = 0x04;
|
||||
|
||||
/* Set interrupt priorities, which must be below
|
||||
configMAX_SYSCALL_INTERRUPT_PRIORITY. */
|
||||
_IPR( X_IRQ(SW1_IRQ_NUMBER) ) = configKERNEL_INTERRUPT_PRIORITY;
|
||||
_IPR( X_IRQ(SW2_IRQ_NUMBER) ) = configKERNEL_INTERRUPT_PRIORITY;
|
||||
_IPR( X_IRQ(SW3_IRQ_NUMBER) ) = configKERNEL_INTERRUPT_PRIORITY;
|
||||
|
||||
/* Clear any pending interrupts */
|
||||
_IR( X_IRQ(SW1_IRQ_NUMBER) ) = 0;
|
||||
_IR( X_IRQ(SW2_IRQ_NUMBER) ) = 0;
|
||||
_IR( X_IRQ(SW3_IRQ_NUMBER) ) = 0;
|
||||
|
||||
/* Enable the interrupts */
|
||||
_IEN( X_IRQ(SW1_IRQ_NUMBER) ) = 1;
|
||||
_IEN( X_IRQ(SW2_IRQ_NUMBER) ) = 1;
|
||||
_IEN( X_IRQ(SW3_IRQ_NUMBER) ) = 1;
|
||||
}
|
||||
|
||||
/* If using polling then the user must call the update function. */
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name: R_SWITCHES_Update
|
||||
* Description : Polls switches and calls callback functions as needed. If you are using IRQ mode then this function
|
||||
* is not needed and can be removed if desired. It is left in so that code will not fail when switching
|
||||
* between polling or IRQ mode.
|
||||
* Arguments : none
|
||||
* Return value : none
|
||||
***********************************************************************************************************************/
|
||||
void R_SWITCHES_Update (void)
|
||||
{
|
||||
#if SWITCHES_DETECTION_MODE == 1
|
||||
/* This code is only needed for polling mode. */
|
||||
/* Check switch 1. */
|
||||
if (SW1 == SW_ACTIVE)
|
||||
{
|
||||
if (g_switches[0].active != true)
|
||||
{
|
||||
if (++g_switches[0].debounce_cnt >= g_sw_debounce_cnts)
|
||||
{
|
||||
/* Set this to true so we only call the callback function once per press. */
|
||||
g_switches[0].active = true;
|
||||
|
||||
/* Call callback function. */
|
||||
SW1_CALLBACK_FUNCTION();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (0 == g_switches[0].debounce_cnt)
|
||||
{
|
||||
g_switches[0].active = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_switches[0].debounce_cnt--;
|
||||
}
|
||||
}
|
||||
|
||||
/* Check switch 2. */
|
||||
if (SW2 == SW_ACTIVE)
|
||||
{
|
||||
if (g_switches[1].active != true)
|
||||
{
|
||||
if (++g_switches[1].debounce_cnt >= g_sw_debounce_cnts)
|
||||
{
|
||||
/* Set this to true so we only call the callback function once per press. */
|
||||
g_switches[1].active = true;
|
||||
|
||||
/* Call callback function. */
|
||||
SW2_CALLBACK_FUNCTION();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (0 == g_switches[1].debounce_cnt)
|
||||
{
|
||||
g_switches[1].active = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_switches[1].debounce_cnt--;
|
||||
}
|
||||
}
|
||||
|
||||
/* Check switch 3. */
|
||||
if (SW3 == SW_ACTIVE)
|
||||
{
|
||||
if (g_switches[2].active != true)
|
||||
{
|
||||
if (++g_switches[2].debounce_cnt >= g_sw_debounce_cnts)
|
||||
{
|
||||
/* Set this to true so we only call the callback function once per press. */
|
||||
g_switches[2].active = true;
|
||||
|
||||
/* Call callback function. */
|
||||
SW3_CALLBACK_FUNCTION();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (0 == g_switches[2].debounce_cnt)
|
||||
{
|
||||
g_switches[2].active = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_switches[2].debounce_cnt--;
|
||||
}
|
||||
}
|
||||
#endif /* SWITCHES_DETECTION_MODE */
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue