28 #ifndef __SYSUTILS_H__ 29 #define __SYSUTILS_H__ 75 #define PMUX_SELECTION(GPIO_PORT, GPIO_PIN, PER_TYPE) \ 76 if ((GPIO_PIN) & 1) { \ 77 PORT->Group[(GPIO_PORT)].PMUX[(GPIO_PIN) >> 1].bit.PMUXO = (PER_TYPE); \ 80 PORT->Group[(GPIO_PORT)].PMUX[(GPIO_PIN) >> 1].bit.PMUXE = (PER_TYPE); \ 86 #define DATA_OUTPUT_STATE(GPIO_PORT, DATA_MASK, STATE) \ 88 PORT->Group[(GPIO_PORT)].OUTSET.reg = (DATA_MASK); \ 91 PORT->Group[(GPIO_PORT)].OUTCLR.reg = (DATA_MASK); \ 97 #define PMUX_ENABLE(GPIO_PORT, GPIO_PIN) \ 98 PORT->Group[(GPIO_PORT)].PINCFG[(GPIO_PIN)].bit.PMUXEN = 1 103 #define PMUX_DISABLE(GPIO_PORT, GPIO_PIN) \ 104 PORT->Group[(GPIO_PORT)].PINCFG[(GPIO_PIN)].bit.PMUXEN = 0 109 #define PIN_CONFIGURATION(GPIO_PORT, GPIO_PIN, CONFIG) \ 110 PORT->Group[(GPIO_PORT)].PINCFG[(GPIO_PIN)].reg = (CONFIG) 115 #define DATA_DIRECTION_OUTPUT(GPIO_PORT, DATA_MASK) \ 116 PORT->Group[(GPIO_PORT)].DIRSET.reg = (DATA_MASK) 121 #define DATA_DIRECTION_INPUT(GPIO_PORT, DATA_MASK) \ 122 PORT->Group[(GPIO_PORT)].DIRCLR.reg = (DATA_MASK) 127 #define SYNCBUSY_WAIT(PER, BITMASK) \ 128 while ((PER)->SYNCBUSY.reg & (BITMASK)) { \ 135 #define CLOCK_ENABLE(BUS, BIT) \ 136 MCLK->BUS.bit.BIT = 1 166 #define SET_CLOCK_SOURCE(PER_GCLK_ID, GCLK_INDEX) \ 167 GCLK->PCHCTRL[(PER_GCLK_ID)].bit.CHEN = 0; \ 168 while (GCLK->PCHCTRL[(PER_GCLK_ID)].bit.CHEN) { \ 171 GCLK->PCHCTRL[(PER_GCLK_ID)].bit.GEN = GCLK_PCHCTRL_GEN((GCLK_INDEX)); \ 172 GCLK->PCHCTRL[(PER_GCLK_ID)].bit.CHEN = 1; \ 173 while (GCLK->SYNCBUSY.reg & GCLK_SYNCBUSY_GENCTRL((GCLK_INDEX))) { \ 180 #define max(a, b) (((a) > (b)) ? (a) : (b)) 187 #define min(a, b) (((a) < (b)) ? (a) : (b)) 207 #endif // __SYSUTILS_H__ PerType
Definition: SysUtils.h:53
void GClkFreqUpdate(uint8_t gclkIndex, uint32_t freqReq)
Update GCLK frequency.