MM32F3277 MicroPython移植过程中对应的接口文件

Posted 卓晴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MM32F3277 MicroPython移植过程中对应的接口文件相关的知识,希望对你有一定的参考价值。

简 介: 给出了在MM32移植MicroPython过程中基础语法中Pin相关的内容。

关键词 MM32F3277machinePin

 

§01 MacinePin


/* machine_pin.h */

#ifndef __MACHINE_PIN_H__
#define __MACHINE_PIN_H__

#include "py/runtime.h"

#include "hal_gpio.h"

typedef enum
{
    PIN_MODE_IN_ANALOG = 0u,
    PIN_MODE_IN_FLOATING,
    PIN_MODE_IN_PULLDOWN,
    PIN_MODE_IN_PULLUP,
    PIN_MODE_OUT_OPENDRAIN,
    PIN_MODE_OUT_PUSHPULL,
    PIN_MODE_AF_OPENDRAIN,
    PIN_MODE_AF_PUSHPULL,
} machine_pin_mode_t;

/* Pin class instance configuration structure. */
typedef struct
{
    mp_obj_base_t base;      // object base class.
    qstr          name;      // pad name
    GPIO_Type   * gpio_port; // gpio instance for pin
    uint32_t      gpio_pin;  // pin number

} machine_pin_obj_t;

extern const machine_pin_obj_t * machine_pin_board_pins[];
extern const uint32_t            machine_pin_board_pins_num;
extern const mp_obj_dict_t       machine_pin_board_pins_locals_dict;

/* for all the module to bind the pins. */
const machine_pin_obj_t *pin_find(mp_obj_t user_obj);
const machine_pin_obj_t *pin_find_by_name(const mp_obj_dict_t *name_dict, mp_obj_t name);

extern const mp_obj_type_t machine_pin_type;

#endif /* __MACHINE_PIN_H__ */

 

§02 BoardPin


/* machine_pin_board_pins.c */

#include "machine_pin.h"
#include "machine_adc.h"
#include "machine_uart.h"
#include "hal_common.h"
#include "hal_gpio.h"

extern const mp_obj_type_t machine_pin_type;

const uint32_t machine_pin_board_pins_num = 144;

const machine_pin_obj_t pin_PE2 = { .base = { &machine_pin_type }, .name = MP_QSTR_PE2, .gpio_port = GPIOE, .gpio_pin = 2 };
const machine_pin_obj_t pin_PE3 = { .base = { &machine_pin_type }, .name = MP_QSTR_PE3, .gpio_port = GPIOE, .gpio_pin = 3 };
const machine_pin_obj_t pin_PE4 = { .base = { &machine_pin_type }, .name = MP_QSTR_PE4, .gpio_port = GPIOE, .gpio_pin = 4 };
const machine_pin_obj_t pin_PE5 = { .base = { &machine_pin_type }, .name = MP_QSTR_PE5, .gpio_port = GPIOE, .gpio_pin = 5 };
const machine_pin_obj_t pin_PE6 = { .base = { &machine_pin_type }, .name = MP_QSTR_PE6, .gpio_port = GPIOE, .gpio_pin = 6 };
const machine_pin_obj_t pin_PC13 = { .base = { &machine_pin_type }, .name = MP_QSTR_PC13, .gpio_port = GPIOC, .gpio_pin = 13 };
const machine_pin_obj_t pin_PC14 = { .base = { &machine_pin_type }, .name = MP_QSTR_PC14, .gpio_port = GPIOC, .gpio_pin = 14 };
const machine_pin_obj_t pin_PC15 = { .base = { &machine_pin_type }, .name = MP_QSTR_PC15, .gpio_port = GPIOC, .gpio_pin = 15 };
const machine_pin_obj_t pin_PF0 = { .base = { &machine_pin_type }, .name = MP_QSTR_PF0, .gpio_port = GPIOF, .gpio_pin = 0 };
const machine_pin_obj_t pin_PF1 = { .base = { &machine_pin_type }, .name = MP_QSTR_PF1, .gpio_port = GPIOF, .gpio_pin = 1 };
const machine_pin_obj_t pin_PF2 = { .base = { &machine_pin_type }, .name = MP_QSTR_PF2, .gpio_port = GPIOF, .gpio_pin = 2 };
const machine_pin_obj_t pin_PF3 = { .base = { &machine_pin_type }, .name = MP_QSTR_PF3, .gpio_port = GPIOF, .gpio_pin = 3 };
const machine_pin_obj_t pin_PF4 = { .base = { &machine_pin_type }, .name = MP_QSTR_PF4, .gpio_port = GPIOF, .gpio_pin = 4 };
const machine_pin_obj_t pin_PF5 = { .base = { &machine_pin_type }, .name = MP_QSTR_PF5, .gpio_port = GPIOF, .gpio_pin = 5 };
const machine_pin_obj_t pin_PF6 = { .base = { &machine_pin_type }, .name = MP_QSTR_PF6, .gpio_port = GPIOF, .gpio_pin = 6 };
const machine_pin_obj_t pin_PF7 = { .base = { &machine_pin_type }, .name = MP_QSTR_PF7, .gpio_port = GPIOF, .gpio_pin = 7 };
const machine_pin_obj_t pin_PF8 = { .base = { &machine_pin_type }, .name = MP_QSTR_PF8, .gpio_port = GPIOF, .gpio_pin = 8 };
const machine_pin_obj_t pin_PF9 = { .base = { &machine_pin_type }, .name = MP_QSTR_PF9, .gpio_port = GPIOF, .gpio_pin = 9 };
const machine_pin_obj_t pin_PF10 = { .base = { &machine_pin_type }, .name = MP_QSTR_PF10, .gpio_port = GPIOF, .gpio_pin = 10 };
const machine_pin_obj_t pin_PH0 = { .base = { &machine_pin_type }, .name = MP_QSTR_PH0, .gpio_port = GPIOH, .gpio_pin = 0 };
const machine_pin_obj_t pin_PH1 = { .base = { &machine_pin_type }, .name = MP_QSTR_PH1, .gpio_port = GPIOH, .gpio_pin = 1 };
const machine_pin_obj_t pin_PC0 = { .base = { &machine_pin_type }, .name = MP_QSTR_PC0, .gpio_port = GPIOC, .gpio_pin = 0 };
const machine_pin_obj_t pin_PC1 = { .base = { &machine_pin_type }, .name = MP_QSTR_PC1, .gpio_port = GPIOC, .gpio_pin = 1 };
const machine_pin_obj_t pin_PC2 = { .base = { &machine_pin_type }, .name = MP_QSTR_PC2, .gpio_port = GPIOC, .gpio_pin = 2 };
const machine_pin_obj_t pin_PC3 = { .base = { &machine_pin_type }, .name = MP_QSTR_PC3, .gpio_port = GPIOC, .gpio_pin = 3 };
const machine_pin_obj_t pin_PA0 = { .base = { &machine_pin_type }, .name = MP_QSTR_PA0, .gpio_port = GPIOA, .gpio_pin = 0 };
const machine_pin_obj_t pin_PA1 = { .base = { &machine_pin_type }, .name = MP_QSTR_PA1, .gpio_port = GPIOA, .gpio_pin = 1 };
const machine_pin_obj_t pin_PA2 = { .base = { &machine_pin_type }, .name = MP_QSTR_PA2, .gpio_port = GPIOA, .gpio_pin = 2 };
const machine_pin_obj_t pin_PA3 = { .base = { &machine_pin_type }, .name = MP_QSTR_PA3, .gpio_port = GPIOA, .gpio_pin = 3 };
const machine_pin_obj_t pin_PA4 = { .base = { &machine_pin_type }, .name = MP_QSTR_PA4, .gpio_port = GPIOA, .gpio_pin = 4 };
const machine_pin_obj_t pin_PA5 = { .base = { &machine_pin_type }, .name = MP_QSTR_PA5, .gpio_port = GPIOA, .gpio_pin = 5 };
const machine_pin_obj_t pin_PA6 = { .base = { &machine_pin_type }, .name = MP_QSTR_PA6, .gpio_port = GPIOA, .gpio_pin = 6 };
const machine_pin_obj_t pin_PA7 = { .base = { &machine_pin_type }, .name = MP_QSTR_PA7, .gpio_port = GPIOA, .gpio_pin = 7 };
const machine_pin_obj_t pin_PC4 = { .base = { &machine_pin_type }, .name = MP_QSTR_PC4, .gpio_port = GPIOC, .gpio_pin = 4 };
const machine_pin_obj_t pin_PC5 = { .base = { &machine_pin_type }, .name = MP_QSTR_PC5, .gpio_port = GPIOC, .gpio_pin = 5 };
const machine_pin_obj_t pin_PB0 = { .base = { &machine_pin_type }, .name = MP_QSTR_PB0, .gpio_port = GPIOB, .gpio_pin = 0 };
const machine_pin_obj_t pin_PB1 = { .base = { &machine_pin_type }, .name = MP_QSTR_PB1, .gpio_port = GPIOB, .gpio_pin = 1 };
const machine_pin_obj_t pin_PB2 = { .base = { &machine_pin_type }, .name = MP_QSTR_PB2, .gpio_port = GPIOB, .gpio_pin = 2 };
const machine_pin_obj_t pin_PF11 = { .base = { &machine_pin_type }, .name = MP_QSTR_PF11, .gpio_port = GPIOF, .gpio_pin = 11 };
const machine_pin_obj_t pin_PF12 = { .base = { &machine_pin_type }, .name = MP_QSTR_PF12, .gpio_port = GPIOF, .gpio_pin = 12 };
const machine_pin_obj_t pin_PF13 = { .base = { &machine_pin_type }, .name = MP_QSTR_PF13, .gpio_port = GPIOF, .gpio_pin = 13 };
const machine_pin_obj_t pin_PF14 = { .base = { &machine_pin_type }, .name = MP_QSTR_PF14, .gpio_port = GPIOF, .gpio_pin = 14 };
const machine_pin_obj_t pin_PF15 = { .base = { &machine_pin_type }, .name = MP_QSTR_PF15, .gpio_port = GPIOF, .gpio_pin = 15 };
const machine_pin_obj_t pin_PG0 = { .base = { &machine_pin_type }, .name = MP_QSTR_PG0, .gpio_port = GPIOG, .gpio_pin = 0 };
const machine_pin_obj_t pin_PG1 = { .base = { &machine_pin_type }, .name = MP_QSTR_PG1, .gpio_port = GPIOG, .gpio_pin = 1 };
const machine_pin_obj_t pin_PE7 = { .base = { &machine_pin_type }, .name = MP_QSTR_PE7, .gpio_port = GPIOE, .gpio_pin = 7 };
const machine_pin_obj_t pin_PE8 = { .base = { &machine_pin_type }, .name = MP_QSTR_PE8, .gpio_port = GPIOE, .gpio_pin = 8 };
const machine_pin_obj_t pin_PE9 = { .base = { &machine_pin_type }, .name = MP_QSTR_PE9, .gpio_port = GPIOE, .gpio_pin = 9 };
const machine_pin_obj_t pin_PE10 = { .base = { &machine_pin_type }, .name = MP_QSTR_PE10, .gpio_port = GPIOE, .gpio_pin = 10 };
const machine_pin_obj_t pin_PE11 = { .base = { &machine_pin_type }, .name = MP_QSTR_PE11, .gpio_port = GPIOE, .gpio_pin = 11 };
const machine_pin_obj_t pin_PE12 = { .base = { &machine_pin_type }, .name = MP_QSTR_PE12, .gpio_port = GPIOE, .gpio_pin = 12 };
const machine_pin_obj_t pin_PE13 = { .base = { &machine_pin_type }, .name = MP_QSTR_PE13, .gpio_port = GPIOE, .gpio_pin = 13 };
const machine_pin_obj_t pin_PE14 = { .base = { &machine_pin_type }, .name = MP_QSTR_PE14, .gpio_port = GPIOE, .gpio_pin = 14 };
const machine_pin_obj_t pin_PE15 = { .base = { &machine_pin_type }, .name = MP_QSTR_PE15, .gpio_port = GPIOE, .gpio_pin = 15 };
const machine_pin_obj_t pin_PB10 = { .base = { &machine_pin_type }, .name = MP_QSTR_PB10, .gpio_port = GPIOB, .gpio_pin = 10 };
const machine_pin_obj_t pin_PB11 = { .base = { &machine_pin_type }, .name = MP_QSTR_PB11, .gpio_port = GPIOB, .gpio_pin = 11 };
const machine_pin_obj_t pin_PB12 = { .base = { &machine_pin_type }, .name = MP_QSTR_PB12, .gpio_port = GPIOB, .gpio_pin = 12 };
const machine_pin_obj_t pin_PB13 = { .base = { &machine_pin_type }, .name = MP_QSTR_PB13, .gpio_port = GPIOB, .gpio_pin = 13 };
const machine_pin_obj_t pin_PB14 = { .base = { &machine_pin_type }, .name = MP_QSTR_PB14, .gpio_port = GPIOB, .gpio_pin = 14 };
const machine_pin_obj_t pin_PB15 = { .base = { &machine_pin_type }, .name = MP_QSTR_PB15, .gpio_port = GPIOB, .gpio_pin = 15 };
const machine_pin_obj_t pin_PD8 = { .base = { &machine_pin_type }, .name = MP_QSTR_PD8, .gpio_port = GPIOD, .gpio_pin = 8 };
const machine_pin_obj_t pin_PD9 = { .base = { &machine_pin_type }, .name = MP_QSTR_PD9, .gpio_port = GPIOD, .gpio_pin = 9 };
const machine_pin_obj_t pin_PD10 = { .base = { &machine_pin_type }, .name = MP_QSTR_PD10, .gpio_port = GPIOD, .gpio_pin = 10 };
const machine_pin_obj_t pin_PD11 = { .base = { &machine_pin_type }, .name = MP_QSTR_PD11, .gpio_port = GPIOD, .gpio_pin = 11 };
const machine_pin_obj_t pin_PD12 = { .base = { &machine_pin_type }, .name = MP_QSTR_PD12, .gpio_port = GPIOD, .gpio_pin = 12 };
const machine_pin_obj_t pin_PD13 = { .base = { &machine_pin_type }, .name = MP_QSTR_PD13, .gpio_port = GPIOD, .gpio_pin = 13 };
const machine_pin_obj_t pin_PD14 = { .base = { &machine_pin_type }, .name = MP_QSTR_PD14, .gpio_port = GPIOD, .gpio_pin = 14 };
const machine_pin_obj_t pin_PD15 = { .base = { &machine_pin_type }, .name 设计带有SD卡的 MM32F3277 MicroPython 实验板

测试逐飞的MM32F3277 MicroPython开发板的基本功能

MM32F3277 MicroPython 实验板设计和软件测试

在MM32F3273上运行MicroPython,对于性能进行测试

测试MM32F3277中的MicroPython的Signal功能

测试MM32F3277 MicroPython 的定时器功能