github.com/tinygo-org/tinygo@v0.31.3-0.20240404173401-90b0bf646c27/src/runtime/runtime_atsame5x_can.go (about)

     1  //go:build (sam && atsame51) || (sam && atsame54)
     2  
     3  package runtime
     4  
     5  import (
     6  	"device/sam"
     7  )
     8  
     9  func init() {
    10  	initCANClock()
    11  }
    12  
    13  func initCANClock() {
    14  	// Turn on clocks for CAN0/CAN1.
    15  	sam.MCLK.AHBMASK.SetBits(sam.MCLK_AHBMASK_CAN0_)
    16  	sam.MCLK.AHBMASK.SetBits(sam.MCLK_AHBMASK_CAN1_)
    17  
    18  	// Put Generic Clock Generator 1 as source for USB
    19  	sam.GCLK.PCHCTRL[sam.PCHCTRL_GCLK_CAN0].Set((sam.GCLK_PCHCTRL_GEN_GCLK1 << sam.GCLK_PCHCTRL_GEN_Pos) |
    20  		sam.GCLK_PCHCTRL_CHEN)
    21  	sam.GCLK.PCHCTRL[sam.PCHCTRL_GCLK_CAN1].Set((sam.GCLK_PCHCTRL_GEN_GCLK1 << sam.GCLK_PCHCTRL_GEN_Pos) |
    22  		sam.GCLK_PCHCTRL_CHEN)
    23  }