16.8.2.1.2 Code
Add to the main application source file, outside of any functions:
structusart_module usart_instance;
Copy-paste the following callback function code to your user application:#define MAX_RX_BUFFER_LENGTH 5volatileuint8_t rx_buffer[MAX_RX_BUFFER_LENGTH];
Copy-paste the following setup code to your user application:voidusart_read_callback(structusart_module *constusart_module){usart_write_buffer_job(&usart_instance,(uint8_t *)rx_buffer, MAX_RX_BUFFER_LENGTH);}voidusart_write_callback(structusart_module *constusart_module){port_pin_toggle_output_level(LED_0_PIN);}
Add to user application initialization (typically the start of main()):voidconfigure_usart(void){structusart_config config_usart;usart_get_config_defaults(&config_usart);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;while(usart_init(&usart_instance,EDBG_CDC_MODULE, &config_usart) != STATUS_OK) {}usart_enable(&usart_instance);}voidconfigure_usart_callbacks(void){usart_register_callback(&usart_instance,usart_write_callback, USART_CALLBACK_BUFFER_TRANSMITTED);usart_register_callback(&usart_instance,usart_read_callback, USART_CALLBACK_BUFFER_RECEIVED);usart_enable_callback(&usart_instance, USART_CALLBACK_BUFFER_TRANSMITTED);usart_enable_callback(&usart_instance, USART_CALLBACK_BUFFER_RECEIVED);}
configure_usart();configure_usart_callbacks();
