mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-09-01 11:53:53 -04:00
Preparing for maintenance release -
Bug fix - issue introduced in V8.2.2 when the current timer list is empty and the overflow timer list is not empty. Add PIC32MZ EF (floating point) support and update the MZ demo project to test the flop context switching. Improve efficiency of the stack overflow checking. Add CLI to RX71M demo. General tidy up of new RZ and RX projects - including ensuring the UART driver copes with 0 length strings. Add stack overflow checking to the [old] PIC24 demo.
This commit is contained in:
parent
38cb08133d
commit
57cc3389a5
84 changed files with 4972 additions and 1813 deletions
|
@ -46,6 +46,7 @@
|
|||
<option id="com.renesas.cdt.core.Compiler.option.deviceShortName.339321196" name="DeviceShortName" superClass="com.renesas.cdt.core.Compiler.option.deviceShortName" value="R5F571MLCxFC" valueType="string"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.core.Compiler.option.includeFileDir.1486703917" name="Include file directories" superClass="com.renesas.cdt.core.Compiler.option.includeFileDir" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value=""${TCINSTALL}/rx-elf/optlibinc""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/src/Full_Demo/FreeRTOS-Plus-CLI}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/src/Full_Demo}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/src/Full_Demo/Standard_Demo_Tasks/include}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/src/cg_src}""/>
|
||||
|
@ -120,7 +121,7 @@
|
|||
</toolChain>
|
||||
</folderInfo>
|
||||
<sourceEntries>
|
||||
<entry excluding="cg_src/r_cg_sci_user_iar.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
|
||||
<entry excluding="cg_src/r_cg_intprg_gcc.c|cg_src/r_cg_intprg_iar.c|cg_src/r_cg_sci_user_iar.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
|
||||
</sourceEntries>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
|
|
|
@ -30,11 +30,26 @@
|
|||
<type>2</type>
|
||||
<locationURI>FREERTOS_ROOT/FreeRTOS/Source</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>src/Full_Demo/FreeRTOS-Plus-CLI</name>
|
||||
<type>2</type>
|
||||
<locationURI>FREERTOS_ROOT/FreeRTOS-Plus/Source/FreeRTOS-Plus-CLI</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>src/Full_Demo/Sample-CLI-commands.c</name>
|
||||
<type>1</type>
|
||||
<locationURI>FREERTOS_ROOT/FreeRTOS-Plus/Demo/Common/FreeRTOS_Plus_CLI_Demos/Sample-CLI-commands.c</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>src/Full_Demo/Standard_Demo_Tasks</name>
|
||||
<type>2</type>
|
||||
<locationURI>FREERTOS_ROOT/FreeRTOS/Demo/Common/Minimal</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>src/Full_Demo/UARTCommandConsole.c</name>
|
||||
<type>1</type>
|
||||
<locationURI>FREERTOS_ROOT/FreeRTOS-Plus/Demo/Common/FreeRTOS_Plus_CLI_Demos/UARTCommandConsole.c</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>src/Full_Demo/Standard_Demo_Tasks/include</name>
|
||||
<type>2</type>
|
||||
|
@ -43,7 +58,7 @@
|
|||
</linkedResources>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
<id>1442924121510</id>
|
||||
<id>1444769735116</id>
|
||||
<name></name>
|
||||
<type>10</type>
|
||||
<matcher>
|
||||
|
@ -51,6 +66,69 @@
|
|||
<arguments>1.0-name-matches-false-false-RTOSDemo</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
<filter>
|
||||
<id>1444769735116</id>
|
||||
<name></name>
|
||||
<type>6</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-RTOSDemo.dep</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
<filter>
|
||||
<id>1444769735126</id>
|
||||
<name></name>
|
||||
<type>6</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-RTOSDemo.ewd</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
<filter>
|
||||
<id>1444769735126</id>
|
||||
<name></name>
|
||||
<type>6</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-RTOSDemo.ewp</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
<filter>
|
||||
<id>1444769735126</id>
|
||||
<name></name>
|
||||
<type>6</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-RTOSDemo.ewt</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
<filter>
|
||||
<id>1444769735136</id>
|
||||
<name></name>
|
||||
<type>6</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-RTOSDemo.eww</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
<filter>
|
||||
<id>1444769735136</id>
|
||||
<name></name>
|
||||
<type>10</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-Debug</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
<filter>
|
||||
<id>1444769735146</id>
|
||||
<name></name>
|
||||
<type>10</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-settings</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
<filter>
|
||||
<id>1442756186478</id>
|
||||
<name>src/FreeRTOS_Source</name>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<configuration id="%com.renesas.cdt.rx.hardwaredebug.win32.configuration.Id.363159113" name="HardwareDebug">
|
||||
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
|
||||
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
|
||||
<provider class="com.renesas.cdt.common.build.spec.RXGCCBuiltinSpecsDetector" console="false" env-hash="-1148160698755661085" id="RXGCCBuiltinSpecsDetector" keep-relative-paths="false" name="Renesas GCCBuildinCompilerSettings" options-hash="1142094570" parameter="rx-elf-gcc -E -P -v -dD ${INPUTS}" prefer-non-shared="true">
|
||||
<provider class="com.renesas.cdt.common.build.spec.RXGCCBuiltinSpecsDetector" console="false" env-hash="-117486239217196327" id="RXGCCBuiltinSpecsDetector" keep-relative-paths="false" name="Renesas GCCBuildinCompilerSettings" options-hash="1142094570" parameter="rx-elf-gcc -E -P -v -dD ${INPUTS}" prefer-non-shared="true">
|
||||
<language-scope id="org.eclipse.cdt.core.gcc"/>
|
||||
<language-scope id="org.eclipse.cdt.core.g++"/>
|
||||
</provider>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<stringAttribute key="com.renesas.cdt.core.optionInitCommands" value=""/>
|
||||
<intAttribute key="com.renesas.cdt.core.portNumber" value="61234"/>
|
||||
<stringAttribute key="com.renesas.cdt.core.runCommands" value=""/>
|
||||
<stringAttribute key="com.renesas.cdt.core.serverParam" value="-g E1 -t R5F571ML -p 61234 -d 61236 -uClockSrcHoco= 0 -uInputClock= 27.0000 -uAllowClockSourceInternal= 1 -uUseFine= 0 -uJTagClockFreq= 16.5 -w 0 -z 0 -uRegisterSetting= 0 -uModePin= 0 -uDebugMode= 0 -uExecuteProgram= 0 -uIdCode= FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -b -n 0 -uWorkRamAddress= 1000 -uProgReWriteIRom= 0 -uProgReWriteDFlash= 0 -uPTimerClock= 120000000 -uhookWorkRamAddr= 0x1000 -uhookWorkRamSize= 0x230"/>
|
||||
<stringAttribute key="com.renesas.cdt.core.serverParam" value="-g E1 -t R5F571ML -p 61234 -d 61236 -uClockSrcHoco= 0 -uInputClock= 27.0000 -uAllowClockSourceInternal= 1 -uUseFine= 0 -uJTagClockFreq= 16.5 -w 1 -z 0 -uRegisterSetting= 0 -uModePin= 0 -uDebugMode= 0 -uExecuteProgram= 0 -uIdCode= FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -b -n 0 -uWorkRamAddress= 1000 -uProgReWriteIRom= 0 -uProgReWriteDFlash= 0 -uPTimerClock= 120000000 -uhookWorkRamAddr= 0x1000 -uhookWorkRamSize= 0x230"/>
|
||||
<booleanAttribute key="com.renesas.cdt.core.setResume" value="true"/>
|
||||
<booleanAttribute key="com.renesas.cdt.core.setStopAt" value="true"/>
|
||||
<booleanAttribute key="com.renesas.cdt.core.startServer" value="true"/>
|
||||
|
@ -29,7 +29,7 @@
|
|||
<booleanAttribute key="com.renesas.hardwaredebug.e1.allow.clock.source.internal" value="true"/>
|
||||
<intAttribute key="com.renesas.hardwaredebug.e1.clock_source" value="0"/>
|
||||
<stringAttribute key="com.renesas.hardwaredebug.e1.connection.mode" value="0"/>
|
||||
<booleanAttribute key="com.renesas.hardwaredebug.e1.e1_pwr" value="false"/>
|
||||
<booleanAttribute key="com.renesas.hardwaredebug.e1.e1_pwr" value="true"/>
|
||||
<booleanAttribute key="com.renesas.hardwaredebug.e1.enable.hot.plug" value="false"/>
|
||||
<booleanAttribute key="com.renesas.hardwaredebug.e1.enable_external_flash" value="false"/>
|
||||
<booleanAttribute key="com.renesas.hardwaredebug.e1.execute.program" value="false"/>
|
||||
|
@ -62,7 +62,7 @@
|
|||
<intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.delay" value="3"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doHalt" value="false"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doReset" value="false"/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageFileName" value="C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX700_RX71M_GCC_e2studio\HardwareDebug\RTOSDemo.x"/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageFileName" value="C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX700_RX71M_RSK_GCC_e2studio_IAR\HardwareDebug\RTOSDemo.x"/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageOffset" value=""/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.initCommands" value=""/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadImage" value="true"/>
|
||||
|
@ -73,7 +73,7 @@
|
|||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setResume" value="true"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" value="true"/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.stopAt" value="main"/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsFileName" value="C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX700_RX71M_GCC_e2studio\HardwareDebug\RTOSDemo.x"/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsFileName" value="C:\E\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Demo\RX700_RX71M_RSK_GCC_e2studio_IAR\HardwareDebug\RTOSDemo.x"/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsOffset" value=""/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForImage" value="false"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForSymbols" value="false"/>
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
</option>
|
||||
<option>
|
||||
<name>CRunToEnable</name>
|
||||
<state>0</state>
|
||||
<state>1</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CRunToName</name>
|
||||
|
|
|
@ -76,20 +76,20 @@
|
|||
<option>
|
||||
<name>GenLibInFormatter</name>
|
||||
<version>1</version>
|
||||
<state>1</state>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>GenLibInFormatterDescription</name>
|
||||
<state>Full formatting.</state>
|
||||
<state>Automatic choice of formatter.</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>GenLibOutFormatter</name>
|
||||
<version>1</version>
|
||||
<state>1</state>
|
||||
<state>0</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>GenLibOutFormatterDescription</name>
|
||||
<state>Full formatting.</state>
|
||||
<state>Automatic choice of formatter.</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>GeneralEnableMisra</name>
|
||||
|
@ -255,7 +255,7 @@
|
|||
</option>
|
||||
<option>
|
||||
<name>CCDefines</name>
|
||||
<state></state>
|
||||
<state>__RX</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CCPreprocFile</name>
|
||||
|
@ -329,6 +329,7 @@
|
|||
<state>$PROJ_DIR$\..\..\Source\portable\IAR\RXv2</state>
|
||||
<state>$PROJ_DIR$\..\Common\include</state>
|
||||
<state>$PROJ_DIR$\src\Full_Demo</state>
|
||||
<state>$PROJ_DIR$\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-CLI</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CCStdIncCheck</name>
|
||||
|
@ -1978,6 +1979,12 @@
|
|||
</group>
|
||||
<group>
|
||||
<name>Full_Demo</name>
|
||||
<group>
|
||||
<name>FreeRTOS+CLI</name>
|
||||
<file>
|
||||
<name>$PROJ_DIR$\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-CLI\FreeRTOS_CLI.c</name>
|
||||
</file>
|
||||
</group>
|
||||
<group>
|
||||
<name>Standard_Demo_Tasks</name>
|
||||
<file>
|
||||
|
@ -2035,6 +2042,12 @@
|
|||
<file>
|
||||
<name>$PROJ_DIR$\src\Full_Demo\RegTest_IAR.s</name>
|
||||
</file>
|
||||
<file>
|
||||
<name>$PROJ_DIR$\..\..\..\FreeRTOS-Plus\Demo\Common\FreeRTOS_Plus_CLI_Demos\Sample-CLI-commands.c</name>
|
||||
</file>
|
||||
<file>
|
||||
<name>$PROJ_DIR$\..\..\..\FreeRTOS-Plus\Demo\Common\FreeRTOS_Plus_CLI_Demos\UARTCommandConsole.c</name>
|
||||
</file>
|
||||
</group>
|
||||
<file>
|
||||
<name>$PROJ_DIR$\src\FreeRTOSConfig.h</name>
|
||||
|
@ -2042,6 +2055,9 @@
|
|||
<file>
|
||||
<name>$PROJ_DIR$\src\main.c</name>
|
||||
</file>
|
||||
<file>
|
||||
<name>$PROJ_DIR$\src\cg_src\r_cg_intprg_iar.c</name>
|
||||
</file>
|
||||
<file>
|
||||
<name>$PROJ_DIR$\src\rskrx71mdef.h</name>
|
||||
</file>
|
||||
|
|
|
@ -4,9 +4,9 @@
|
|||
<Desktop>
|
||||
<Static>
|
||||
<Debug-Log>
|
||||
<ColumnWidth0>20</ColumnWidth0>
|
||||
<ColumnWidth1>1622</ColumnWidth1>
|
||||
</Debug-Log>
|
||||
|
||||
|
||||
<ColumnWidth0>20</ColumnWidth0><ColumnWidth1>1622</ColumnWidth1></Debug-Log>
|
||||
<Build>
|
||||
<ColumnWidth0>20</ColumnWidth0>
|
||||
<ColumnWidth1>1216</ColumnWidth1>
|
||||
|
@ -15,31 +15,31 @@
|
|||
</Build>
|
||||
<Workspace>
|
||||
<ColumnWidths>
|
||||
<Column0>255</Column0>
|
||||
<Column1>27</Column1>
|
||||
<Column2>27</Column2>
|
||||
<Column3>27</Column3>
|
||||
</ColumnWidths>
|
||||
|
||||
|
||||
|
||||
|
||||
<Column0>255</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>
|
||||
</Workspace>
|
||||
<Disassembly>
|
||||
<col-names>
|
||||
<item>Disassembly</item>
|
||||
<item>_I0</item>
|
||||
</col-names>
|
||||
|
||||
|
||||
<item>Disassembly</item><item>_I0</item></col-names>
|
||||
<col-widths>
|
||||
<item>500</item>
|
||||
<item>20</item>
|
||||
</col-widths>
|
||||
|
||||
|
||||
<item>500</item><item>20</item></col-widths>
|
||||
<DisasmHistory/>
|
||||
<PreferedWindows>
|
||||
<Position>2</Position>
|
||||
<ScreenPosX>0</ScreenPosX>
|
||||
<ScreenPosY>0</ScreenPosY>
|
||||
<Windows/>
|
||||
</PreferedWindows>
|
||||
<ShowCodeCoverage>1</ShowCodeCoverage>
|
||||
<ShowInstrProfiling>1</ShowInstrProfiling>
|
||||
</Disassembly>
|
||||
|
||||
|
||||
|
||||
|
||||
<Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows>
|
||||
|
||||
|
||||
<ShowCodeCoverage>1</ShowCodeCoverage><ShowInstrProfiling>1</ShowInstrProfiling></Disassembly>
|
||||
<Register>
|
||||
<PreferedWindows>
|
||||
<Position>2</Position>
|
||||
|
@ -48,9 +48,11 @@
|
|||
<Windows/>
|
||||
</PreferedWindows>
|
||||
</Register>
|
||||
</Static>
|
||||
<Find-in-Files><ColumnWidth0>497</ColumnWidth0><ColumnWidth1>82</ColumnWidth1><ColumnWidth2>746</ColumnWidth2><ColumnWidth3>331</ColumnWidth3></Find-in-Files><CallStack><PreferedWindows><Position>1</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><col-names><item>Frame</item><item>_I0</item></col-names><col-widths><item>3500</item><item>20</item></col-widths></CallStack><WATCH_1><PreferedWindows><Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><expressions><item/></expressions><col-names><item>Expression</item><item>Location</item><item>Type</item><item>Value</item></col-names><col-widths><item>100</item><item>150</item><item>100</item><item>100</item></col-widths></WATCH_1></Static>
|
||||
<Windows>
|
||||
<Wnd1>
|
||||
|
||||
|
||||
<Wnd3>
|
||||
<Tabs>
|
||||
<Tab>
|
||||
<Identity>TabID-6594-3339</Identity>
|
||||
|
@ -64,180 +66,34 @@
|
|||
<Factory>Build</Factory>
|
||||
<Session/>
|
||||
</Tab>
|
||||
</Tabs>
|
||||
<SelectedTab>0</SelectedTab>
|
||||
</Wnd1>
|
||||
<Wnd4>
|
||||
<Tab><Identity>TabID-19467-29965</Identity><TabName>Find in Files</TabName><Factory>Find-in-Files</Factory><Session/></Tab></Tabs>
|
||||
|
||||
<SelectedTab>0</SelectedTab></Wnd3><Wnd4>
|
||||
<Tabs>
|
||||
<Tab>
|
||||
<Identity>TabID-17343-3342</Identity>
|
||||
<TabName>Workspace</TabName>
|
||||
<Factory>Workspace</Factory>
|
||||
<Session>
|
||||
<NodeDict>
|
||||
<ExpandedNode>RTOSDemo</ExpandedNode>
|
||||
</NodeDict>
|
||||
</Session>
|
||||
|
||||
<NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/FreeRTOS_Source</ExpandedNode><ExpandedNode>RTOSDemo/Full_Demo</ExpandedNode><ExpandedNode>RTOSDemo/cg_src</ExpandedNode></NodeDict></Session>
|
||||
</Tab>
|
||||
</Tabs>
|
||||
<SelectedTab>0</SelectedTab>
|
||||
</Wnd4>
|
||||
</Windows>
|
||||
|
||||
<SelectedTab>0</SelectedTab></Wnd4><Wnd5><Tabs><Tab><Identity>TabID-15169-30612</Identity><TabName>Disassembly</TabName><Factory>Disassembly</Factory><Session/></Tab></Tabs><SelectedTab>0</SelectedTab></Wnd5></Windows>
|
||||
<Editor>
|
||||
<Pane>
|
||||
<Tab>
|
||||
<Factory>TextEditor</Factory>
|
||||
<Filename>$WS_DIR$\src\main.c</Filename>
|
||||
<XPos>0</XPos>
|
||||
<YPos>0</YPos>
|
||||
<SelStart>0</SelStart>
|
||||
<SelEnd>0</SelEnd>
|
||||
<XPos2>0</XPos2>
|
||||
<YPos2>66</YPos2>
|
||||
<SelStart2>5312</SelStart2>
|
||||
<SelEnd2>5312</SelEnd2>
|
||||
</Tab>
|
||||
<Tab>
|
||||
<Factory>TextEditor</Factory>
|
||||
<Filename>$WS_DIR$\src\Full_Demo\RegTest_IAR.s</Filename>
|
||||
<XPos>0</XPos>
|
||||
<YPos>0</YPos>
|
||||
<SelStart>0</SelStart>
|
||||
<SelEnd>0</SelEnd>
|
||||
<XPos2>0</XPos2>
|
||||
<YPos2>144</YPos2>
|
||||
<SelStart2>5881</SelStart2>
|
||||
<SelEnd2>5881</SelEnd2>
|
||||
</Tab>
|
||||
<Tab>
|
||||
<Factory>TextEditor</Factory>
|
||||
<Filename>$WS_DIR$\..\Common\Minimal\flop.c</Filename>
|
||||
<XPos>0</XPos>
|
||||
<YPos>0</YPos>
|
||||
<SelStart>0</SelStart>
|
||||
<SelEnd>0</SelEnd>
|
||||
<XPos2>0</XPos2>
|
||||
<YPos2>126</YPos2>
|
||||
<SelStart2>6956</SelStart2>
|
||||
<SelEnd2>6956</SelEnd2>
|
||||
</Tab>
|
||||
<Tab>
|
||||
<Factory>TextEditor</Factory>
|
||||
<Filename>$WS_DIR$\..\Common\Minimal\TimerDemo.c</Filename>
|
||||
<XPos>0</XPos>
|
||||
<YPos>0</YPos>
|
||||
<SelStart>0</SelStart>
|
||||
<SelEnd>0</SelEnd>
|
||||
<XPos2>0</XPos2>
|
||||
<YPos2>242</YPos2>
|
||||
<SelStart2>12612</SelStart2>
|
||||
<SelEnd2>12612</SelEnd2>
|
||||
</Tab>
|
||||
<Tab>
|
||||
<Factory>TextEditor</Factory>
|
||||
<Filename>$WS_DIR$\..\Common\Minimal\IntQueue.c</Filename>
|
||||
<XPos>0</XPos>
|
||||
<YPos>0</YPos>
|
||||
<SelStart>0</SelStart>
|
||||
<SelEnd>0</SelEnd>
|
||||
<XPos2>0</XPos2>
|
||||
<YPos2>381</YPos2>
|
||||
<SelStart2>0</SelStart2>
|
||||
<SelEnd2>0</SelEnd2>
|
||||
</Tab>
|
||||
<Tab>
|
||||
<Factory>TextEditor</Factory>
|
||||
<Filename>$WS_DIR$\src\Full_Demo\IntQueueTimer.c</Filename>
|
||||
<XPos>0</XPos>
|
||||
<YPos>0</YPos>
|
||||
<SelStart>0</SelStart>
|
||||
<SelEnd>0</SelEnd>
|
||||
<XPos2>0</XPos2>
|
||||
<YPos2>154</YPos2>
|
||||
<SelStart2>7349</SelStart2>
|
||||
<SelEnd2>7349</SelEnd2>
|
||||
</Tab>
|
||||
<ActiveTab>5</ActiveTab>
|
||||
</Pane>
|
||||
<ActivePane>0</ActivePane>
|
||||
<Sizes>
|
||||
<Pane>
|
||||
<X>1000000</X>
|
||||
<Y>1000000</Y>
|
||||
</Pane>
|
||||
</Sizes>
|
||||
<SplitMode>1</SplitMode>
|
||||
</Editor>
|
||||
|
||||
|
||||
|
||||
|
||||
<Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\src\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>112</YPos2><SelStart2>6366</SelStart2><SelEnd2>6366</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\src\FreeRTOSConfig.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>61</YPos2><SelStart2>4905</SelStart2><SelEnd2>4905</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\src\cg_src\r_cg_sci_user_iar.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>309</YPos2><SelStart2>14485</SelStart2><SelEnd2>14485</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\src\cg_src\r_cg_sci.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>163</YPos2><SelStart2>8761</SelStart2><SelEnd2>8761</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\Source\tasks.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>1670</YPos2><SelStart2>60105</SelStart2><SelEnd2>60105</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\src\Full_Demo\main_full.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>390</YPos2><SelStart2>16934</SelStart2><SelEnd2>16934</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\..\FreeRTOS-Plus\Demo\Common\FreeRTOS_Plus_CLI_Demos\Sample-CLI-commands.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>401</YPos2><SelStart2>0</SelStart2><SelEnd2>0</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\..\FreeRTOS-Plus\Demo\Common\FreeRTOS_Plus_CLI_Demos\UARTCommandConsole.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>187</YPos2><SelStart2>8728</SelStart2><SelEnd2>8728</SelEnd2></Tab><ActiveTab>7</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
|
||||
<Positions>
|
||||
<Top>
|
||||
<Row0>
|
||||
<Sizes>
|
||||
<Toolbar-026E7B08>
|
||||
<key>iaridepm.enu1</key>
|
||||
</Toolbar-026E7B08>
|
||||
</Sizes>
|
||||
</Row0>
|
||||
<Row1>
|
||||
<Sizes>
|
||||
<Toolbar-1DFB9BD8>
|
||||
<key>debuggergui.enu1</key>
|
||||
</Toolbar-1DFB9BD8>
|
||||
</Sizes>
|
||||
</Row1>
|
||||
</Top>
|
||||
<Left>
|
||||
<Row0>
|
||||
<Sizes>
|
||||
<Wnd4>
|
||||
<Rect>
|
||||
<Top>-2</Top>
|
||||
<Left>-2</Left>
|
||||
<Bottom>718</Bottom>
|
||||
<Right>329</Right>
|
||||
<x>-2</x>
|
||||
<y>-2</y>
|
||||
<xscreen>200</xscreen>
|
||||
<yscreen>200</yscreen>
|
||||
<sizeHorzCX>119048</sizeHorzCX>
|
||||
<sizeHorzCY>203252</sizeHorzCY>
|
||||
<sizeVertCX>197024</sizeVertCX>
|
||||
<sizeVertCY>731707</sizeVertCY>
|
||||
</Rect>
|
||||
</Wnd4>
|
||||
</Sizes>
|
||||
</Row0>
|
||||
</Left>
|
||||
<Right>
|
||||
<Row0>
|
||||
<Sizes/>
|
||||
</Row0>
|
||||
</Right>
|
||||
<Bottom>
|
||||
<Row0>
|
||||
<Sizes>
|
||||
<Wnd1>
|
||||
<Rect>
|
||||
<Top>-2</Top>
|
||||
<Left>-2</Left>
|
||||
<Bottom>198</Bottom>
|
||||
<Right>1682</Right>
|
||||
<x>-2</x>
|
||||
<y>-2</y>
|
||||
<xscreen>1684</xscreen>
|
||||
<yscreen>200</yscreen>
|
||||
<sizeHorzCX>1002381</sizeHorzCX>
|
||||
<sizeHorzCY>203252</sizeHorzCY>
|
||||
<sizeVertCX>119048</sizeVertCX>
|
||||
<sizeVertCY>203252</sizeVertCY>
|
||||
</Rect>
|
||||
</Wnd1>
|
||||
</Sizes>
|
||||
</Row0>
|
||||
</Bottom>
|
||||
<Float>
|
||||
<Sizes/>
|
||||
</Float>
|
||||
</Positions>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<Top><Row0><Sizes><Toolbar-026C81F0><key>iaridepm.enu1</key></Toolbar-026C81F0></Sizes></Row0><Row1><Sizes><Toolbar-1B927300><key>debuggergui.enu1</key></Toolbar-1B927300></Sizes></Row1><Row2><Sizes/></Row2></Top><Left><Row0><Sizes><Wnd4><Rect><Top>-2</Top><Left>-2</Left><Bottom>718</Bottom><Right>329</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203252</sizeHorzCY><sizeVertCX>197024</sizeVertCX><sizeVertCY>731707</sizeVertCY></Rect></Wnd4></Sizes></Row0></Left><Right><Row0><Sizes><Wnd5><Rect><Top>-2</Top><Left>-2</Left><Bottom>718</Bottom><Right>198</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203252</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>731707</sizeVertCY></Rect></Wnd5></Sizes></Row0></Right><Bottom><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>198</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>200</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>203252</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>203252</sizeVertCY></Rect></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
|
||||
</Desktop>
|
||||
</Project>
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[DebugChecksum]
|
||||
Checksum=-126027898
|
||||
Checksum=-1340739960
|
||||
[CodeCoverage]
|
||||
Enabled=_ 0
|
||||
[Stack]
|
||||
|
@ -53,116 +53,116 @@ PinMode=0
|
|||
RegMode=0
|
||||
Endian=0
|
||||
ExtMemBlockNum=55
|
||||
ExtMemEndian_000=0
|
||||
ExtMemCondAccess_000=0
|
||||
ExtMemEndian_001=0
|
||||
ExtMemCondAccess_001=0
|
||||
ExtMemEndian_002=0
|
||||
ExtMemCondAccess_002=0
|
||||
ExtMemEndian_003=0
|
||||
ExtMemCondAccess_003=0
|
||||
ExtMemEndian_004=0
|
||||
ExtMemCondAccess_004=0
|
||||
ExtMemEndian_005=0
|
||||
ExtMemCondAccess_005=0
|
||||
ExtMemEndian_006=0
|
||||
ExtMemCondAccess_006=0
|
||||
ExtMemEndian_007=0
|
||||
ExtMemCondAccess_007=0
|
||||
ExtMemEndian_008=0
|
||||
ExtMemCondAccess_008=0
|
||||
ExtMemEndian_009=0
|
||||
ExtMemCondAccess_009=0
|
||||
ExtMemEndian_010=0
|
||||
ExtMemCondAccess_010=0
|
||||
ExtMemEndian_011=0
|
||||
ExtMemCondAccess_011=0
|
||||
ExtMemEndian_012=0
|
||||
ExtMemCondAccess_012=0
|
||||
ExtMemEndian_013=0
|
||||
ExtMemCondAccess_013=0
|
||||
ExtMemEndian_014=0
|
||||
ExtMemCondAccess_014=0
|
||||
ExtMemEndian_015=0
|
||||
ExtMemCondAccess_015=0
|
||||
ExtMemEndian_016=0
|
||||
ExtMemCondAccess_016=0
|
||||
ExtMemEndian_017=0
|
||||
ExtMemCondAccess_017=0
|
||||
ExtMemEndian_018=0
|
||||
ExtMemCondAccess_018=0
|
||||
ExtMemEndian_019=0
|
||||
ExtMemCondAccess_019=0
|
||||
ExtMemEndian_020=0
|
||||
ExtMemCondAccess_020=0
|
||||
ExtMemEndian_021=0
|
||||
ExtMemCondAccess_021=0
|
||||
ExtMemEndian_022=0
|
||||
ExtMemCondAccess_022=0
|
||||
ExtMemEndian_023=0
|
||||
ExtMemCondAccess_023=0
|
||||
ExtMemEndian_024=0
|
||||
ExtMemCondAccess_024=0
|
||||
ExtMemEndian_025=0
|
||||
ExtMemCondAccess_025=0
|
||||
ExtMemEndian_026=0
|
||||
ExtMemCondAccess_026=0
|
||||
ExtMemEndian_027=0
|
||||
ExtMemCondAccess_027=0
|
||||
ExtMemEndian_028=0
|
||||
ExtMemCondAccess_028=0
|
||||
ExtMemEndian_029=0
|
||||
ExtMemCondAccess_029=0
|
||||
ExtMemEndian_030=0
|
||||
ExtMemCondAccess_030=0
|
||||
ExtMemEndian_031=0
|
||||
ExtMemCondAccess_031=0
|
||||
ExtMemEndian_032=0
|
||||
ExtMemCondAccess_032=0
|
||||
ExtMemEndian_033=0
|
||||
ExtMemCondAccess_033=0
|
||||
ExtMemEndian_034=0
|
||||
ExtMemCondAccess_034=0
|
||||
ExtMemEndian_035=0
|
||||
ExtMemCondAccess_035=0
|
||||
ExtMemEndian_036=0
|
||||
ExtMemCondAccess_036=0
|
||||
ExtMemEndian_037=0
|
||||
ExtMemCondAccess_037=0
|
||||
ExtMemEndian_038=0
|
||||
ExtMemCondAccess_038=0
|
||||
ExtMemEndian_039=0
|
||||
ExtMemCondAccess_039=0
|
||||
ExtMemEndian_040=0
|
||||
ExtMemCondAccess_040=0
|
||||
ExtMemEndian_041=0
|
||||
ExtMemCondAccess_041=0
|
||||
ExtMemEndian_042=0
|
||||
ExtMemCondAccess_042=0
|
||||
ExtMemEndian_043=0
|
||||
ExtMemCondAccess_043=0
|
||||
ExtMemEndian_044=0
|
||||
ExtMemCondAccess_044=0
|
||||
ExtMemEndian_045=0
|
||||
ExtMemCondAccess_045=0
|
||||
ExtMemEndian_046=0
|
||||
ExtMemCondAccess_046=0
|
||||
ExtMemEndian_047=0
|
||||
ExtMemCondAccess_047=0
|
||||
ExtMemEndian_048=0
|
||||
ExtMemCondAccess_048=0
|
||||
ExtMemEndian_049=0
|
||||
ExtMemCondAccess_049=0
|
||||
ExtMemEndian_050=0
|
||||
ExtMemCondAccess_050=0
|
||||
ExtMemEndian_051=0
|
||||
ExtMemCondAccess_051=0
|
||||
ExtMemEndian_052=0
|
||||
ExtMemCondAccess_052=0
|
||||
ExtMemEndian_053=0
|
||||
ExtMemCondAccess_053=0
|
||||
ExtMemEndian_054=0
|
||||
ExtMemCondAccess_054=0
|
||||
ExtMemEndian_000=0
|
||||
ExtMemCondAccess_000=0
|
||||
ExtMemEndian_001=0
|
||||
ExtMemCondAccess_001=0
|
||||
ExtMemEndian_002=0
|
||||
ExtMemCondAccess_002=0
|
||||
ExtMemEndian_003=0
|
||||
ExtMemCondAccess_003=0
|
||||
ExtMemEndian_004=0
|
||||
ExtMemCondAccess_004=0
|
||||
ExtMemEndian_005=0
|
||||
ExtMemCondAccess_005=0
|
||||
ExtMemEndian_006=0
|
||||
ExtMemCondAccess_006=0
|
||||
ExtMemEndian_007=0
|
||||
ExtMemCondAccess_007=0
|
||||
ExtMemEndian_008=0
|
||||
ExtMemCondAccess_008=0
|
||||
ExtMemEndian_009=0
|
||||
ExtMemCondAccess_009=0
|
||||
ExtMemEndian_010=0
|
||||
ExtMemCondAccess_010=0
|
||||
ExtMemEndian_011=0
|
||||
ExtMemCondAccess_011=0
|
||||
ExtMemEndian_012=0
|
||||
ExtMemCondAccess_012=0
|
||||
ExtMemEndian_013=0
|
||||
ExtMemCondAccess_013=0
|
||||
ExtMemEndian_014=0
|
||||
ExtMemCondAccess_014=0
|
||||
ExtMemEndian_015=0
|
||||
ExtMemCondAccess_015=0
|
||||
ExtMemEndian_016=0
|
||||
ExtMemCondAccess_016=0
|
||||
ExtMemEndian_017=0
|
||||
ExtMemCondAccess_017=0
|
||||
ExtMemEndian_018=0
|
||||
ExtMemCondAccess_018=0
|
||||
ExtMemEndian_019=0
|
||||
ExtMemCondAccess_019=0
|
||||
ExtMemEndian_020=0
|
||||
ExtMemCondAccess_020=0
|
||||
ExtMemEndian_021=0
|
||||
ExtMemCondAccess_021=0
|
||||
ExtMemEndian_022=0
|
||||
ExtMemCondAccess_022=0
|
||||
ExtMemEndian_023=0
|
||||
ExtMemCondAccess_023=0
|
||||
ExtMemEndian_024=0
|
||||
ExtMemCondAccess_024=0
|
||||
ExtMemEndian_025=0
|
||||
ExtMemCondAccess_025=0
|
||||
ExtMemEndian_026=0
|
||||
ExtMemCondAccess_026=0
|
||||
ExtMemEndian_027=0
|
||||
ExtMemCondAccess_027=0
|
||||
ExtMemEndian_028=0
|
||||
ExtMemCondAccess_028=0
|
||||
ExtMemEndian_029=0
|
||||
ExtMemCondAccess_029=0
|
||||
ExtMemEndian_030=0
|
||||
ExtMemCondAccess_030=0
|
||||
ExtMemEndian_031=0
|
||||
ExtMemCondAccess_031=0
|
||||
ExtMemEndian_032=0
|
||||
ExtMemCondAccess_032=0
|
||||
ExtMemEndian_033=0
|
||||
ExtMemCondAccess_033=0
|
||||
ExtMemEndian_034=0
|
||||
ExtMemCondAccess_034=0
|
||||
ExtMemEndian_035=0
|
||||
ExtMemCondAccess_035=0
|
||||
ExtMemEndian_036=0
|
||||
ExtMemCondAccess_036=0
|
||||
ExtMemEndian_037=0
|
||||
ExtMemCondAccess_037=0
|
||||
ExtMemEndian_038=0
|
||||
ExtMemCondAccess_038=0
|
||||
ExtMemEndian_039=0
|
||||
ExtMemCondAccess_039=0
|
||||
ExtMemEndian_040=0
|
||||
ExtMemCondAccess_040=0
|
||||
ExtMemEndian_041=0
|
||||
ExtMemCondAccess_041=0
|
||||
ExtMemEndian_042=0
|
||||
ExtMemCondAccess_042=0
|
||||
ExtMemEndian_043=0
|
||||
ExtMemCondAccess_043=0
|
||||
ExtMemEndian_044=0
|
||||
ExtMemCondAccess_044=0
|
||||
ExtMemEndian_045=0
|
||||
ExtMemCondAccess_045=0
|
||||
ExtMemEndian_046=0
|
||||
ExtMemCondAccess_046=0
|
||||
ExtMemEndian_047=0
|
||||
ExtMemCondAccess_047=0
|
||||
ExtMemEndian_048=0
|
||||
ExtMemCondAccess_048=0
|
||||
ExtMemEndian_049=0
|
||||
ExtMemCondAccess_049=0
|
||||
ExtMemEndian_050=0
|
||||
ExtMemCondAccess_050=0
|
||||
ExtMemEndian_051=0
|
||||
ExtMemCondAccess_051=0
|
||||
ExtMemEndian_052=0
|
||||
ExtMemCondAccess_052=0
|
||||
ExtMemEndian_053=0
|
||||
ExtMemCondAccess_053=0
|
||||
ExtMemEndian_054=0
|
||||
ExtMemCondAccess_054=0
|
||||
InputClock=25.000000
|
||||
ICLK=240.000000
|
||||
AllowClkSrcChange=0
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
|
||||
|
||||
<Column0>310</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>
|
||||
<Column0>326</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>
|
||||
</Workspace>
|
||||
<Build>
|
||||
|
||||
|
@ -25,7 +25,7 @@
|
|||
<ColumnWidth0>20</ColumnWidth0>
|
||||
<ColumnWidth1>1622</ColumnWidth1>
|
||||
</Debug-Log>
|
||||
</Static>
|
||||
<Find-in-Files><ColumnWidth0>497</ColumnWidth0><ColumnWidth1>82</ColumnWidth1><ColumnWidth2>746</ColumnWidth2><ColumnWidth3>331</ColumnWidth3></Find-in-Files></Static>
|
||||
<Windows>
|
||||
|
||||
|
||||
|
@ -37,7 +37,7 @@
|
|||
<Factory>Workspace</Factory>
|
||||
<Session>
|
||||
|
||||
<NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/Blinky_Demo</ExpandedNode><ExpandedNode>RTOSDemo/FreeRTOS_Source</ExpandedNode><ExpandedNode>RTOSDemo/FreeRTOS_Source/portable</ExpandedNode><ExpandedNode>RTOSDemo/Full_Demo</ExpandedNode><ExpandedNode>RTOSDemo/Full_Demo/Standard_Demo_Tasks</ExpandedNode><ExpandedNode>RTOSDemo/cg_src</ExpandedNode></NodeDict></Session>
|
||||
<NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/Full_Demo</ExpandedNode><ExpandedNode>RTOSDemo/Full_Demo/FreeRTOS+CLI</ExpandedNode><ExpandedNode>RTOSDemo/cg_src</ExpandedNode></NodeDict></Session>
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
|
@ -55,7 +55,7 @@
|
|||
<Factory>Debug-Log</Factory>
|
||||
<Session/>
|
||||
</Tab>
|
||||
</Tabs>
|
||||
<Tab><Identity>TabID-17690-32046</Identity><TabName>Find in Files</TabName><Factory>Find-in-Files</Factory><Session/></Tab></Tabs>
|
||||
|
||||
<SelectedTab>0</SelectedTab></Wnd3></Windows>
|
||||
<Editor>
|
||||
|
@ -63,14 +63,14 @@
|
|||
|
||||
|
||||
|
||||
<Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\src\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>66</YPos2><SelStart2>5312</SelStart2><SelEnd2>5312</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\src\Full_Demo\RegTest_IAR.s</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>144</YPos2><SelStart2>5881</SelStart2><SelEnd2>5881</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\Common\Minimal\flop.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>126</YPos2><SelStart2>6956</SelStart2><SelEnd2>6956</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\Common\Minimal\TimerDemo.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>242</YPos2><SelStart2>12612</SelStart2><SelEnd2>12612</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\Common\Minimal\IntQueue.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>381</YPos2><SelStart2>0</SelStart2><SelEnd2>0</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\src\Full_Demo\IntQueueTimer.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>142</YPos2><SelStart2>7349</SelStart2><SelEnd2>7349</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\Source\portable\IAR\RXv2\port.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>61</YPos2><SelStart2>4241</SelStart2><SelEnd2>4241</SelEnd2></Tab><ActiveTab>6</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
|
||||
<Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\src\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>67</YPos2><SelStart2>0</SelStart2><SelEnd2>0</SelEnd2></Tab><ActiveTab>0</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
|
||||
<Positions>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<Top><Row0><Sizes><Toolbar-00887B08><key>iaridepm.enu1</key></Toolbar-00887B08></Sizes></Row0></Top><Left><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>742</Bottom><Right>400</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>203252</sizeHorzCY><sizeVertCX>239286</sizeVertCX><sizeVertCY>756098</sizeVertCY></Rect></Wnd2></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>198</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>200</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>203252</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>203252</sizeVertCY></Rect></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
|
||||
<Top><Row0><Sizes><Toolbar-0106A4B8><key>iaridepm.enu1</key></Toolbar-0106A4B8></Sizes></Row0></Top><Left><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>741</Bottom><Right>400</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>201</yscreen><sizeHorzCX>119048</sizeHorzCX><sizeHorzCY>204268</sizeHorzCY><sizeVertCX>239286</sizeVertCX><sizeVertCY>755081</sizeVertCY></Rect></Wnd2></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>199</Bottom><Right>1682</Right><x>-2</x><y>-2</y><xscreen>1684</xscreen><yscreen>201</yscreen><sizeHorzCX>1002381</sizeHorzCX><sizeHorzCY>204268</sizeHorzCY><sizeVertCX>119048</sizeVertCX><sizeVertCY>204268</sizeVertCY></Rect></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
|
||||
</Desktop>
|
||||
</Workspace>
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[MainWindow]
|
||||
WindowPlacement=_ 519 0 1619 872 3
|
||||
WindowPlacement=_ 250 0 1350 872 3
|
||||
|
|
|
@ -84,24 +84,14 @@
|
|||
*
|
||||
* The Queue Send Task:
|
||||
* The queue send task is implemented by the prvQueueSendTask() function in
|
||||
* this file. prvQueueSendTask() sits in a loop that causes it to repeatedly
|
||||
* block for 200 milliseconds, before sending the value 100 to the queue that
|
||||
* was created within main_blinky(). Once the value is sent, the task loops
|
||||
* back around to block for another 200 milliseconds...and so on.
|
||||
* this file. It sends the value 100 to the queue every 200 milliseconds.
|
||||
*
|
||||
* The Queue Receive Task:
|
||||
* The queue receive task is implemented by the prvQueueReceiveTask() function
|
||||
* in this file. prvQueueReceiveTask() sits in a loop where it repeatedly
|
||||
* blocks on attempts to read data from the queue that was created within
|
||||
* main_blinky(). When data is received, the task checks the value of the
|
||||
* data, and if the value equals the expected 100, toggles an LED. The 'block
|
||||
* time' parameter passed to the queue receive function specifies that the
|
||||
* task should be held in the Blocked state indefinitely to wait for data to
|
||||
* be available on the queue. The queue receive task will only leave the
|
||||
* Blocked state when the queue send task writes to the queue. As the queue
|
||||
* send task writes to the queue every 200 milliseconds, the queue receive
|
||||
* task leaves the Blocked state every 200 milliseconds, and therefore toggles
|
||||
* the LED every 200 milliseconds.
|
||||
* in this file. It blocks on the queue to wait for data to arrive from the
|
||||
* queue send task - toggling the LED each time it receives the value 100. The
|
||||
* queue send task writes to the queue every 200ms, so the LED should toggle
|
||||
* every 200ms.
|
||||
*/
|
||||
|
||||
/* Kernel includes. */
|
||||
|
@ -120,7 +110,7 @@
|
|||
|
||||
/* The rate at which data is sent to the queue. The 200ms value is converted
|
||||
to ticks using the portTICK_PERIOD_MS constant. */
|
||||
#define mainQUEUE_SEND_FREQUENCY_MS ( 200 / portTICK_PERIOD_MS )
|
||||
#define mainQUEUE_SEND_FREQUENCY_MS ( pdMS_TO_TICKS( 200UL ) )
|
||||
|
||||
/* The number of items the queue can hold. This is 1 as the receive task
|
||||
will remove items as they are added, meaning the send task should always find
|
||||
|
|
|
@ -95,11 +95,11 @@
|
|||
#define configUSE_PREEMPTION 1
|
||||
#define configUSE_IDLE_HOOK 1
|
||||
#define configUSE_TICK_HOOK 1
|
||||
#define configCPU_CLOCK_HZ ( 120000000UL ) /*_RB_ guess*/
|
||||
#define configPERIPHERAL_CLOCK_HZ ( 60000000UL ) /*_RB_ guess*/
|
||||
#define configCPU_CLOCK_HZ ( 120000000UL )
|
||||
#define configPERIPHERAL_CLOCK_HZ ( 60000000UL )
|
||||
#define configTICK_RATE_HZ ( ( TickType_t ) 1000 )
|
||||
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 140 )
|
||||
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 40 * 1024 ) )
|
||||
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 120 )
|
||||
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 50 * 1024 ) )
|
||||
#define configMAX_TASK_NAME_LEN ( 12 )
|
||||
#define configUSE_TRACE_FACILITY 1
|
||||
#define configUSE_16_BIT_TICKS 0
|
||||
|
@ -117,6 +117,12 @@
|
|||
#define configMAX_PRIORITIES ( 7 )
|
||||
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
|
||||
|
||||
/* This demo makes use of one or more example stats formatting functions. These
|
||||
format the raw data provided by the uxTaskGetSystemState() function in to human
|
||||
readable ASCII form. See the notes in the implementation of vTaskList() within
|
||||
FreeRTOS/Source/tasks.c for limitations. */
|
||||
#define configUSE_STATS_FORMATTING_FUNCTIONS 1
|
||||
|
||||
/* Software timer definitions. */
|
||||
#define configUSE_TIMERS 1
|
||||
#define configTIMER_TASK_PRIORITY ( configMAX_PRIORITIES - 1 )
|
||||
|
@ -152,9 +158,14 @@ to exclude the API function. */
|
|||
#define INCLUDE_eTaskGetState 1
|
||||
#define INCLUDE_xTimerPendFunctionCall 1
|
||||
|
||||
void vAssertCalled( void );
|
||||
#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); }
|
||||
|
||||
/* The buffer into which output generated by FreeRTOS+CLI is placed. This must
|
||||
be at least big enough to contain the output of the task-stats command, as the
|
||||
example implementation does not include buffer overlow checking. */
|
||||
#define configCOMMAND_INT_MAX_OUTPUT_SIZE 3500
|
||||
#define configINCLUDE_QUERY_HEAP_COMMAND 1
|
||||
|
||||
/* Override some of the priorities set in the common demo tasks. This is
|
||||
required to ensure flase positive timing errors are not reported. */
|
||||
#define bktPRIMARY_PRIORITY ( configMAX_PRIORITIES - 3 )
|
||||
|
@ -162,28 +173,4 @@ required to ensure flase positive timing errors are not reported. */
|
|||
#define intqHIGHER_PRIORITY ( configMAX_PRIORITIES - 3 )
|
||||
|
||||
|
||||
/*-----------------------------------------------------------
|
||||
* Ethernet configuration.
|
||||
*-----------------------------------------------------------*/
|
||||
|
||||
/* MAC address configuration. */
|
||||
#define configMAC_ADDR0 0x00
|
||||
#define configMAC_ADDR1 0x12
|
||||
#define configMAC_ADDR2 0x13
|
||||
#define configMAC_ADDR3 0x10
|
||||
#define configMAC_ADDR4 0x15
|
||||
#define configMAC_ADDR5 0x11
|
||||
|
||||
/* IP address configuration. */
|
||||
#define configIP_ADDR0 192
|
||||
#define configIP_ADDR1 168
|
||||
#define configIP_ADDR2 0
|
||||
#define configIP_ADDR3 200
|
||||
|
||||
/* Netmask configuration. */
|
||||
#define configNET_MASK0 255
|
||||
#define configNET_MASK1 255
|
||||
#define configNET_MASK2 255
|
||||
#define configNET_MASK3 0
|
||||
|
||||
#endif /* FREERTOS_CONFIG_H */
|
||||
|
|
|
@ -71,8 +71,8 @@
|
|||
#define INT_QUEUE_TIMER_H
|
||||
|
||||
void vInitialiseTimerForIntQueueTest( void );
|
||||
portBASE_TYPE xTimer0Handler( void );
|
||||
portBASE_TYPE xTimer1Handler( void );
|
||||
BaseType_t xTimer0Handler( void );
|
||||
BaseType_t xTimer1Handler( void );
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -81,7 +81,7 @@
|
|||
*
|
||||
******************************************************************************
|
||||
*
|
||||
* main_full() creates all the demo application tasks and software timers, then
|
||||
* main_full() creates a set of demo application tasks and software timers, then
|
||||
* starts the scheduler. The web documentation provides more details of the
|
||||
* standard demo application tasks, which provide no particular functionality,
|
||||
* but do provide a good example of how to use the FreeRTOS API.
|
||||
|
@ -89,6 +89,12 @@
|
|||
* In addition to the standard demo tasks, the following tasks and tests are
|
||||
* defined and/or created within this file:
|
||||
*
|
||||
* "FreeRTOS+CLI command console" - The command console uses SCI1 for its
|
||||
* input and output. The baud rate is set to 19200. Type "help" to see a list
|
||||
* of registered commands. The FreeRTOS+CLI license is different to the
|
||||
* FreeRTOS license, see http://www.FreeRTOS.org/cli for license and usage
|
||||
* details.
|
||||
*
|
||||
* "Reg test" tasks - These fill both the core and floating point registers with
|
||||
* known values, then check that each register maintains its expected value for
|
||||
* the lifetime of the task. Each task uses a different set of values. The reg
|
||||
|
@ -97,19 +103,17 @@
|
|||
* error in the context switching mechanism.
|
||||
*
|
||||
* "Check" task - The check task period is initially set to three seconds. The
|
||||
* task checks that all the standard demo tasks, and the register check tasks,
|
||||
* are not only still executing, but are executing without reporting any errors.
|
||||
* If the check task discovers that a task has either stalled, or reported an
|
||||
* error, then it changes its own execution period from the initial three
|
||||
* seconds, to just 200ms. The check task also toggles an LED each time it is
|
||||
* called. This provides a visual indication of the system status: If the LED
|
||||
* toggles every three seconds, then no issues have been discovered. If the LED
|
||||
* toggles every 200ms, then an issue has been discovered with at least one
|
||||
* task.
|
||||
* task checks that all the standard demo tasks are not only still executing,
|
||||
* but are executing without reporting any errors. If the check task discovers
|
||||
* that a task has either stalled, or reported an error, then it changes its own
|
||||
* execution period from the initial three seconds, to just 200ms. The check
|
||||
* task also toggles an LED on each iteration of its loop. This provides a
|
||||
* visual indication of the system status: If the LED toggles every three
|
||||
* seconds, then no issues have been discovered. If the LED toggles every
|
||||
* 200ms, then an issue has been discovered with at least one task.
|
||||
*/
|
||||
|
||||
/* Standard includes. */
|
||||
#include <rskrx71mdef.h>
|
||||
#include <stdio.h>
|
||||
|
||||
/* Kernel includes. */
|
||||
|
@ -139,6 +143,7 @@
|
|||
#include "IntSemTest.h"
|
||||
|
||||
/* Renesas includes. */
|
||||
#include <rskrx71mdef.h>
|
||||
#include "r_cg_macrodriver.h"
|
||||
#include "r_cg_userdefine.h"
|
||||
|
||||
|
@ -148,30 +153,26 @@
|
|||
#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3UL )
|
||||
#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY )
|
||||
#define mainUART_COMMAND_CONSOLE_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3UL )
|
||||
#define mainCOM_TEST_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
||||
#define mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 )
|
||||
#define mainQUEUE_OVERWRITE_PRIORITY ( tskIDLE_PRIORITY )
|
||||
|
||||
/* The priority used by the UART command console task. */
|
||||
#define mainUART_COMMAND_CONSOLE_TASK_PRIORITY ( configMAX_PRIORITIES - 2 )
|
||||
|
||||
/* A block time of zero simply means "don't block". */
|
||||
#define mainDONT_BLOCK ( 0UL )
|
||||
|
||||
/* The period after which the check timer will expire, in ms, provided no errors
|
||||
have been reported by any of the standard demo tasks. ms are converted to the
|
||||
equivalent in ticks using the portTICK_PERIOD_MS constant. */
|
||||
#define mainNO_ERROR_CHECK_TASK_PERIOD ( 3000UL / portTICK_PERIOD_MS )
|
||||
#define mainNO_ERROR_CHECK_TASK_PERIOD pdMS_TO_TICKS( 3000UL )
|
||||
|
||||
/* The period at which the check timer will expire, in ms, if an error has been
|
||||
reported in one of the standard demo tasks. ms are converted to the equivalent
|
||||
in ticks using the portTICK_PERIOD_MS constant. */
|
||||
#define mainERROR_CHECK_TASK_PERIOD ( 200UL / portTICK_PERIOD_MS )
|
||||
#define mainERROR_CHECK_TASK_PERIOD pdMS_TO_TICKS( 200UL )
|
||||
|
||||
/* Parameters that are passed into the register check tasks solely for the
|
||||
purpose of ensuring parameters are passed into tasks correctly. */
|
||||
#define mainREG_TEST_1_PARAMETER ( ( void * ) 0x12121212UL )
|
||||
#define mainREG_TEST_2_PARAMETER ( ( void * ) 0x12345678UL )
|
||||
#define mainREG_TEST_1_PARAMETER ( ( void * ) 0x12121212UL )
|
||||
#define mainREG_TEST_2_PARAMETER ( ( void * ) 0x12345678UL )
|
||||
|
||||
/* The base period used by the timer test tasks. */
|
||||
#define mainTIMER_TEST_PERIOD ( 50 )
|
||||
|
@ -212,6 +213,17 @@ void vRegTest2Implementation( void );
|
|||
*/
|
||||
static void prvPseudoRandomiser( void *pvParameters );
|
||||
|
||||
/*
|
||||
* Register commands that can be used with FreeRTOS+CLI. The commands are
|
||||
* defined in CLI-Commands.c and File-Related-CLI-Command.c respectively.
|
||||
*/
|
||||
extern void vRegisterSampleCLICommands( void );
|
||||
|
||||
/*
|
||||
* The task that manages the FreeRTOS+CLI input and output.
|
||||
*/
|
||||
extern void vUARTCommandConsoleStart( uint16_t usStackSize, UBaseType_t uxPriority );
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* The following two variables are used to communicate the status of the
|
||||
|
@ -220,9 +232,6 @@ then the register check tasks have not discovered any errors. If a variable
|
|||
stops incrementing, then an error has been found. */
|
||||
volatile unsigned long ulRegTest1LoopCounter = 0UL, ulRegTest2LoopCounter = 0UL;
|
||||
|
||||
/* String for display in the web server. It is set to an error message if the
|
||||
check task detects an error. */
|
||||
const char *pcStatusMessage = "All tasks running without error";
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void main_full( void )
|
||||
|
@ -250,7 +259,14 @@ void main_full( void )
|
|||
xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL );
|
||||
|
||||
/* Create the task that just adds a little random behaviour. */
|
||||
xTaskCreate( prvPseudoRandomiser, "Rnd", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES - 1, NULL );
|
||||
xTaskCreate( prvPseudoRandomiser, "Rnd", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES - 2, NULL );
|
||||
|
||||
/* Start the tasks that implements the command console on the UART, as
|
||||
described above. */
|
||||
vUARTCommandConsoleStart( mainUART_COMMAND_CONSOLE_STACK_SIZE, mainUART_COMMAND_CONSOLE_TASK_PRIORITY );
|
||||
|
||||
/* Register the standard CLI commands. */
|
||||
vRegisterSampleCLICommands();
|
||||
|
||||
/* Create the task that performs the 'check' functionality, as described at
|
||||
the top of this file. */
|
||||
|
@ -404,7 +420,6 @@ unsigned long ulErrorFound = pdFALSE;
|
|||
gone wrong (it might just be that the loop back connector required
|
||||
by the comtest tasks has not been fitted). */
|
||||
xDelayPeriod = mainERROR_CHECK_TASK_PERIOD;
|
||||
pcStatusMessage = "Error found in at least one task.";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -412,7 +427,7 @@ unsigned long ulErrorFound = pdFALSE;
|
|||
|
||||
static void prvPseudoRandomiser( void *pvParameters )
|
||||
{
|
||||
const uint32_t ulMultiplier = 0x015a4e35UL, ulIncrement = 1UL, ulMinDelay = ( 35 / portTICK_PERIOD_MS );
|
||||
const uint32_t ulMultiplier = 0x015a4e35UL, ulIncrement = 1UL, ulMinDelay = pdMS_TO_TICKS( 35 );
|
||||
volatile uint32_t ulNextRand = ( uint32_t ) &pvParameters, ulValue;
|
||||
|
||||
/* This task does nothing other than ensure there is a little bit of
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
/* Date Generated: 18/12/2014 */
|
||||
/************************************************************************/
|
||||
#include "interrupt_handlers.h"
|
||||
#include "iodefine.h"
|
||||
|
||||
// Exception(Supervisor Instruction)
|
||||
void INT_Excep_SuperVisorInst(void){/* brk(); */}
|
||||
|
@ -328,7 +329,20 @@ void INT_Excep_ICU_GROUPBE0(void){ }
|
|||
//;0x01B4 Reserved
|
||||
|
||||
//;0x01B8 GROUPBL0
|
||||
void INT_Excep_ICU_GROUPBL0(void){ }
|
||||
void INT_Excep_ICU_GROUPBL0(void)
|
||||
{
|
||||
extern void r_sci7_transmitend_interrupt( void );
|
||||
extern void r_sci7_receiveerror_interrupt( void );
|
||||
|
||||
if (ICU.GRPBL0.BIT.IS14 == 1U)
|
||||
{
|
||||
r_sci7_transmitend_interrupt();
|
||||
}
|
||||
if (ICU.GRPBL0.BIT.IS15 == 1U)
|
||||
{
|
||||
r_sci7_receiveerror_interrupt();
|
||||
}
|
||||
}
|
||||
|
||||
//;0x01BC GROUPBL1
|
||||
void INT_Excep_ICU_GROUPBL1(void){ }
|
||||
|
|
|
@ -25,6 +25,8 @@ extern void vTickISR( void );
|
|||
extern void vSoftwareInterruptISR( void );
|
||||
extern void vIntQTimerISR0( void );
|
||||
extern void vIntQTimerISR1( void );
|
||||
void r_sci7_transmit_interrupt(void);
|
||||
void r_sci7_receive_interrupt(void);
|
||||
|
||||
#define EXVECT_SECT __attribute__ ((section (".exvectors")))
|
||||
|
||||
|
@ -365,10 +367,10 @@ const fp RelocatableVectors[] RVECT_SECT = {
|
|||
(fp)INT_Excep_PDC_PCDFI,
|
||||
|
||||
//;0x0188 RXI7
|
||||
(fp)INT_Excep_SCI7_RXI7,
|
||||
(fp)r_sci7_receive_interrupt,
|
||||
|
||||
//;0x018C TXI7
|
||||
(fp)INT_Excep_SCI7_TXI7,
|
||||
(fp)r_sci7_transmit_interrupt,
|
||||
|
||||
//;0x0190 RXIF8
|
||||
(fp)INT_Excep_SCIFA8_RXIF8,
|
||||
|
|
|
@ -0,0 +1,127 @@
|
|||
/* Adapted for use with IAR Embedded Workbench */
|
||||
/***********************************************************************************************************************
|
||||
* 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) 2013, 2014 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* File Name : r_cg_intprg.c
|
||||
* Version : Code Generator for RX64M V1.00.01.01 [09 May 2014]
|
||||
* Device(s) : R5F571MLCxFC
|
||||
* Tool-Chain : IAR Embedded Workbench
|
||||
* Description : Setting of B.
|
||||
* Creation Date: 30/06/2014
|
||||
***********************************************************************************************************************/
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Pragma directive
|
||||
***********************************************************************************************************************/
|
||||
/* Start user code for pragma. Do not edit comment generated here */
|
||||
/* End user code. Do not edit comment generated here */
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Includes
|
||||
***********************************************************************************************************************/
|
||||
#include "r_cg_macrodriver.h"
|
||||
#include <machine.h>
|
||||
#include "r_cg_userdefine.h"
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Global variables and functions
|
||||
***********************************************************************************************************************/
|
||||
|
||||
|
||||
// fixedint.c in $TOOLKIT$/rx/src/lib/src
|
||||
/* Undefined exceptions for supervisor instruction, undefined instruction and floating point exceptions */
|
||||
__interrupt void __undefined_handler (void)
|
||||
{
|
||||
/* Start user code. Do not edit comment generated here */
|
||||
/* End user code. Do not edit comment generated here */
|
||||
}
|
||||
|
||||
/* NMI */
|
||||
__interrupt void __NMI_handler (void)
|
||||
{
|
||||
/* Start user code. Do not edit comment generated here */
|
||||
/* End user code. Do not edit comment generated here */
|
||||
}
|
||||
|
||||
|
||||
/* BRK */
|
||||
#pragma vector=0
|
||||
__interrupt void r_brk_exception(void)
|
||||
{
|
||||
/* Start user code. Do not edit comment generated here */
|
||||
/* End user code. Do not edit comment generated here */
|
||||
}
|
||||
|
||||
/* ICU GROUPBE0 */
|
||||
#pragma vector=VECT(ICU,GROUPBE0)
|
||||
__interrupt void r_icu_group_be0_interrupt(void)
|
||||
{
|
||||
/* Start user code. Do not edit comment generated here */
|
||||
/* End user code. Do not edit comment generated here */
|
||||
}
|
||||
|
||||
|
||||
/* ICU GROUPBL0 */
|
||||
#pragma vector=VECT(ICU,GROUPBL0)
|
||||
__interrupt void r_icu_group_bl0_interrupt(void)
|
||||
{
|
||||
if (ICU.GRPBL0.BIT.IS14 == 1U)
|
||||
{
|
||||
r_sci7_transmitend_interrupt();
|
||||
}
|
||||
if (ICU.GRPBL0.BIT.IS15 == 1U)
|
||||
{
|
||||
r_sci7_receiveerror_interrupt();
|
||||
}
|
||||
/* Start user code. Do not edit comment generated here */
|
||||
/* End user code. Do not edit comment generated here */
|
||||
}
|
||||
|
||||
/* ICU GROUPBL1 */
|
||||
#pragma vector=VECT(ICU,GROUPBL1)
|
||||
__interrupt void r_icu_group_bl1_interrupt(void)
|
||||
{
|
||||
/* Start user code. Do not edit comment generated here */
|
||||
/* End user code. Do not edit comment generated here */
|
||||
}
|
||||
|
||||
/* ICU GROUPAL0 */
|
||||
#pragma vector=VECT(ICU,GROUPAL0)
|
||||
__interrupt void r_icu_group_al0_interrupt(void)
|
||||
{
|
||||
/* Start user code. Do not edit comment generated here */
|
||||
/* End user code. Do not edit comment generated here */
|
||||
}
|
||||
|
||||
/* ICU GROUPAL1 */
|
||||
#pragma vector=VECT(ICU,GROUPAL1)
|
||||
__interrupt void r_icu_group_al1_interrupt(void)
|
||||
{
|
||||
/* Start user code. Do not edit comment generated here */
|
||||
/* End user code. Do not edit comment generated here */
|
||||
}
|
||||
|
||||
/* Start user code for adding. Do not edit comment generated here */
|
||||
/* End user code. Do not edit comment generated here */
|
|
@ -33,6 +33,7 @@ Includes
|
|||
#ifdef __ICCRX__
|
||||
#include <iorx71m.h>
|
||||
#include <machine.h>
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
|
||||
#ifdef __GNUC__
|
||||
|
|
|
@ -1,232 +0,0 @@
|
|||
/***********************************************************************************************************************
|
||||
* 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 WARRANTIESREGARDING 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) 2015 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* File Name : r_cg_sci_user.c
|
||||
* Version : Code Generator for RX71M V1.00.02.02 [28 May 2015]
|
||||
* Device(s) : R5F571MLCxFC
|
||||
* Tool-Chain : CCRX
|
||||
* Description : This file implements device driver for SCI module.
|
||||
* Creation Date: 20/09/2015
|
||||
***********************************************************************************************************************/
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Pragma directive
|
||||
***********************************************************************************************************************/
|
||||
/* Start user code for pragma. Do not edit comment generated here */
|
||||
/* End user code. Do not edit comment generated here */
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Includes
|
||||
***********************************************************************************************************************/
|
||||
#include "r_cg_macrodriver.h"
|
||||
#include "r_cg_sci.h"
|
||||
/* Start user code for include. Do not edit comment generated here */
|
||||
/* End user code. Do not edit comment generated here */
|
||||
#include "r_cg_userdefine.h"
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Global variables and functions
|
||||
***********************************************************************************************************************/
|
||||
extern uint8_t * gp_sci7_tx_address; /* SCI7 send buffer address */
|
||||
extern uint16_t g_sci7_tx_count; /* SCI7 send data number */
|
||||
extern uint8_t * gp_sci7_rx_address; /* SCI7 receive buffer address */
|
||||
extern uint16_t g_sci7_rx_count; /* SCI7 receive data number */
|
||||
extern uint16_t g_sci7_rx_length; /* SCI7 receive data length */
|
||||
/* Start user code for global. Do not edit comment generated here */
|
||||
/* Flag used locally to detect transmission complete */
|
||||
|
||||
/* Global used to receive a character from the PC terminal */
|
||||
uint8_t g_rx_char;
|
||||
|
||||
/* Flag used to control transmission to PC terminal */
|
||||
volatile uint8_t g_tx_flag = FALSE;
|
||||
|
||||
/* Flag used locally to detect transmission complete */
|
||||
static volatile uint8_t sci6_txdone;
|
||||
static volatile uint8_t sci7_txdone;
|
||||
|
||||
/* End user code. Do not edit comment generated here */
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function Name: r_sci7_transmit_interrupt
|
||||
* Description : None
|
||||
* Arguments : None
|
||||
* Return Value : None
|
||||
***********************************************************************************************************************/
|
||||
#if FAST_INTERRUPT_VECTOR == VECT_SCI7_TXI7
|
||||
#pragma interrupt r_sci7_transmit_interrupt(vect=VECT(SCI7,TXI7),fint)
|
||||
#else
|
||||
#pragma interrupt r_sci7_transmit_interrupt(vect=VECT(SCI7,TXI7))
|
||||
#endif
|
||||
static void r_sci7_transmit_interrupt(void)
|
||||
{
|
||||
if (0U < g_sci7_tx_count)
|
||||
{
|
||||
SCI7.TDR = *gp_sci7_tx_address;
|
||||
gp_sci7_tx_address++;
|
||||
g_sci7_tx_count--;
|
||||
}
|
||||
else
|
||||
{
|
||||
SCI7.SCR.BIT.TIE = 0U;
|
||||
SCI7.SCR.BIT.TEIE = 1U;
|
||||
}
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function Name: r_sci7_transmitend_interrupt
|
||||
* Description : This function is TEI7 interrupt service routine.
|
||||
* Arguments : None
|
||||
* Return Value : None
|
||||
***********************************************************************************************************************/
|
||||
void r_sci7_transmitend_interrupt(void)
|
||||
{
|
||||
/* Set TXD7 pin */
|
||||
PORT9.PMR.BYTE &= 0xFEU;
|
||||
SCI7.SCR.BIT.TIE = 0U;
|
||||
SCI7.SCR.BIT.TE = 0U;
|
||||
SCI7.SCR.BIT.TEIE = 0U;
|
||||
|
||||
r_sci7_callback_transmitend();
|
||||
}
|
||||
/***********************************************************************************************************************
|
||||
* Function Name: r_sci7_receive_interrupt
|
||||
* Description : None
|
||||
* Arguments : None
|
||||
* Return Value : None
|
||||
***********************************************************************************************************************/
|
||||
#if FAST_INTERRUPT_VECTOR == VECT_SCI7_RXI7
|
||||
#pragma interrupt r_sci7_receive_interrupt(vect=VECT(SCI7,RXI7),fint)
|
||||
#else
|
||||
#pragma interrupt r_sci7_receive_interrupt(vect=VECT(SCI7,RXI7))
|
||||
#endif
|
||||
static void r_sci7_receive_interrupt(void)
|
||||
{
|
||||
if (g_sci7_rx_length > g_sci7_rx_count)
|
||||
{
|
||||
*gp_sci7_rx_address = SCI7.RDR;
|
||||
gp_sci7_rx_address++;
|
||||
g_sci7_rx_count++;
|
||||
|
||||
if (g_sci7_rx_length <= g_sci7_rx_count)
|
||||
{
|
||||
r_sci7_callback_receiveend();
|
||||
}
|
||||
}
|
||||
}
|
||||
/***********************************************************************************************************************
|
||||
* Function Name: r_sci7_receiveerror_interrupt
|
||||
* Description : This function is ERI7 interrupt service routine.
|
||||
* Arguments : None
|
||||
* Return Value : None
|
||||
***********************************************************************************************************************/
|
||||
void r_sci7_receiveerror_interrupt(void)
|
||||
{
|
||||
uint8_t err_type;
|
||||
|
||||
r_sci7_callback_receiveerror();
|
||||
|
||||
/* Clear overrun, framing and parity error flags */
|
||||
err_type = SCI7.SSR.BYTE;
|
||||
err_type &= 0xC7U;
|
||||
err_type |= 0xC0U;
|
||||
SCI7.SSR.BYTE = err_type;
|
||||
}
|
||||
/***********************************************************************************************************************
|
||||
* Function Name: r_sci7_callback_transmitend
|
||||
* Description : This function is a callback function when SCI7 finishes transmission.
|
||||
* Arguments : None
|
||||
* Return Value : None
|
||||
***********************************************************************************************************************/
|
||||
static void r_sci7_callback_transmitend(void)
|
||||
{
|
||||
/* Start user code. Do not edit comment generated here */
|
||||
sci7_txdone = TRUE;
|
||||
|
||||
/* End user code. Do not edit comment generated here */
|
||||
}
|
||||
/***********************************************************************************************************************
|
||||
* Function Name: r_sci7_callback_receiveend
|
||||
* Description : This function is a callback function when SCI7 finishes reception.
|
||||
* Arguments : None
|
||||
* Return Value : None
|
||||
***********************************************************************************************************************/
|
||||
static void r_sci7_callback_receiveend(void)
|
||||
{
|
||||
/* Start user code. Do not edit comment generated here */
|
||||
/* Check the contents of g_rx_char */
|
||||
if (('c' == g_rx_char) || ('C' == g_rx_char))
|
||||
{
|
||||
//_RB_ g_adc_trigger = TRUE;
|
||||
}
|
||||
|
||||
/* Set up SCI7 receive buffer and callback function again */
|
||||
R_SCI7_Serial_Receive((uint8_t *)&g_rx_char, 1);
|
||||
|
||||
/* End user code. Do not edit comment generated here */
|
||||
}
|
||||
/***********************************************************************************************************************
|
||||
* Function Name: r_sci7_callback_receiveerror
|
||||
* Description : This function is a callback function when SCI7 reception encounters error.
|
||||
* Arguments : None
|
||||
* Return Value : None
|
||||
***********************************************************************************************************************/
|
||||
static void r_sci7_callback_receiveerror(void)
|
||||
{
|
||||
/* Start user code. Do not edit comment generated here */
|
||||
/* End user code. Do not edit comment generated here */
|
||||
}
|
||||
|
||||
/* Start user code for adding. Do not edit comment generated here */
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: R_SCI7_AsyncTransmit
|
||||
* Description : This function sends SCI7 data and waits for the transmit end flag.
|
||||
* Arguments : tx_buf -
|
||||
* transfer buffer pointer
|
||||
* tx_num -
|
||||
* buffer size
|
||||
* Return Value : status -
|
||||
* MD_OK or MD_ARGERROR
|
||||
*******************************************************************************/
|
||||
MD_STATUS R_SCI7_AsyncTransmit (uint8_t * const tx_buf, const uint16_t tx_num)
|
||||
{
|
||||
MD_STATUS status = MD_OK;
|
||||
|
||||
/* clear the flag before initiating a new transmission */
|
||||
sci7_txdone = FALSE;
|
||||
|
||||
/* Send the data using the API */
|
||||
status = R_SCI7_Serial_Send(tx_buf, tx_num);
|
||||
|
||||
/* Wait for the transmit end flag */
|
||||
while (FALSE == sci7_txdone)
|
||||
{
|
||||
/* Wait */
|
||||
}
|
||||
return (status);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* End of function R_SCI7_AsyncTransmit
|
||||
*******************************************************************************/
|
||||
|
||||
|
||||
/* End user code. Do not edit comment generated here */
|
|
@ -0,0 +1,368 @@
|
|||
/*Adapted for IAR Embedded Workbench*/
|
||||
/***********************************************************************************************************************
|
||||
* 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) 2013, 2014 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* File Name : r_cg_sci_user.c
|
||||
* Version : Code Generator for RX64M V1.00.01.01 [09 May 2014]
|
||||
* Device(s) : R5F571MLCxFC
|
||||
* Tool-Chain : IAR Embedded Workbench
|
||||
* Description : This file implements device driver for SCI module.
|
||||
* Creation Date: 30/06/2014
|
||||
***********************************************************************************************************************/
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Pragma directive
|
||||
***********************************************************************************************************************/
|
||||
/* Start user code for pragma. Do not edit comment generated here */
|
||||
|
||||
|
||||
/*
|
||||
* This file originated from an example project for the RSK - it has been
|
||||
* adapted to allow it to be used in the FreeRTOS demo. Functions required by
|
||||
* UARTCommandConsole.c have been added.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/* End user code. Do not edit comment generated here */
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Includes
|
||||
***********************************************************************************************************************/
|
||||
#include "r_cg_macrodriver.h"
|
||||
#include "r_cg_sci.h"
|
||||
/* Start user code for include. Do not edit comment generated here */
|
||||
#include "rskrx71mdef.h"
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
#include "queue.h"
|
||||
#include "serial.h"
|
||||
/* End user code. Do not edit comment generated here */
|
||||
#include "r_cg_userdefine.h"
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Global variables and functions
|
||||
***********************************************************************************************************************/
|
||||
extern uint8_t * gp_sci7_tx_address; /* SCI7 send buffer address */
|
||||
extern uint16_t g_sci7_tx_count; /* SCI7 send data number */
|
||||
extern uint8_t * gp_sci7_rx_address; /* SCI7 receive buffer address */
|
||||
extern uint16_t g_sci7_rx_count; /* SCI7 receive data number */
|
||||
extern uint16_t g_sci7_rx_length; /* SCI7 receive data length */
|
||||
/* Start user code for global. Do not edit comment generated here */
|
||||
|
||||
/* Global used to receive a character from the PC terminal */
|
||||
uint8_t g_rx_char;
|
||||
|
||||
/* Flag used to control transmission to PC terminal */
|
||||
volatile uint8_t g_tx_flag = FALSE;
|
||||
|
||||
/* Characters received from the UART are stored in this queue, ready to be
|
||||
received by the application. ***NOTE*** Using a queue in this way is very
|
||||
convenient, but also very inefficient. It can be used here because characters
|
||||
will only arrive slowly. In a higher bandwidth system a circular RAM buffer or
|
||||
DMA should be used in place of this queue. */
|
||||
static QueueHandle_t xRxQueue = NULL;
|
||||
|
||||
/* When a task calls vSerialPutString() its handle is stored in xSendingTask,
|
||||
before being placed into the Blocked state (so does not use any CPU time) to
|
||||
wait for the transmission to end. The task handle is then used from the UART
|
||||
transmit end interrupt to remove the task from the Blocked state. */
|
||||
static TaskHandle_t xSendingTask = NULL;
|
||||
|
||||
/* Flag used locally to detect transmission complete. This is used by the
|
||||
auto generated API only. */
|
||||
static volatile uint8_t sci7_txdone;
|
||||
|
||||
/* End user code. Do not edit comment generated here */
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function Name: r_sci7_transmit_interrupt
|
||||
* Description : None
|
||||
* Arguments : None
|
||||
* Return Value : None
|
||||
***********************************************************************************************************************/
|
||||
void r_sci7_transmit_interrupt(void) __attribute__((interrupt));
|
||||
void r_sci7_transmit_interrupt(void)
|
||||
{
|
||||
if (g_sci7_tx_count > 0U)
|
||||
{
|
||||
SCI7.TDR = *gp_sci7_tx_address;
|
||||
gp_sci7_tx_address++;
|
||||
g_sci7_tx_count--;
|
||||
}
|
||||
else
|
||||
{
|
||||
SCI7.SCR.BIT.TIE = 0U;
|
||||
SCI7.SCR.BIT.TEIE = 1U;
|
||||
}
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function Name: r_sci7_transmitend_interrupt
|
||||
* Description : This function is TEI7 interrupt service routine.
|
||||
* Arguments : None
|
||||
* Return Value : None
|
||||
***********************************************************************************************************************/
|
||||
void r_sci7_transmitend_interrupt(void)
|
||||
{
|
||||
MPC.P90PFS.BYTE = 0x00U;
|
||||
PORT9.PMR.BYTE &= 0xFEU;
|
||||
SCI7.SCR.BIT.TIE = 0U;
|
||||
SCI7.SCR.BIT.TE = 0U;
|
||||
SCI7.SCR.BIT.TEIE = 0U;
|
||||
|
||||
r_sci7_callback_transmitend();
|
||||
}
|
||||
/***********************************************************************************************************************
|
||||
* Function Name: r_sci7_receive_interrupt
|
||||
* Description : None
|
||||
* Arguments : None
|
||||
* Return Value : None
|
||||
***********************************************************************************************************************/
|
||||
void r_sci7_receive_interrupt(void) __attribute__((interrupt));
|
||||
void r_sci7_receive_interrupt(void)
|
||||
{
|
||||
if (g_sci7_rx_length > g_sci7_rx_count)
|
||||
{
|
||||
*gp_sci7_rx_address = SCI7.RDR;
|
||||
gp_sci7_rx_address++;
|
||||
g_sci7_rx_count++;
|
||||
|
||||
if (g_sci7_rx_length <= g_sci7_rx_count)
|
||||
{
|
||||
r_sci7_callback_receiveend();
|
||||
}
|
||||
}
|
||||
}
|
||||
/***********************************************************************************************************************
|
||||
* Function Name: r_sci7_receiveerror_interrupt
|
||||
* Description : This function is ERI7 interrupt service routine.
|
||||
* Arguments : None
|
||||
* Return Value : None
|
||||
***********************************************************************************************************************/
|
||||
void r_sci7_receiveerror_interrupt(void)
|
||||
{
|
||||
uint8_t err_type;
|
||||
|
||||
r_sci7_callback_receiveerror();
|
||||
|
||||
/* Clear overrun, framing and parity error flags */
|
||||
err_type = SCI7.SSR.BYTE;
|
||||
err_type &= 0xC7U;
|
||||
err_type |= 0xC0U;
|
||||
SCI7.SSR.BYTE = err_type;
|
||||
}
|
||||
/***********************************************************************************************************************
|
||||
* Function Name: r_sci7_callback_transmitend
|
||||
* Description : This function is a callback function when SCI7 finishes transmission.
|
||||
* Arguments : None
|
||||
* Return Value : None
|
||||
***********************************************************************************************************************/
|
||||
static void r_sci7_callback_transmitend(void)
|
||||
{
|
||||
/* Start user code. Do not edit comment generated here */
|
||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||
|
||||
/* The sci7_txdone flag is used by the auto generated API only. */
|
||||
sci7_txdone = TRUE;
|
||||
|
||||
if( xSendingTask != NULL )
|
||||
{
|
||||
/* A task is waiting for the end of the Tx, unblock it now.
|
||||
http://www.freertos.org/vTaskNotifyGiveFromISR.html */
|
||||
vTaskNotifyGiveFromISR( xSendingTask, &xHigherPriorityTaskWoken );
|
||||
xSendingTask = NULL;
|
||||
|
||||
portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
|
||||
}
|
||||
/* End user code. Do not edit comment generated here */
|
||||
}
|
||||
/***********************************************************************************************************************
|
||||
* Function Name: r_sci7_callback_receiveend
|
||||
* Description : This function is a callback function when SCI7 finishes reception.
|
||||
* Arguments : None
|
||||
* Return Value : None
|
||||
***********************************************************************************************************************/
|
||||
static void r_sci7_callback_receiveend(void)
|
||||
{
|
||||
/* Start user code. Do not edit comment generated here */
|
||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||
|
||||
configASSERT( xRxQueue );
|
||||
|
||||
/* Transmitting generates an interrupt for each character, which consumes
|
||||
CPU time, and can cause standard demo RTOS tasks that monitor their own
|
||||
performance to fail asserts - so don't receive new CLI commands if a
|
||||
transmit is not already in progress. */
|
||||
if( sci7_txdone == TRUE )
|
||||
{
|
||||
/* Characters received from the UART are stored in this queue, ready to be
|
||||
received by the application. ***NOTE*** Using a queue in this way is very
|
||||
convenient, but also very inefficient. It can be used here because
|
||||
characters will only arrive slowly. In a higher bandwidth system a circular
|
||||
RAM buffer or DMA should be used in place of this queue. */
|
||||
xQueueSendFromISR( xRxQueue, &g_rx_char, &xHigherPriorityTaskWoken );
|
||||
}
|
||||
|
||||
/* Set up SCI7 receive buffer again */
|
||||
R_SCI7_Serial_Receive((uint8_t *)&g_rx_char, 1);
|
||||
|
||||
/* See http://www.freertos.org/xQueueOverwriteFromISR.html for information
|
||||
on the semantics of this ISR. */
|
||||
portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
|
||||
/* End user code. Do not edit comment generated here */
|
||||
}
|
||||
/***********************************************************************************************************************
|
||||
* Function Name: r_sci7_callback_receiveerror
|
||||
* Description : This function is a callback function when SCI7 reception encounters error.
|
||||
* Arguments : None
|
||||
* Return Value : None
|
||||
***********************************************************************************************************************/
|
||||
static void r_sci7_callback_receiveerror(void)
|
||||
{
|
||||
/* Start user code. Do not edit comment generated here */
|
||||
/* End user code. Do not edit comment generated here */
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function Name: R_SCI7_AsyncTransmit
|
||||
* Description : This function sends SCI7 data and waits for the transmit end flag.
|
||||
* Arguments : tx_buf -
|
||||
* transfer buffer pointer
|
||||
* tx_num -
|
||||
* buffer size
|
||||
* Return Value : status -
|
||||
* MD_OK or MD_ARGERROR
|
||||
***********************************************************************************************************************/
|
||||
MD_STATUS R_SCI7_AsyncTransmit (uint8_t * const tx_buf, const uint16_t tx_num)
|
||||
{
|
||||
MD_STATUS status = MD_OK;
|
||||
taskDISABLE_INTERRUPTS();
|
||||
while( 1 );
|
||||
/* clear the flag before initiating a new transmission */
|
||||
sci7_txdone = FALSE;
|
||||
|
||||
/* Send the data using the API */
|
||||
status = R_SCI7_Serial_Send(tx_buf, tx_num);
|
||||
|
||||
/* Wait for the transmit end flag */
|
||||
while (FALSE == sci7_txdone)
|
||||
{
|
||||
/* Wait */
|
||||
}
|
||||
return (status);
|
||||
}
|
||||
/***********************************************************************************************************************
|
||||
* End of function R_SCI7_AsyncTransmit
|
||||
***********************************************************************************************************************/
|
||||
|
||||
/* Function required in order to link UARTCommandConsole.c - which is used by
|
||||
multiple different demo application. */
|
||||
xComPortHandle xSerialPortInitMinimal( unsigned long ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )
|
||||
{
|
||||
( void ) ulWantedBaud;
|
||||
( void ) uxQueueLength;
|
||||
|
||||
/* Characters received from the UART are stored in this queue, ready to be
|
||||
received by the application. ***NOTE*** Using a queue in this way is very
|
||||
convenient, but also very inefficient. It can be used here because
|
||||
characters will only arrive slowly. In a higher bandwidth system a circular
|
||||
RAM buffer or DMA should be used in place of this queue. */
|
||||
xRxQueue = xQueueCreate( uxQueueLength, sizeof( char ) );
|
||||
configASSERT( xRxQueue );
|
||||
|
||||
/* Set up SCI1 receive buffer */
|
||||
R_SCI7_Serial_Receive((uint8_t *) &g_rx_char, 1);
|
||||
|
||||
/* Ensure the interrupt priority is at or below
|
||||
configMAX_SYSCALL_INTERRUPT_PRIORITY. */
|
||||
IPR(SCI7, RXI7) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;
|
||||
IPR(SCI7, TXI7) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;
|
||||
IPR(ICU,GROUPBL0) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;
|
||||
|
||||
/* Enable SCI1 operations */
|
||||
R_SCI7_Start();
|
||||
|
||||
/* Only one UART is supported, so it doesn't matter what is returned
|
||||
here. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Function required in order to link UARTCommandConsole.c - which is used by
|
||||
multiple different demo application. */
|
||||
void vSerialPutString( xComPortHandle pxPort, const signed char * const pcString, unsigned short usStringLength )
|
||||
{
|
||||
const TickType_t xMaxBlockTime = pdMS_TO_TICKS( 5000 );
|
||||
|
||||
/* Only one port is supported. */
|
||||
( void ) pxPort;
|
||||
|
||||
/* Clear the flag before initiating a new transmission */
|
||||
sci7_txdone = FALSE;
|
||||
|
||||
/* Don't send the string unless the previous string has been sent. */
|
||||
if( ( xSendingTask == NULL ) && ( usStringLength > 0 ) )
|
||||
{
|
||||
/* Ensure the calling task's notification state is not already
|
||||
pending. */
|
||||
vTaskNotifyStateClear( NULL );
|
||||
|
||||
/* Store the handle of the transmitting task. This is used to unblock
|
||||
the task when the transmission has completed. */
|
||||
xSendingTask = xTaskGetCurrentTaskHandle();
|
||||
|
||||
/* Send the string using the auto-generated API. */
|
||||
R_SCI7_Serial_Send( ( uint8_t * ) pcString, usStringLength );
|
||||
|
||||
/* Wait in the Blocked state (so not using any CPU time) until the
|
||||
transmission has completed. */
|
||||
ulTaskNotifyTake( pdTRUE, xMaxBlockTime );
|
||||
}
|
||||
}
|
||||
|
||||
/* Function required in order to link UARTCommandConsole.c - which is used by
|
||||
multiple different demo application. */
|
||||
signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed char *pcRxedChar, TickType_t xBlockTime )
|
||||
{
|
||||
/* Only one UART is supported. */
|
||||
( void ) pxPort;
|
||||
|
||||
/* Return a received character, if any are available. Otherwise block to
|
||||
wait for a character. */
|
||||
return xQueueReceive( xRxQueue, pcRxedChar, xBlockTime );
|
||||
}
|
||||
|
||||
/* Function required in order to link UARTCommandConsole.c - which is used by
|
||||
multiple different demo application. */
|
||||
signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, TickType_t xBlockTime )
|
||||
{
|
||||
/* Just mapped to vSerialPutString() so the block time is not used. */
|
||||
( void ) xBlockTime;
|
||||
|
||||
vSerialPutString( pxPort, &cOutChar, sizeof( cOutChar ) );
|
||||
return pdPASS;
|
||||
}
|
||||
|
||||
/* End user code. Do not edit comment generated here */
|
|
@ -36,6 +36,16 @@
|
|||
Pragma directive
|
||||
***********************************************************************************************************************/
|
||||
/* Start user code for pragma. Do not edit comment generated here */
|
||||
|
||||
|
||||
/*
|
||||
* This file originated from an example project for the RSK - it has been
|
||||
* adapted to allow it to be used in the FreeRTOS demo. Functions required by
|
||||
* UARTCommandConsole.c have been added.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/* End user code. Do not edit comment generated here */
|
||||
|
||||
/***********************************************************************************************************************
|
||||
|
@ -45,7 +55,10 @@ Includes
|
|||
#include "r_cg_sci.h"
|
||||
/* Start user code for include. Do not edit comment generated here */
|
||||
#include "rskrx71mdef.h"
|
||||
//_RB_#include "r_cg_cmt.h"
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
#include "queue.h"
|
||||
#include "serial.h"
|
||||
/* End user code. Do not edit comment generated here */
|
||||
#include "r_cg_userdefine.h"
|
||||
|
||||
|
@ -65,7 +78,21 @@ uint8_t g_rx_char;
|
|||
/* Flag used to control transmission to PC terminal */
|
||||
volatile uint8_t g_tx_flag = FALSE;
|
||||
|
||||
/* Flag used locally to detect transmission complete */
|
||||
/* Characters received from the UART are stored in this queue, ready to be
|
||||
received by the application. ***NOTE*** Using a queue in this way is very
|
||||
convenient, but also very inefficient. It can be used here because characters
|
||||
will only arrive slowly. In a higher bandwidth system a circular RAM buffer or
|
||||
DMA should be used in place of this queue. */
|
||||
static QueueHandle_t xRxQueue = NULL;
|
||||
|
||||
/* When a task calls vSerialPutString() its handle is stored in xSendingTask,
|
||||
before being placed into the Blocked state (so does not use any CPU time) to
|
||||
wait for the transmission to end. The task handle is then used from the UART
|
||||
transmit end interrupt to remove the task from the Blocked state. */
|
||||
static TaskHandle_t xSendingTask = NULL;
|
||||
|
||||
/* Flag used locally to detect transmission complete. This is used by the
|
||||
auto generated API only. */
|
||||
static volatile uint8_t sci7_txdone;
|
||||
|
||||
/* End user code. Do not edit comment generated here */
|
||||
|
@ -156,7 +183,20 @@ void r_sci7_receiveerror_interrupt(void)
|
|||
static void r_sci7_callback_transmitend(void)
|
||||
{
|
||||
/* Start user code. Do not edit comment generated here */
|
||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||
|
||||
/* The sci7_txdone flag is used by the auto generated API only. */
|
||||
sci7_txdone = TRUE;
|
||||
|
||||
if( xSendingTask != NULL )
|
||||
{
|
||||
/* A task is waiting for the end of the Tx, unblock it now.
|
||||
http://www.freertos.org/vTaskNotifyGiveFromISR.html */
|
||||
vTaskNotifyGiveFromISR( xSendingTask, &xHigherPriorityTaskWoken );
|
||||
xSendingTask = NULL;
|
||||
|
||||
portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
|
||||
}
|
||||
/* End user code. Do not edit comment generated here */
|
||||
}
|
||||
/***********************************************************************************************************************
|
||||
|
@ -168,31 +208,31 @@ static void r_sci7_callback_transmitend(void)
|
|||
static void r_sci7_callback_receiveend(void)
|
||||
{
|
||||
/* Start user code. Do not edit comment generated here */
|
||||
/* Check the contents of g_rx_char */
|
||||
if ('z' == g_rx_char)
|
||||
{
|
||||
/* Stop the timer used to control transmission to PC terminal*/
|
||||
// R_CMT1_Stop();
|
||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||
|
||||
/* Turn off LED0 and turn on LED1 to indicate serial transmission
|
||||
inactive */
|
||||
LED0 = LED_OFF;
|
||||
LED1 = LED_ON;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Start the timer used to control transmission to PC terminal*/
|
||||
//_RB_ R_CMT1_Start();
|
||||
configASSERT( xRxQueue );
|
||||
|
||||
/* Turn on LED0 and turn off LED1 to indicate serial transmission
|
||||
active */
|
||||
LED0 = LED_ON;
|
||||
LED1 = LED_OFF;
|
||||
/* Transmitting generates an interrupt for each character, which consumes
|
||||
CPU time, and can cause standard demo RTOS tasks that monitor their own
|
||||
performance to fail asserts - so don't receive new CLI commands if a
|
||||
transmit is not already in progress. */
|
||||
if( sci7_txdone == TRUE )
|
||||
{
|
||||
/* Characters received from the UART are stored in this queue, ready to be
|
||||
received by the application. ***NOTE*** Using a queue in this way is very
|
||||
convenient, but also very inefficient. It can be used here because
|
||||
characters will only arrive slowly. In a higher bandwidth system a circular
|
||||
RAM buffer or DMA should be used in place of this queue. */
|
||||
xQueueSendFromISR( xRxQueue, &g_rx_char, &xHigherPriorityTaskWoken );
|
||||
}
|
||||
|
||||
/* Set up SCI7 receive buffer again */
|
||||
R_SCI7_Serial_Receive((uint8_t *)&g_rx_char, 1);
|
||||
/* End user code. Do not edit comment generated here */
|
||||
|
||||
/* See http://www.freertos.org/xQueueOverwriteFromISR.html for information
|
||||
on the semantics of this ISR. */
|
||||
portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
|
||||
/* End user code. Do not edit comment generated here */
|
||||
}
|
||||
/***********************************************************************************************************************
|
||||
* Function Name: r_sci7_callback_receiveerror
|
||||
|
@ -237,5 +277,91 @@ MD_STATUS R_SCI7_AsyncTransmit (uint8_t * const tx_buf, const uint16_t tx_num)
|
|||
* End of function R_SCI7_AsyncTransmit
|
||||
***********************************************************************************************************************/
|
||||
|
||||
/* Function required in order to link UARTCommandConsole.c - which is used by
|
||||
multiple different demo application. */
|
||||
xComPortHandle xSerialPortInitMinimal( unsigned long ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )
|
||||
{
|
||||
( void ) ulWantedBaud;
|
||||
( void ) uxQueueLength;
|
||||
|
||||
/* Characters received from the UART are stored in this queue, ready to be
|
||||
received by the application. ***NOTE*** Using a queue in this way is very
|
||||
convenient, but also very inefficient. It can be used here because
|
||||
characters will only arrive slowly. In a higher bandwidth system a circular
|
||||
RAM buffer or DMA should be used in place of this queue. */
|
||||
xRxQueue = xQueueCreate( uxQueueLength, sizeof( char ) );
|
||||
configASSERT( xRxQueue );
|
||||
|
||||
/* Set up SCI1 receive buffer */
|
||||
R_SCI7_Serial_Receive((uint8_t *) &g_rx_char, 1);
|
||||
|
||||
/* Ensure the interrupt priority is at or below
|
||||
configMAX_SYSCALL_INTERRUPT_PRIORITY. */
|
||||
IPR(SCI7, RXI7) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;
|
||||
IPR(SCI7, TXI7) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;
|
||||
IPR(ICU,GROUPBL0) = configMAX_SYSCALL_INTERRUPT_PRIORITY - 1;
|
||||
|
||||
/* Enable SCI1 operations */
|
||||
R_SCI7_Start();
|
||||
|
||||
/* Only one UART is supported, so it doesn't matter what is returned
|
||||
here. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Function required in order to link UARTCommandConsole.c - which is used by
|
||||
multiple different demo application. */
|
||||
void vSerialPutString( xComPortHandle pxPort, const signed char * const pcString, unsigned short usStringLength )
|
||||
{
|
||||
const TickType_t xMaxBlockTime = pdMS_TO_TICKS( 5000 );
|
||||
|
||||
/* Only one port is supported. */
|
||||
( void ) pxPort;
|
||||
|
||||
/* Clear the flag before initiating a new transmission */
|
||||
sci7_txdone = FALSE;
|
||||
|
||||
/* Don't send the string unless the previous string has been sent. */
|
||||
if( ( xSendingTask == NULL ) && ( usStringLength > 0 ) )
|
||||
{
|
||||
/* Ensure the calling task's notification state is not already
|
||||
pending. */
|
||||
vTaskNotifyStateClear( NULL );
|
||||
|
||||
/* Store the handle of the transmitting task. This is used to unblock
|
||||
the task when the transmission has completed. */
|
||||
xSendingTask = xTaskGetCurrentTaskHandle();
|
||||
|
||||
/* Send the string using the auto-generated API. */
|
||||
R_SCI7_Serial_Send( ( uint8_t * ) pcString, usStringLength );
|
||||
|
||||
/* Wait in the Blocked state (so not using any CPU time) until the
|
||||
transmission has completed. */
|
||||
ulTaskNotifyTake( pdTRUE, xMaxBlockTime );
|
||||
}
|
||||
}
|
||||
|
||||
/* Function required in order to link UARTCommandConsole.c - which is used by
|
||||
multiple different demo application. */
|
||||
signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed char *pcRxedChar, TickType_t xBlockTime )
|
||||
{
|
||||
/* Only one UART is supported. */
|
||||
( void ) pxPort;
|
||||
|
||||
/* Return a received character, if any are available. Otherwise block to
|
||||
wait for a character. */
|
||||
return xQueueReceive( xRxQueue, pcRxedChar, xBlockTime );
|
||||
}
|
||||
|
||||
/* Function required in order to link UARTCommandConsole.c - which is used by
|
||||
multiple different demo application. */
|
||||
signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, TickType_t xBlockTime )
|
||||
{
|
||||
/* Just mapped to vSerialPutString() so the block time is not used. */
|
||||
( void ) xBlockTime;
|
||||
|
||||
vSerialPutString( pxPort, &cOutChar, sizeof( cOutChar ) );
|
||||
return pdPASS;
|
||||
}
|
||||
|
||||
/* End user code. Do not edit comment generated here */
|
||||
|
|
|
@ -144,6 +144,7 @@ int main( void )
|
|||
}
|
||||
#endif
|
||||
|
||||
/* Should never get reached. */
|
||||
return 0;
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
@ -205,6 +206,7 @@ volatile size_t xFreeHeapSpace;
|
|||
|
||||
void vApplicationTickHook( void )
|
||||
{
|
||||
/* The tick hook is not used by the blinky demo, but is by the full demo. */
|
||||
#if mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 0
|
||||
{
|
||||
extern void vFullDemoTickHook( void );
|
||||
|
@ -216,7 +218,9 @@ void vApplicationTickHook( void )
|
|||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* The RX port uses this callback function to configure its tick interrupt.
|
||||
This allows the application to choose the tick interrupt source. */
|
||||
This allows the application to choose the tick interrupt source.
|
||||
***NOTE***: configTICK_VECTOR must be set in FreeRTOSConfig.h to be correct for
|
||||
whichever vector is used. */
|
||||
void vApplicationSetupTimerInterrupt( void )
|
||||
{
|
||||
const uint32_t ulEnableRegisterWrite = 0xA50BUL, ulDisableRegisterWrite = 0xA500UL;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue