/* * @brief Changes the baudrate of UART channel. * * @param UART_t * Pointer to the UART APP handle. * @param baud Value of new baudrate. * @param oversampling Number of samples to be considered for each symbol. 16 is the standard value. * * @return UART_STATUS_t UART_STATUS_SUCCESS if baudrate changed successfully. * UART_STATUS_BUSY if the UART channel is busy. * * \par<b>Description:</b><br> * The function stops the channel, calculates the clock divider values to achieve the desired baudrate. * Sets the divider values and reconfigures the channel as per the configuration in the UI. The channel is * enabled at the end of configuration. */ UART_STATUS_t UART_SetBaudrate(const UART_t * handle, uint32_t baud, uint32_t oversampling) { UART_STATUS_t ret_stat = UART_STATUS_BUSY; const UART_TX_CONFIG_t * ptr_tx_conf = handle->config->tx_pin_config; XMC_ASSERT("UART_SetBaudrate: UART APP handle invalid", ((handle != NULL)&& ((handle->config != NULL) && (handle->runtime != NULL)))) if ((handle->runtime->tx_busy == false) && (handle->runtime->rx_busy == false)) { /* Set UART TX pin as input pin to avoid spikes on the pin.*/ if (handle->config->mode != UART_MODE_LOOPBACK) { XMC_GPIO_SetMode(ptr_tx_conf->port, ptr_tx_conf->pin, XMC_GPIO_MODE_INPUT_TRISTATE); } /* Stop the UART channel before changing the baudrate.*/ if (XMC_UART_CH_Stop(handle->channel) == XMC_UART_CH_STATUS_OK) { /*Change the baudrate*/ ret_stat = (UART_STATUS_t)XMC_UART_CH_SetBaudrate(handle->channel, baud, oversampling); /*Set the sample point if the baudrate is modified*/ if (ret_stat == UART_STATUS_SUCCESS) { XMC_UART_CH_SetSamplePoint(handle->channel, (uint32_t)(oversampling >> 1U)+1U); } /*Enable UART*/ XMC_UART_CH_Start(handle->channel); /* Initialize UART TX pin */ if (handle->config->mode != UART_MODE_LOOPBACK) { XMC_GPIO_Init(ptr_tx_conf->port, ptr_tx_conf->pin, ptr_tx_conf->config); } }
int main(void) { XMC_GPIO_SetMode(XMC_GPIO_PORT$$com.sysprogs.examples.ledblink.LEDPORT$$, $$com.sysprogs.examples.ledblink.LEDBIT$$, XMC_GPIO_MODE_OUTPUT_PUSH_PULL); unsigned periodInMsec = $$com.sysprogs.examples.ledblink.DELAYMSEC$$; SysTick_Config((SystemCoreClock / 1000) * periodInMsec); for (;;) { } }
void configureBccuGlobal() { if (gBccuConfigured) { return; } XMC_BCCU_GlobalInit(BCCU, &kBCCUGlobalConfig); BCCU->CHTRIG = 0; #ifdef XMC_BCCU_CH0_PIN XMC_GPIO_SetMode(XMC_BCCU_CH0_PIN, XMC_BCCU_CH0_PIN_MODE); #endif #ifdef XMC_BCCU_CH1_PIN XMC_GPIO_SetMode(XMC_BCCU_CH1_PIN, XMC_BCCU_CH1_PIN_MODE); #endif #ifdef XMC_BCCU_CH2_PIN XMC_GPIO_SetMode(XMC_BCCU_CH2_PIN, XMC_BCCU_CH2_PIN_MODE); #endif #ifdef XMC_BCCU_CH3_PIN XMC_GPIO_SetMode(XMC_BCCU_CH3_PIN, XMC_BCCU_CH3_PIN_MODE); #endif #ifdef XMC_BCCU_CH4_PIN XMC_GPIO_SetMode(XMC_BCCU_CH4_PIN, XMC_BCCU_CH4_PIN_MODE); #endif #ifdef XMC_BCCU_CH5_PIN XMC_GPIO_SetMode(XMC_BCCU_CH5_PIN, XMC_BCCU_CH5_PIN_MODE); #endif #ifdef XMC_BCCU_CH6_PIN XMC_GPIO_SetMode(XMC_BCCU_CH6_PIN, XMC_BCCU_CH6_PIN_MODE); #endif #ifdef XMC_BCCU_CH7_PIN XMC_GPIO_SetMode(XMC_BCCU_CH7_PIN, XMC_BCCU_CH7_PIN_MODE); #endif #ifdef XMC_BCCU_CH8_PIN XMC_GPIO_SetMode(XMC_BCCU_CH8_PIN, XMC_BCCU_CH8_PIN_MODE); #endif gBccuConfigured = true; }