6f418fc1b0
Converts generted pins to use qstrs instead of string pointers. This patch also adds the following functions: pyb.Pin.names() pyb.Pin.af_list() pyb.Pin.gpio() dir(pyb.Pin.board) and dir(pyb.Pin.cpu) also produce useful results. pyb.Pin now takes kw args. pyb.Pin.__str__ now prints more useful information about the pin configuration. I found the following functions in my boot.py to be useful: ```python def pins(): for pin_name in dir(pyb.Pin.board): pin = pyb.Pin(pin_name) print('{:10s} {:s}'.format(pin_name, str(pin))) def af(): for pin_name in dir(pyb.Pin.board): pin = pyb.Pin(pin_name) print('{:10s} {:s}'.format(pin_name, str(pin.af_list()))) ```
39 lines
927 B
C
39 lines
927 B
C
// stm32fxx-prefix.c becomes the initial portion of the generated pins file.
|
|
|
|
#include <stdio.h>
|
|
#include <stdint.h>
|
|
#include <mk20dx128.h>
|
|
|
|
#include "teensy_hal.h"
|
|
|
|
#include "mpconfig.h"
|
|
#include "misc.h"
|
|
#include "qstr.h"
|
|
#include "obj.h"
|
|
#include "pin.h"
|
|
|
|
#define AF(af_idx, af_fn, af_unit, af_type, af_ptr) \
|
|
{ \
|
|
{ &pin_af_type }, \
|
|
.name = MP_QSTR_AF ## af_idx ## _ ## af_fn ## af_unit, \
|
|
.idx = (af_idx), \
|
|
.fn = AF_FN_ ## af_fn, \
|
|
.unit = (af_unit), \
|
|
.type = AF_PIN_TYPE_ ## af_fn ## _ ## af_type, \
|
|
.af_fn = (af_ptr) \
|
|
}
|
|
|
|
#define PIN(p_port, p_pin, p_num_af, p_af, p_adc_num, p_adc_channel) \
|
|
{ \
|
|
{ &pin_type }, \
|
|
.name = MP_QSTR_ ## p_port ## p_pin, \
|
|
.port = PORT_ ## p_port, \
|
|
.pin = (p_pin), \
|
|
.num_af = (p_num_af), \
|
|
.pin_mask = (1 << (p_pin)), \
|
|
.gpio = GPIO ## p_port, \
|
|
.af = p_af, \
|
|
.adc_num = p_adc_num, \
|
|
.adc_channel = p_adc_channel, \
|
|
}
|