/*! * @brief Main function */ int main(void) { flexio_uart_config_t config; flexio_uart_transfer_t xfer; flexio_uart_transfer_t sendXfer; flexio_uart_transfer_t receiveXfer; size_t receivedBytes; uint32_t i; BOARD_InitPins(); BOARD_BootClockRUN(); CLOCK_SetFlexio0Clock(1U); /* * config.enableUart = true; * config.enableInDoze = false; * config.enableInDebug = true; * config.enableFastAccess = false; * config.baudRate_Bps = 115200U; * config.bitCountPerChar = kFLEXIO_UART_8BitsPerChar; */ FLEXIO_UART_GetDefaultConfig(&config); config.baudRate_Bps = BOARD_DEBUG_UART_BAUDRATE; config.enableUart = true; uartDev.flexioBase = BOARD_FLEXIO_BASE; uartDev.TxPinIndex = FLEXIO_UART_TX_PIN; uartDev.RxPinIndex = FLEXIO_UART_RX_PIN; uartDev.shifterIndex[0] = 0U; uartDev.shifterIndex[1] = 1U; uartDev.timerIndex[0] = 0U; uartDev.timerIndex[1] = 1U; FLEXIO_UART_Init(&uartDev, &config, FLEXIO_CLOCK_FREQUENCY); FLEXIO_UART_TransferCreateHandle(&uartDev, &g_uartHandle, FLEXIO_UART_UserCallback, NULL); FLEXIO_UART_TransferStartRingBuffer(&uartDev, &g_uartHandle, g_rxRingBuffer, RX_RING_BUFFER_SIZE); /* Send g_tipString out. */ xfer.data = g_tipString; xfer.dataSize = sizeof(g_tipString) - 1; txOnGoing = true; FLEXIO_UART_TransferSendNonBlocking(&uartDev, &g_uartHandle, &xfer); /* Wait send finished */ while (txOnGoing) { } /* Start to echo. */ sendXfer.data = g_txBuffer; sendXfer.dataSize = ECHO_BUFFER_SIZE; receiveXfer.data = g_rxBuffer; receiveXfer.dataSize = ECHO_BUFFER_SIZE; while (1) { /* If g_txBuffer is empty and g_rxBuffer is full, copy g_rxBuffer to g_txBuffer. */ if ((!rxBufferEmpty) && (!txBufferFull)) { memcpy(g_txBuffer, g_rxBuffer, ECHO_BUFFER_SIZE); rxBufferEmpty = true; txBufferFull = true; } /* If RX is idle and g_rxBuffer is empty, start to read data to g_rxBuffer. */ if ((!rxOnGoing) && rxBufferEmpty) { rxOnGoing = true; FLEXIO_UART_TransferReceiveNonBlocking(&uartDev, &g_uartHandle, &receiveXfer, &receivedBytes); if (ECHO_BUFFER_SIZE == receivedBytes) { rxBufferEmpty = false; rxOnGoing = false; } } /* If TX is idle and g_txBuffer is full, start to send data. */ if ((!txOnGoing) && txBufferFull) { txOnGoing = true; FLEXIO_UART_TransferSendNonBlocking(&uartDev, &g_uartHandle, &sendXfer); } /* Delay some time, simulate the app is processing other things, input data save to ring buffer. */ i = 0x10U; while (i--) { __NOP(); } } }
/*! * @brief Main function */ int main(void) { pdb_config_t pdbConfigStruct; pdb_adc_pretrigger_config_t pdbAdcPreTriggerConfigStruct; BOARD_InitPins(); BOARD_BootClockRUN(); BOARD_InitDebugConsole(); EnableIRQ(DEMO_PDB_IRQ_ID); EnableIRQ(DEMO_ADC_IRQ_ID); PRINTF("\r\nPDB ADC16 Pre-Trigger Example.\r\n"); /* Configure the PDB counter. */ /* * pdbConfigStruct.loadValueMode = kPDB_LoadValueImmediately; * pdbConfigStruct.prescalerDivider = kPDB_PrescalerDivider1; * pdbConfigStruct.dividerMultiplicationFactor = kPDB_DividerMultiplicationFactor1; * pdbConfigStruct.triggerInputSource = kPDB_TriggerSoftware; * pdbConfigStruct.enableContinuousMode = false; */ PDB_GetDefaultConfig(&pdbConfigStruct); PDB_Init(DEMO_PDB_BASE, &pdbConfigStruct); /* Configure the delay interrupt. */ PDB_SetModulusValue(DEMO_PDB_BASE, 1000U); /* The available delay value is less than or equal to the modulus value. */ PDB_SetCounterDelayValue(DEMO_PDB_BASE, 1000U); PDB_EnableInterrupts(DEMO_PDB_BASE, kPDB_DelayInterruptEnable); /* Configure the ADC Pre-Trigger. */ pdbAdcPreTriggerConfigStruct.enablePreTriggerMask = 1U << DEMO_PDB_ADC_PRETRIGGER_CHANNEL; pdbAdcPreTriggerConfigStruct.enableOutputMask = 1U << DEMO_PDB_ADC_PRETRIGGER_CHANNEL; pdbAdcPreTriggerConfigStruct.enableBackToBackOperationMask = 0U; PDB_SetADCPreTriggerConfig(DEMO_PDB_BASE, DEMO_PDB_ADC_TRIGGER_CHANNEL, &pdbAdcPreTriggerConfigStruct); PDB_SetADCPreTriggerDelayValue(DEMO_PDB_BASE, DEMO_PDB_ADC_TRIGGER_CHANNEL, DEMO_PDB_ADC_PRETRIGGER_CHANNEL, 200U); /* The available Pre-Trigger delay value is less than or equal to the modulus value. */ PDB_DoLoadValues(DEMO_PDB_BASE); /* Configure the ADC. */ DEMO_InitPDB_ADC(); g_PdbDelayInterruptCounter = 0U; g_AdcInterruptCounter = 0U; while (1) { PRINTF("\r\nType any key into terminal to trigger the PDB and then trigger the ADC's conversion ...\r\n"); GETCHAR(); g_PdbDelayInterruptFlag = false; g_AdcInterruptFlag = false; PDB_DoSoftwareTrigger(DEMO_PDB_BASE); while ((!g_PdbDelayInterruptFlag) || (!g_AdcInterruptFlag)) { } PRINTF("\r\n"); PRINTF("PDB Interrupt Counter: %d\r\n", g_PdbDelayInterruptCounter); PRINTF("ADC Conversion Interrupt Counter: %d\r\n", g_AdcInterruptCounter); PRINTF("ADC Conversion Value: %d\r\n", g_AdcConvValue); } }
int main(void) { uint8_t waveForm = 0; slcd_config_t config; slcd_clock_config_t clkConfig = { kSLCD_AlternateClk1, // MCGIRCLK wenxue kSLCD_AltClkDivFactor256, // MCGIRCLK =8M 8M/256=32.15k kSLCD_ClkPrescaler01, // wenxue LCLK=1 #if FSL_FEATURE_SLCD_HAS_FAST_FRAME_RATE false #endif }; /* Hardware initialize. */ BOARD_InitPins(); // wenxue 要修改 BOARD_BootClockRUN(); BOARD_InitDebugConsole(); /* Enable the MCGIRCLK */ MCG->C1 |= MCG_C1_IRCLKEN_MASK; PRINTF("\r\nSLCD Example Starts.\r\n"); /* SLCD get default configure. */ /* * config.displayMode = kSLCD_NormalMode; * config.powerSupply = kSLCD_InternalVll3UseChargePump; * config.voltageTrim = kSLCD_RegulatedVolatgeTrim00; * config.lowPowerBehavior = kSLCD_EnabledInWaitStop; * config.frameFreqIntEnable = false; * config.faultConfig = NULL; */ SLCD_GetDefaultConfig(&config); /* Verify and Complete the configuration structure. */ config.clkConfig = &clkConfig; config.loadAdjust = kSLCD_HighLoadOrSlowestClkSrc; config.dutyCycle = kSLCD_1Div4DutyCycle; /* 全部LCD 引脚配置 */ config.slcdLowPinEnabled = 0xFFF0FF7FU; /* LCD_P14/15/20/24/26/27 相应位置为1 */ config.slcdHighPinEnabled = 0x00000F80U; /* LCD_P8/10/11/12/27/28+32= LCD_P40/42/43/44/59/60. 相应位置为1 */ /* COM 口配置 */ config.backPlaneLowPin = 0x0000010EU; /* LCD_P1/2/3/8 */ config.backPlaneHighPin = 0x00000000U; /* */ config.faultConfig = NULL; /* SLCD Initialize. */ SLCD_Init(LCD, &config); /* Set SLCD front plane phase to show: all segments on . */ waveForm = (kSLCD_PhaseAActivate | kSLCD_PhaseBActivate | kSLCD_PhaseCActivate | kSLCD_PhaseDActivate); /* Set SLCD back plane phase. */ /* COM 口 wenxue */ SLCD_SetBackPlanePhase(LCD, 1, kSLCD_PhaseAActivate); /* SLCD COM1 --- LCD_P1. */ SLCD_SetBackPlanePhase(LCD, 2, kSLCD_PhaseBActivate); /* SLCD COM2 --- LCD_P2. */ SLCD_SetBackPlanePhase(LCD, 3, kSLCD_PhaseCActivate); /* SLCD COM3 --- LCD_P3. */ SLCD_SetBackPlanePhase(LCD, 8, kSLCD_PhaseDActivate); /* SLCD COM4 --- LCD_P8. */ /* Set SLCD front plane phase to show. */ /* Seg 口 wenxue */ SLCD_SetFrontPlaneSegments(LCD, 20, waveForm); /* SLCD P05 --- LCD_P20. */ SLCD_SetFrontPlaneSegments(LCD, 24, waveForm); /* SLCD P06 --- LCD_P24. */ SLCD_SetFrontPlaneSegments(LCD, 26, waveForm); /* SLCD P07 --- LCD_P26. */ SLCD_SetFrontPlaneSegments(LCD, 27, waveForm); /* SLCD P08 --- LCD_P27. */ SLCD_SetFrontPlaneSegments(LCD, 40, waveForm); /* SLCD P09 --- LCD_P40. */ SLCD_SetFrontPlaneSegments(LCD, 42, waveForm); /* SLCD P10 --- LCD_P42. */ SLCD_SetFrontPlaneSegments(LCD, 43, waveForm); /* SLCD P11 --- LCD_P43. */ SLCD_SetFrontPlaneSegments(LCD, 44, waveForm); /* SLCD P12 --- LCD_P44. */ /* Starts SLCD display. */ SLCD_StartDisplay(LCD); PRINTF("\r\nSLCD Displays All Segments.\r\n"); SLCD_TimeDelay(0xFFFFFFU); PRINTF("\r\nSLCD Starts Blink Mode.\r\n"); /* Blink mode Display. */ SLCD_StartBlinkMode(LCD, kSLCD_BlankDisplayBlink, kSLCD_BlinkRate01); SLCD_TimeDelay(0xFFFFFFU); PRINTF("\r\nSLCD Stops Blink Mode.\r\n"); /* Stops SLCD blink display mode. */ SLCD_StopBlinkMode(LCD); SLCD_TimeDelay(0xFFFFFFU); PRINTF("\r\nSLCD Stops Display.\r\n"); /* Stops SLCD display. */ SLCD_StopDisplay(LCD); PRINTF("\r\nSLCD Example Ends.\r\n"); while (1) { } }
/* FUNCTION ************************************************************************************************************ * * Function Name : BOARD_InitBootPins * Description : Calls initialization functions. * * END ****************************************************************************************************************/ void BOARD_InitBootPins(void) { BOARD_InitPins(); }