mm32f3277micropython移植过程中对应的接口文件(代码片段)

卓晴 卓晴     2023-01-29     387

关键词:

简 介: 给出了在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 查看详情  

测试逐飞的mm32f3277micropython开发板的基本功能(代码片段)

简介:对于给定的MicroPython移植版本进行了初步的测试。对比之下,MCU中还有很多的模块尚未支持。这些工作需要近期尽快补充测试完毕。关键词:MM32,MicroPython §01MicroPython开发一、背景介绍  为了能够在第十... 查看详情

mm32f3277micropython实验板设计和软件测试(代码片段)

 §01设计要求在制作测试MM32F3277-MicroPython最小电路板测试了基于MM32F3277的MicroPython测试板。也可以看到它的时钟是不需要。下面设计一个适应于面包板进行测试实验的MicroPython测试板。一、资源设置1、MicroPython支持模块下面使用... 查看详情

在mm32f3273上运行micropython,对于性能进行测试(代码片段)

简介:通过设计简单的测试电路,验证了MicroPython在MM32F3273上运行的情况。初步证实它可以运行移植后的MicroPython。关键词:MM32F3273,MicroPython,STM32,Bootloader,ISP §01测试过程  在上午进行了设计带... 查看详情

测试mm32f3277micropython的定时器功能(代码片段)

简介:对于SuYong发送过来的带有Timer功能版本的MicroPython进行了测试。在新版的MicroPython中,可以最多定义两个不同频率的定时器中断,完成对于周期时间的控制和输出。这一点在很多数字控制系统中应用比较重要。关... 查看详情

测试mm32f3277中的micropython的signal功能(代码片段)

简介:通过对这个版本MicroPython中的Signal功能进行测试,可以看到它现在还存在问题。后来经过SuYong修正之后,问题解决了。关键词:MicroPython,MM32,Signal#mermaid-svg-RMEXQrNJ5t4QONFO.labelfont-family:\'trebuchetms\',verd... 查看详情

mm32f3277micropython的mem函数对于mcu内存访问(代码片段)

简介:通过mem32,mem16,mem8可以使得MicroPython向访问数字一样访问MCU中的任意内存。在ARM模型下,所有的寄存器都是基于RAM地址访问,所以原则上,可以通过memxx编程,在MicroPython层完成对于MCU中所有的... 查看详情

为什么在mm32中的micropython中无法打开二进制文件呢?(代码片段)

简介:对于在MM32F3277的MicroPython下,对于SD卡中的文件按照二进制方式进行读写进行测试,发现MicroPython下无法支持对于二进制文件的操作。根据现在这种测试,需要找到具体的MM32F3277现在版本上对于文件操作所存... 查看详情

测试mm32micropython测试电路板的基本功能(代码片段)

简介:对于来自于逐飞的MM32MicroPython模块进行补充测试。总结了现在一些缺少的功能。关键词:MicroPython,MM32,逐飞,灵动单片机 §01测试板简介  在测试逐飞的MM32F3277MicroPython开发板的基本功能中对于来自... 查看详情

制作灵动单片机mm32f3277测试版(代码片段)

...绍了在Windows7下安装基于MM32-LINK开发软件。设计制作了MM32F3277的测试电路板,并对如何正确从MM32-LINK将调试电缆连接至MM32F3277开发板进行介绍。需要保证编程电流长度以及线序都满足要求,才能够正确完成程序高速下载。... 查看详情

利用mem数组在mm32micropython中实现comp的功能(代码片段)

简介:通过MicroPython中的数组mem对于MM32F3277内部的模拟比较器进行初步测试,验证了它的最基本的设置和工作关系。测试过程中也发现了MM32F3277的数据手册与对应的内部功能方面的问题:对于COMP控制寄存器偏移量描述... 查看详情

mindmotionmm32f3277softi2c功能测试(代码片段)

...时钟的控制没有准备好。关键词:I2C,MM32,MicroPython#mermaid-svg-y1qjjejtzxNZmYTB.labelfont-family:\'trebuchetms\',verdana,arial;font-family:var(--mermaid-font-family);fill:#333;color:#333#mermaid-svg-y1qjjejtzxNZmYTB.labeltextfill:#333#mermaid-svg-y1qjjejtzxNZmYTB.no... 查看详情

制作测试mm32f3277-micropython最小电路板(代码片段)

简介:设计制作了基于MM32F3277的MicroPython测试电路,下载了来自于SeekFree已知的MicroPython,证明它可以完成正常使用。关键词:MM32F3277,MicroPython,快速制版 §01参考设计一、设计背景  在前天已经通过以... 查看详情

[长文干货]micropython移植到野火stm32f429开发板(代码片段)

最近通过参考网上的文章,成功将MicroPython移植到野火STM32F429开发板上,给大家分享一下自己的移植过程,可以作为STM32系列移植MicroPY的参考。1.移植前准备工作实验环境:WIN1064位+VmwareWorkstation虚拟机软件+Ub... 查看详情

在mm32单片机上使用micropython开发智能小车(代码片段)

...让更多非专业人士体会编程快乐。关键词:MM32,MicroPython,OLED01夸下海口▲图1 想当年,第六届智能车竞赛,吃鸡腿  这个男人(MindMotion,苏勇),在10月17在上海一家火锅店边吃饭,边回想当年参加智... 查看详情

灵动微m3内核32位单片机lqfp100封装mm32f3277g8p

灵动微MM32F3277G8P使用高性能的ARM®Cortex®M3为内核的32位单片机,ARM®的Cortex®M3微控制器是一个可配置的并具有多级流水线的32位精简指令集处理器,具有高性能和低功耗的特点。MM32F3277G8P包含多达3个12位的ADC、2个比较器、2个16位... 查看详情

测试mm32f3277基本模块功能(代码片段)

#mermaid-svg-qzGbzdxmdGRVUe4t.labelfont-family:\'trebuchetms\',verdana,arial;font-family:var(--mermaid-font-family);fill:#333;color:#333#mermaid-svg-qzGbzdxmdGRVUe4t.labeltextfill:#333#mermaid-svg-qzGbzdxmdGRVUe4t.noderect,#mermaid-svg-qzGbzdxmdGRVUe4t.nodecircle,#mermaid-svg-qzGbzdxmdGRVUe4t.nodeel... 查看详情

基于mm32f3273的micropython实验电路板-工作并不是正常(代码片段)

 §01MM32F3273  在在MM32F3273上运行MicroPython,对于性能进行测试测试了MM32F3273上载MicroPython之后的基本工作特点。下面设计基于MM3F3273对应的实验电路板。一、实验电路板设计1、电路原理图▲图1.1.1实验电路板设计原理图2、PCB... 查看详情