You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

29 lines
680 B
C

#include "usart_sync.h"
#include "core.h"
#define USART_TX PIN_PA04
#define USART_RX PIN_PA05
#define USART_SERCOM SERCOM0
void usart_init(void)
{
// CLOCKS INIT PCHCTRL
if(!SERCOM0->USART.SYNCBUSY.bit.SWRST)
{
uint32_t mode = SERCOM0->USART.CTRLA.bit.MODE;
if(SERCOM0->USART.CTRLA.bit.ENABLE)
{
SERCOM0->USART.CTRLA.bit.ENABLE = 0;
while(SERCOM0->USART.SYNCBUSY.bit.ENABLE);
}
SERCOM0->USART.CTRLA.reg = mode | SERCOM_USART_CTRLA_SWRST;
while(SERCOM0->USART.SYNCBUSY.bit.SWRST || SERCOM0->USART.SYNCBUSY.bit.ENABLE);
}
while(SERCOM0->USART.SYNCBUSY.bit.SWRST);
CRITICAL_SECTION_ENTER();
SERCOM0->USART.CTRLA.bit.MODE =
CRITICAL_SECTION_LEAVE();
}