/* ** =================================================================== ** Nombre : LcdCounter_task (void *pvParameters) ** ** Resumen : Tarea que visualiza un contado de 0-9999 ** en pantalla LCD ** ** Entradas : Parametro inicial para la tarea ** ** Retorna : Ningun dato ** =================================================================== */ void LcdCounter_task(void *pvParameters){ portBASE_TYPE MyParameter = (portBASE_TYPE )(pvParameters); MySegLCDPtr = SegLCD1_Init(NULL); //initialize sLCD according to PEx for(;;){ main_counter++; // Incrementa contador if(main_counter>9999)main_counter=0; // control de valor maximo en contador (void) sprintf(sLCDBuffer,"%04i",main_counter); // Genera cadena de texto con valor de contador vfnLCD_Write_Msg((uint8 *)sLCDBuffer); // Muestra en LCD FRTOS1_vTaskDelay(50 / portTICK_RATE_MS); // Espera de 50mseg } vTaskDelete(NULL); // Borra tarea actual }//Fin de la Tarea "LcdCounter_task" -------------------------------------
void APP_Run(void) { MySegLCDPtr = SegLCD1_Init(NULL); //initialize sLCD according to PEx vfnLCD_Write_Msg((uint8 *)"8888"); _LCD_DP1_ON(); /* dot for first digit */ _LCD_DP2_ON(); /* dot for second digit */ _LCD_DP3_ON(); /* dot for third digit */ _LCD_COL_ON(); /* : between digit two and three */ if (FRTOS1_xTaskCreate( MainTask, /* pointer to the task */ (signed char *)"Main", /* task name for kernel awareness debugging */ configMINIMAL_STACK_SIZE, /* task stack size */ (void*)NULL, /* optional task startup argument */ tskIDLE_PRIORITY, /* initial priority */ (xTaskHandle*)NULL /* optional task handle to create */ ) != pdPASS) { /*lint -e527 */ for(;;){}; /* error! probably out of memory */ /*lint +e527 */ } FRTOS1_vTaskStartScheduler(); }
/* ** =================================================================== ** Method : PE_low_level_init (component MKL46Z256MC4) ** ** Description : ** Initializes beans and provides common register initialization. ** The method is called automatically as a part of the ** application initialization code. ** This method is internal. It is used by Processor Expert only. ** =================================================================== */ void PE_low_level_init(void) { #ifdef PEX_RTOS_INIT PEX_RTOS_INIT(); /* Initialization of the selected RTOS. Macro is defined by the RTOS component. */ #endif /* Initialization of the SIM module */ /* PORTA_PCR4: ISF=0,MUX=7 */ PORTA_PCR4 = (uint32_t)((PORTA_PCR4 & (uint32_t)~(uint32_t)( PORT_PCR_ISF_MASK )) | (uint32_t)( PORT_PCR_MUX(0x07) )); /* Initialization of the RCM module */ /* RCM_RPFW: RSTFLTSEL=0 */ RCM_RPFW &= (uint8_t)~(uint8_t)(RCM_RPFW_RSTFLTSEL(0x1F)); /* RCM_RPFC: RSTFLTSS=0,RSTFLTSRW=0 */ RCM_RPFC &= (uint8_t)~(uint8_t)( RCM_RPFC_RSTFLTSS_MASK | RCM_RPFC_RSTFLTSRW(0x03) ); /* Initialization of the FTFL_FlashConfig module */ /* Initialization of the PMC module */ /* PMC_LVDSC1: LVDACK=1,LVDIE=0,LVDRE=1,LVDV=0 */ PMC_LVDSC1 = (uint8_t)((PMC_LVDSC1 & (uint8_t)~(uint8_t)( PMC_LVDSC1_LVDIE_MASK | PMC_LVDSC1_LVDV(0x03) )) | (uint8_t)( PMC_LVDSC1_LVDACK_MASK | PMC_LVDSC1_LVDRE_MASK )); /* PMC_LVDSC2: LVWACK=1,LVWIE=0,LVWV=0 */ PMC_LVDSC2 = (uint8_t)((PMC_LVDSC2 & (uint8_t)~(uint8_t)( PMC_LVDSC2_LVWIE_MASK | PMC_LVDSC2_LVWV(0x03) )) | (uint8_t)( PMC_LVDSC2_LVWACK_MASK )); /* PMC_REGSC: BGEN=0,ACKISO=0,BGBE=0 */ PMC_REGSC &= (uint8_t)~(uint8_t)( PMC_REGSC_BGEN_MASK | PMC_REGSC_ACKISO_MASK | PMC_REGSC_BGBE_MASK ); /* SMC_PMPROT: ??=0,??=0,AVLP=0,??=0,ALLS=0,??=0,AVLLS=0,??=0 */ SMC_PMPROT = 0x00U; /* Setup Power mode protection register */ /* Common initialization of the CPU registers */ /* PORTA_PCR20: ISF=0,MUX=7 */ PORTA_PCR20 = (uint32_t)((PORTA_PCR20 & (uint32_t)~(uint32_t)( PORT_PCR_ISF_MASK )) | (uint32_t)( PORT_PCR_MUX(0x07) )); /* NVIC_IPR1: PRI_6=0 */ NVIC_IPR1 &= (uint32_t)~(uint32_t)(NVIC_IP_PRI_6(0xFF)); /* ### Serial_LDD "IO1" component auto initialization. Auto initialization feature can be disabled by component property "Auto initialization". */ (void)IO1_Init(NULL); /* ### SegLCD_LDD "SegLCD1" component auto initialization. Auto initialization feature can be disabled by component property "Auto initialization". */ (void)SegLCD1_Init(NULL); /* ### BitIO_LDD "BitIoLdd1" component auto initialization. Auto initialization feature can be disabled by component property "Auto initialization". */ (void)BitIoLdd1_Init(NULL); /* ### BitIO_LDD "BitIoLdd2" component auto initialization. Auto initialization feature can be disabled by component property "Auto initialization". */ (void)BitIoLdd2_Init(NULL); /* ### BitIO_LDD "BitIoLdd3" component auto initialization. Auto initialization feature can be disabled by component property "Auto initialization". */ (void)BitIoLdd3_Init(NULL); /* ### BitIO_LDD "BitIoLdd4" component auto initialization. Auto initialization feature can be disabled by component property "Auto initialization". */ (void)BitIoLdd4_Init(NULL); __EI(); }
/*lint -save -e970 Disable MISRA rule (6.3) checking. */ int main(void) /*lint -restore Enable MISRA rule (6.3) checking. */ { /* Write your local variable definition here */ /*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/ PE_low_level_init(); /*** End of Processor Expert internal initialization. ***/ LED_GREEN_NegVal(); LED_RED_NegVal(); LED_YELLOW_NegVal(); LED_ORANGE_NegVal(); MySegLCDPtr = SegLCD1_Init(NULL); //initialize sLCD according to PEx vfnLCD_Write_Msg("1234"); /*Turn on all special symbols*/ _FREESCALE_ON(); _ONE_ON(); _COL_ON(); _GRADE_ON(); _PERCENTAGE_ON(); _AM_ON(); _PM_ON(); for (main_counter=1000000 ; main_counter>0 ;main_counter--){}; //delay to show all symbol ON /*Turn off all special symbols*/ _FREESCALE_OFF(); _ONE_OFF(); _COL_OFF(); _GRADE_OFF(); _PERCENTAGE_OFF(); _AM_OFF(); _PM_OFF(); #ifdef CW // If we are using CodeWarrior, we must call this function to change // the buffer behavior such that a new line character, "\n", is not // required to print characters to the terminal. setvbuf(stdout, NULL, _IONBF, 0); #endif printf("\n\r KL46 sLCD test \n"); printf("\n\r press a=all symbols on, 0=all symbols Off, 1 to 6 symbols"); _FREESCALE_ON(); for(;;) { /*echoes all received character to terminal */ InpData[0] = getchar(); printf("%c",InpData[0]); main_counter++; sprintf(sLCDBuffer,"%04i",main_counter%1000); vfnLCD_Write_Msg(sLCDBuffer); LED_GREEN_NegVal(); LED_RED_NegVal(); LED_YELLOW_NegVal(); LED_ORANGE_NegVal(); switch ( InpData[0]) { case 'a': _FREESCALE_ON(); _ONE_ON(); _COL_ON(); _GRADE_ON(); _PERCENTAGE_ON(); _AM_ON(); _PM_ON(); break; case '0': _FREESCALE_OFF(); _ONE_OFF(); _COL_OFF(); _GRADE_OFF(); _PERCENTAGE_OFF(); _AM_OFF(); _PM_OFF(); break; case '1': _FREESCALE_ON(); break; case '2': _COL_ON(); break; case '3': _GRADE_ON(); break; case '4': _PERCENTAGE_ON(); break; case '5': _AM_ON(); break; case '6': _PM_ON(); break; default: _FREESCALE_ON(); _ONE_OFF(); _COL_OFF(); _GRADE_OFF(); _PERCENTAGE_OFF(); _AM_OFF(); _PM_OFF(); } } /*** Don't write any code pass this line, or it will be deleted during code generation. ***/ /*** RTOS startup code. Macro PEX_RTOS_START is defined by the RTOS component. DON'T MODIFY THIS CODE!!! ***/ #ifdef PEX_RTOS_START PEX_RTOS_START(); /* Startup of the selected RTOS. Macro is defined by the RTOS component. */ #endif /*** End of RTOS startup code. ***/ /*** Processor Expert end of main routine. DON'T MODIFY THIS CODE!!! ***/ for(;;){} /*** Processor Expert end of main routine. DON'T WRITE CODE BELOW!!! ***/ } /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***/
/* ** =================================================================== ** Method : PE_low_level_init (component MKL46Z256LL4) ** ** Description : ** Initializes beans and provides common register initialization. ** The method is called automatically as a part of the ** application initialization code. ** This method is internal. It is used by Processor Expert only. ** =================================================================== */ void PE_low_level_init(void) { #ifdef PEX_RTOS_INIT PEX_RTOS_INIT(); /* Initialization of the selected RTOS. Macro is defined by the RTOS component. */ #endif /* Initialization of the SIM module */ /* PORTA_PCR4: ISF=0,MUX=7 */ PORTA_PCR4 = (uint32_t)((PORTA_PCR4 & (uint32_t)~(uint32_t)( PORT_PCR_ISF_MASK )) | (uint32_t)( PORT_PCR_MUX(0x07) )); /* Initialization of the RCM module */ /* RCM_RPFW: RSTFLTSEL=0 */ RCM_RPFW &= (uint8_t)~(uint8_t)(RCM_RPFW_RSTFLTSEL(0x1F)); /* RCM_RPFC: RSTFLTSS=0,RSTFLTSRW=0 */ RCM_RPFC &= (uint8_t)~(uint8_t)( RCM_RPFC_RSTFLTSS_MASK | RCM_RPFC_RSTFLTSRW(0x03) ); /* Initialization of the FTFL_FlashConfig module */ /* Initialization of the PMC module */ /* PMC_LVDSC1: LVDACK=1,LVDIE=0,LVDRE=1,LVDV=0 */ PMC_LVDSC1 = (uint8_t)((PMC_LVDSC1 & (uint8_t)~(uint8_t)( PMC_LVDSC1_LVDIE_MASK | PMC_LVDSC1_LVDV(0x03) )) | (uint8_t)( PMC_LVDSC1_LVDACK_MASK | PMC_LVDSC1_LVDRE_MASK )); /* PMC_LVDSC2: LVWACK=1,LVWIE=0,LVWV=0 */ PMC_LVDSC2 = (uint8_t)((PMC_LVDSC2 & (uint8_t)~(uint8_t)( PMC_LVDSC2_LVWIE_MASK | PMC_LVDSC2_LVWV(0x03) )) | (uint8_t)( PMC_LVDSC2_LVWACK_MASK )); /* PMC_REGSC: BGEN=0,ACKISO=0,BGBE=0 */ PMC_REGSC &= (uint8_t)~(uint8_t)( PMC_REGSC_BGEN_MASK | PMC_REGSC_ACKISO_MASK | PMC_REGSC_BGBE_MASK ); /* SMC_PMPROT: ??=0,??=0,AVLP=0,??=0,ALLS=0,??=0,AVLLS=0,??=0 */ SMC_PMPROT = 0x00U; /* Setup Power mode protection register */ /* Common initialization of the CPU registers */ /* PORTA_PCR20: ISF=0,MUX=7 */ PORTA_PCR20 = (uint32_t)((PORTA_PCR20 & (uint32_t)~(uint32_t)( PORT_PCR_ISF_MASK )) | (uint32_t)( PORT_PCR_MUX(0x07) )); /* NVIC_IPR1: PRI_6=0 */ NVIC_IPR1 &= (uint32_t)~(uint32_t)(NVIC_IP_PRI_6(0xFF)); /* ### FreeRTOS "FRTOS1" init code ... */ #if configSYSTICK_USE_LOW_POWER_TIMER /* enable clocking for low power timer, otherwise vPortStopTickTimer() will crash */ SIM_PDD_SetClockGate(SIM_BASE_PTR, SIM_PDD_CLOCK_GATE_LPTMR0, PDD_ENABLE); #endif vPortStopTickTimer(); /* tick timer shall not run until the RTOS scheduler is started */ /* ### BitIO_LDD "BitIoLdd1" component auto initialization. Auto initialization feature can be disabled by component property "Auto initialization". */ (void)BitIoLdd1_Init(NULL); /* ### SegLCD_LDD "SegLCD1" component auto initialization. Auto initialization feature can be disabled by component property "Auto initialization". */ (void)SegLCD1_Init(NULL); /* ### Serial_LDD "IO1" component auto initialization. Auto initialization feature can be disabled by component property "Auto initialization". */ (void)IO1_Init(NULL); }