16.8.2.1.3 Workflow
- Create a module software instance structure for the USART module to store the USART driver state while it is in use.
structusart_module usart_instance;Note: This should never go out of scope as long as the module is in use. In most cases, this should be global. - Configure the USART module.
- Create a USART module configuration struct, which can be filled out to adjust the configuration of a physical USART peripheral.
structusart_config config_usart; - Initialize the USART configuration struct with the module's default values.
usart_get_config_defaults(&config_usart);Note: This should always be performed before using the configuration struct to ensure that all values are initialized to known default settings. - Alter the USART settings to configure the physical pinout, baudrate, and other relevant parameters.
config_usart.baudrate = 9600;config_usart.mux_setting = EDBG_CDC_SERCOM_MUX_SETTING;config_usart.pinmux_pad0 = EDBG_CDC_SERCOM_PINMUX_PAD0;config_usart.pinmux_pad1 = EDBG_CDC_SERCOM_PINMUX_PAD1;config_usart.pinmux_pad2 = EDBG_CDC_SERCOM_PINMUX_PAD2;config_usart.pinmux_pad3 = EDBG_CDC_SERCOM_PINMUX_PAD3; - Configure the USART module with the desired settings, retrying while the driver is busy until the configuration is stressfully set.
while(usart_init(&usart_instance,EDBG_CDC_MODULE, &config_usart) != STATUS_OK) {} - Enable the USART module.
usart_enable(&usart_instance);
- Configure the USART callbacks.
- Register the TX and RX callback functions with the driver.
usart_register_callback(&usart_instance,usart_write_callback, USART_CALLBACK_BUFFER_TRANSMITTED);usart_register_callback(&usart_instance,usart_read_callback, USART_CALLBACK_BUFFER_RECEIVED); - Enable the TX and RX callbacks so that they will be called by the driver when appropriate.
usart_enable_callback(&usart_instance, USART_CALLBACK_BUFFER_TRANSMITTED);usart_enable_callback(&usart_instance, USART_CALLBACK_BUFFER_RECEIVED);
