mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-11-05 19:22:31 -05:00
Continue 78K0R development.
This commit is contained in:
parent
46425b4099
commit
299557fed2
11 changed files with 182 additions and 1433 deletions
|
|
@ -58,9 +58,10 @@
|
|||
/* Demo file headers. */
|
||||
#include "int78K0R.h"
|
||||
#include "PollQ.h"
|
||||
#include "LED.h"
|
||||
#include "print.h"
|
||||
#include "semtest.h"
|
||||
#include "GenQTest.h"
|
||||
#include "dynamic.h"
|
||||
#include "blocktim.h"
|
||||
|
||||
/*
|
||||
* Priority definitions for most of the tasks in the demo application. Some
|
||||
|
|
@ -69,12 +70,16 @@
|
|||
#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
||||
#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 )
|
||||
#define mainSEMTEST_PRIORITY ( tskIDLE_PRIORITY + 1 )
|
||||
#define mainLED_TOGGLE_PRIORITY ( tskIDLE_PRIORITY + 1 )
|
||||
#define mainBUTTON_PRIORITY ( configMAX_PRIORITIES - 1 )
|
||||
#define mainGEN_QUEUE_PRIORITY ( tskIDLE_PRIORITY )
|
||||
|
||||
/* The period between executions of the check task. */
|
||||
#define mainNO_ERROR_TOGGLE_PERIOD ( ( portTickType ) 3000 / portTICK_RATE_MS )
|
||||
#define mainERROR_TOGGLE_PERIOD ( ( portTickType ) 500 / portTICK_RATE_MS )
|
||||
|
||||
#define LED00 P7_bit.no6
|
||||
#define LED01 P7_bit.no7
|
||||
|
||||
/*
|
||||
* 78K0R/Kx3 Option Byte Definition
|
||||
* watchdog disabled, LVI enabled, OCD interface enabled
|
||||
|
|
@ -99,29 +104,31 @@ int __low_level_init(void);
|
|||
|
||||
extern void vRegTest1( void *pvParameters );
|
||||
extern void vRegTest2( void *pvParameters );
|
||||
extern void vButtonTask( void *pvParameters );
|
||||
|
||||
static short sRegTestStatus = pdPASS;
|
||||
|
||||
portSHORT main( void )
|
||||
{
|
||||
/* Create the standard demo tasks. */
|
||||
vStartIntegerMathTasks( tskIDLE_PRIORITY );
|
||||
vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
|
||||
vStartSemaphoreTasks(mainSEMTEST_PRIORITY);
|
||||
vStartGenericQueueTasks( mainGEN_QUEUE_PRIORITY );
|
||||
vStartDynamicPriorityTasks();
|
||||
vCreateBlockTimeTasks();
|
||||
|
||||
xTaskCreate( vButtonTask, "Button", configMINIMAL_STACK_SIZE, NULL, mainBUTTON_PRIORITY, NULL );
|
||||
|
||||
/* Create the tasks defined within this file. */
|
||||
xTaskCreate( vErrorChecks, "Check", configMINIMAL_STACK_SIZE, (void*)0x12345678, mainCHECK_TASK_PRIORITY, NULL );
|
||||
|
||||
xTaskCreate( vRegTest1, "Reg1", configMINIMAL_STACK_SIZE, NULL, 0, NULL );
|
||||
xTaskCreate( vRegTest2, "Reg2", configMINIMAL_STACK_SIZE, NULL, 0, NULL );
|
||||
|
||||
/* In this port, to use preemptive scheduler define configUSE_PREEMPTION
|
||||
* as 1 in FreeRTOSconfig.h. To use the cooperative scheduler define
|
||||
* configUSE_PREEMPTION as 0.
|
||||
*/
|
||||
|
||||
vTaskStartScheduler();
|
||||
|
||||
return 0;
|
||||
for( ;; );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
|
|
@ -144,7 +151,7 @@ portTickType xToggleRate = mainNO_ERROR_TOGGLE_PERIOD, xLastWakeTime;
|
|||
{
|
||||
vTaskDelayUntil( &xLastWakeTime, xToggleRate );
|
||||
|
||||
if( xAreIntegerMathsTaskStillRunning() != pdTRUE )
|
||||
if( xAreGenericQueueTasksStillRunning() != pdTRUE )
|
||||
{
|
||||
xToggleRate = mainERROR_TOGGLE_PERIOD;
|
||||
}
|
||||
|
|
@ -158,6 +165,16 @@ portTickType xToggleRate = mainNO_ERROR_TOGGLE_PERIOD, xLastWakeTime;
|
|||
{
|
||||
xToggleRate = mainERROR_TOGGLE_PERIOD;
|
||||
}
|
||||
|
||||
if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )
|
||||
{
|
||||
xToggleRate = mainERROR_TOGGLE_PERIOD;
|
||||
}
|
||||
|
||||
if( xAreBlockTimeTestTasksStillRunning() != pdTRUE )
|
||||
{
|
||||
xToggleRate = mainERROR_TOGGLE_PERIOD;
|
||||
}
|
||||
|
||||
if( sRegTestStatus != pdPASS )
|
||||
{
|
||||
|
|
@ -165,7 +182,7 @@ portTickType xToggleRate = mainNO_ERROR_TOGGLE_PERIOD, xLastWakeTime;
|
|||
}
|
||||
|
||||
/* Toggle the LED. */
|
||||
LED01 = !LED01;
|
||||
LED00 = !LED00;
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
|
@ -285,6 +302,30 @@ unsigned portCHAR resetflag = RESF;
|
|||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
static void prvLEDInit(void)
|
||||
{
|
||||
/* LED Port Initialization */
|
||||
/* set Port Register */
|
||||
P7 = 0x80;
|
||||
/* set Port Mode Register */
|
||||
PM7 = 0x3F;
|
||||
|
||||
/* Switch Pin Initialization */
|
||||
/* enable pull-up resistor */
|
||||
PU12_bit.no0 = 1;
|
||||
/* INTP0 disable */
|
||||
PMK0 = 1;
|
||||
/* INTP0 IF clear */
|
||||
PIF0 = 0;
|
||||
EGN0_bit.no0 = 1;
|
||||
/* INTP0 priority low */
|
||||
PPR10 = 0;
|
||||
PPR00 = 1;
|
||||
/* enable ext. INTP0 interrupt */
|
||||
PMK0 = 0;
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vRegTestError( void )
|
||||
{
|
||||
sRegTestStatus = pdFAIL;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue