
Previously, the machine.UART0 object had two meanings: - it was the first UART on the chip - it was the default output for println These two meanings conflict, and resulted in workarounds like: - Defining UART0 to refer to the USB-CDC interface (atsamd21, atsamd51, nrf52840), even though that clearly isn't an UART. - Defining NRF_UART0 to avoid a conflict with UART0 (which was redefined as a USB-CDC interface). - Defining aliases like UART0 = UART1, which refer to the same hardware peripheral (stm32). This commit changes this to use a new machine.Serial object for the default serial port. It might refer to the first or second UART depending on the board, or even to the USB-CDC interface. Also, UART0 now really refers to the first UART on the chip, no longer to a USB-CDC interface. The changes in the runtime package are all just search+replace. The changes in the machine package are a mixture of search+replace and manual modifications. This commit does not affect binary size, in fact it doesn't affect the resulting binary at all.
65 строки
1 КиБ
Go
65 строки
1 КиБ
Go
// +build nrf52
|
|
|
|
package machine
|
|
|
|
import (
|
|
"device/nrf"
|
|
)
|
|
|
|
// Hardware pins
|
|
const (
|
|
P0_00 Pin = 0
|
|
P0_01 Pin = 1
|
|
P0_02 Pin = 2
|
|
P0_03 Pin = 3
|
|
P0_04 Pin = 4
|
|
P0_05 Pin = 5
|
|
P0_06 Pin = 6
|
|
P0_07 Pin = 7
|
|
P0_08 Pin = 8
|
|
P0_09 Pin = 9
|
|
P0_10 Pin = 10
|
|
P0_11 Pin = 11
|
|
P0_12 Pin = 12
|
|
P0_13 Pin = 13
|
|
P0_14 Pin = 14
|
|
P0_15 Pin = 15
|
|
P0_16 Pin = 16
|
|
P0_17 Pin = 17
|
|
P0_18 Pin = 18
|
|
P0_19 Pin = 19
|
|
P0_20 Pin = 20
|
|
P0_21 Pin = 21
|
|
P0_22 Pin = 22
|
|
P0_23 Pin = 23
|
|
P0_24 Pin = 24
|
|
P0_25 Pin = 25
|
|
P0_26 Pin = 26
|
|
P0_27 Pin = 27
|
|
P0_28 Pin = 28
|
|
P0_29 Pin = 29
|
|
P0_30 Pin = 30
|
|
P0_31 Pin = 31
|
|
)
|
|
|
|
// Get peripheral and pin number for this GPIO pin.
|
|
func (p Pin) getPortPin() (*nrf.GPIO_Type, uint32) {
|
|
return nrf.P0, uint32(p)
|
|
}
|
|
|
|
func (uart *UART) setPins(tx, rx Pin) {
|
|
nrf.UART0.PSELTXD.Set(uint32(tx))
|
|
nrf.UART0.PSELRXD.Set(uint32(rx))
|
|
}
|
|
|
|
func (i2c *I2C) setPins(scl, sda Pin) {
|
|
i2c.Bus.PSELSCL.Set(uint32(scl))
|
|
i2c.Bus.PSELSDA.Set(uint32(sda))
|
|
}
|
|
|
|
// PWM
|
|
var (
|
|
PWM0 = &PWM{PWM: nrf.PWM0}
|
|
PWM1 = &PWM{PWM: nrf.PWM1}
|
|
PWM2 = &PWM{PWM: nrf.PWM2}
|
|
)
|