|
记录下为自己的板子编译MicroPython的过程。 1、搭建环境 下载msys2,安装完更新下。具体操作可以百度。记住安装位置,我是直接安装到D盘根目录。 下载gcc-arm-none-eabi, 在home\Administrator 下建立新目录tools,解压gcc到tools下。用记事本打开.bashrc文件,最后一行添加 export PATH="D:\msys32\home\Administrator\tools\gcc-arm-none-eabi-7\bin" PATH保存,重新打开msys2.exe使配置生效。 下载源码。$ git clone --recursive http://github.com/micropython/micropython.git 完成时如下 打开D:\msys32\home\Administrator (换成自己的目录) 会多出一个micropython 的文件夹,里面就是所有源码了。 2、移植 打开micropython下 ports/stm32/boards,新建目录F407,拷贝STM32F4DISC下所有文件到F407下。删掉staccel.py。 mpconfigboard.h 中是板子的配置文件,pins.csv 中是引脚定义。 #define MICROPY_HW_BOARD_NAME "F407" #define MICROPY_HW_MCU_NAME "STM32F407" #define MICROPY_HW_HAS_SWITCH (1) #define MICROPY_HW_HAS_FLASH (1) #define MICROPY_HW_ENABLE_RNG (1) #define MICROPY_HW_ENABLE_RTC (0) #define MICROPY_HW_ENABLE_DAC (1) #define MICROPY_HW_ENABLE_USB (1) #define MICROPY_HW_HAS_SDCARD (1) // HSE is 8MHz #define MICROPY_HW_CLK_PLLM (25) #define MICROPY_HW_CLK_PLLN (336) #define MICROPY_HW_CLK_PLLP (RCC_PLLP_DIV2) #define MICROPY_HW_CLK_PLLQ (7) // UART config // A9 is used for USB VBUS detect, and A10 is used for USB_FS_ID. // UART1 is also on PB6/7 but PB6 is tied to the Audio SCL line. // Without board modifications, this makes UART1 unusable on this board. #define MICROPY_HW_UART1_TX (pin_A9) #define MICROPY_HW_UART1_RX (pin_A10) #define MICROPY_HW_UART2_TX (pin_A2) #define MICROPY_HW_UART2_RX (pin_A3) #define MICROPY_HW_UART3_TX (pin_D8) #define MICROPY_HW_UART3_RX (pin_D9) // NOTE: A0 also connects to the user switch. To use UART4 you should // set MICROPY_HW_HAS_SWITCH to 0, and also remove SB20 (on the back // of the board near the USER switch). #define MICROPY_HW_UART4_TX (pin_A0) #define MICROPY_HW_UART4_RX (pin_A1) // NOTE: PC7 is connected to MCLK on the Audio chip. This is an input signal // so I think as long as you're not using the audio chip then it should // be fine to use as a UART pin. // I2C busses #define MICROPY_HW_I2C1_SCL (pin_B6) #define MICROPY_HW_I2C1_SDA (pin_B7) // SPI busses #define MICROPY_HW_SPI1_NSS (pin_A4) #define MICROPY_HW_SPI1_SCK (pin_A5) #define MICROPY_HW_SPI1_MISO (pin_A6) #define MICROPY_HW_SPI1_MOSI (pin_A7) #define MICROPY_HW_SPI3_NSS (pin_A15) #define MICROPY_HW_SPI3_SCK (pin_B3) #define MICROPY_HW_SPI3_MISO (pin_B4) #define MICROPY_HW_SPI3_MOSI (pin_B5) // CAN busses #define MICROPY_HW_CAN1_TX (pin_B9) #define MICROPY_HW_CAN1_RX (pin_B8) // USRSW is pulled low. Pressing the button makes the input go high. #define MICROPY_HW_USRSW_PIN (pin_C0) #define MICROPY_HW_USRSW_PULL (GPIO_NOPULL) #define MICROPY_HW_USRSW_EXTI_MODE (GPIO_MODE_IT_RISING) #define MICROPY_HW_USRSW_PRESSED (1) // LEDs #define MICROPY_HW_LED1 (pin_E0) // red #define MICROPY_HW_LED2 (pin_E1) // green #define MICROPY_HW_LED3 (pin_E2) // orange #define MICROPY_HW_LED4 (pin_E3) // blue #define MICROPY_HW_LED_ON(pin) (mp_hal_pin_low(pin)) #define MICROPY_HW_LED_OFF(pin) (mp_hal_pin_high(pin)) // USB config #define MICROPY_HW_USB_FS (1) //*************end mpconfigboard.h pins.csv 用记事本打开修改。 缺少PB3 ,按格式添加。 最后的LED SW对应mpconfigboard.h 的引脚修改。 接下来是修改sd卡的文件,因为我的板子没有检测sd卡插入引脚。 打开stm32文件夹下的sdcard.c, 注释掉163行 引脚初始化。 检测函数直接返回1。 bool sdcard_is_present(void) { return 1; //return HAL_GPIO_ReadPin(MICROPY_HW_SDCARD_DETECT_PIN->gpio, MICROPY_HW_SDCARD_DETECT_PIN->pin_mask) == MICROPY_HW_SDCARD_DETECT_PRESENT; } modules下有几个py文件,是软连接的,msys2下有问题。从micropython\drivers 下复制对应的文件覆盖掉。 3、编译 msys2 进入到ports/stm32目录,执行 make BOARD=F407 |
微信公众号
手机版
SD卡问题纠结了好久,还是不能从sd卡启动,但是可以使用
不应该和keil,iar相比了。是实现在单片机上用python语言编程。
python相对c来说语法更简单更易学。
我也没接触过micropython,不知道说的对不对。
micro python 类似python语法,如果配置好了单片机和micro python之间的过渡层,就可以直接用python的方式操作单片机。但这并不意味着万能!micropython毕竟只是一个类似于语法解释器的东西(这个可以参考原子大神的usmart组件,一个道理),如果要实现的功能在单片机上并没有对应的执行函数,也就没有任何用。
这种解释性的语法,目前比较多,vsf,micro python,nodemcu下面的lua,c语言解释器pico c等。