烽火社区

标题: 【STM32L476 Nucleo】移植MicroPython到NUCLEO_L476RG开发板 [打印本页]

作者: Oliver_CHENG    时间: 2016-5-11 04:07 PM
标题: 【STM32L476 Nucleo】移植MicroPython到NUCLEO_L476RG开发板
本帖最后由 shaoziyang 于 2016-5-15 00:32 编辑

在最新的 MicroPython 源码中,已经加入了STM32L476DISC开发板,但是还没有NUCLEO-L476RG开发板。而我只有NUCLEO-L476RG开发板,要在NUCLEO-L476RG开发板上跑MicroPython,只有自己移植一下了。好在两个开发板使用的MCU是一样的,所以移植起来并不困难,主要就是修改一些参数配置,将LED、按键、串口等指定为开发板使用的GPIO。

CROSS_COMPILE = e:/gcc-arm/bin/arm-none-eabi-


  1. #define MICROPY_HW_BOARD_NAME       "NUCLEO-L476RG"
  2. #define MICROPY_HW_MCU_NAME         "STM32L476"

  3. #define MICROPY_HW_HAS_SWITCH       (1)
  4. #define MICROPY_HW_HAS_FLASH        (1)
  5. #define MICROPY_HW_HAS_SDCARD       (0)
  6. #define MICROPY_HW_HAS_MMA7660      (0)
  7. #define MICROPY_HW_HAS_LIS3DSH      (0)
  8. #define MICROPY_HW_HAS_LCD          (0)
  9. #define MICROPY_HW_ENABLE_RNG       (1)
  10. #define MICROPY_HW_ENABLE_RTC       (1)
  11. #define MICROPY_HW_ENABLE_TIMER     (1)
  12. #define MICROPY_HW_ENABLE_SERVO     (0)
  13. #define MICROPY_HW_ENABLE_DAC       (0)
  14. #define MICROPY_HW_ENABLE_CAN       (0)

  15. // HSI is 4MHz
  16. #define MICROPY_HW_CLK_PLLM (1)
  17. #define MICROPY_HW_CLK_PLLN (40)
  18. #define MICROPY_HW_CLK_PLLP (RCC_PLLP_DIV7)
  19. #define MICROPY_HW_CLK_PLLR (RCC_PLLR_DIV2)
  20. #define MICROPY_HW_CLK_PLLQ (RCC_PLLQ_DIV2)

  21. #define MICROPY_HW_FLASH_LATENCY    FLASH_LATENCY_4

  22. // USART config
  23. #define MICROPY_HW_UART2_PORT (GPIOA)
  24. #define MICROPY_HW_UART2_PINS (GPIO_PIN_2 | GPIO_PIN_3)

  25. // I2C busses
  26. #define MICROPY_HW_I2C1_SCL (pin_B8)
  27. #define MICROPY_HW_I2C1_SDA (pin_B9)
  28. // We use an array of baudrates and corresponding TIMINGR values.
  29. //
  30. // The value 0x90112626 was obtained from the DISCOVERY_I2C1_TIMING constant
  31. // defined in the STM32L4Cube file Drivers/BSP/STM32L476G-Discovery/stm32l476g_discovery.h
  32. #define MICROPY_HW_I2C_BAUDRATE_TIMING  {{100000, 0x90112626}}
  33. #define MICROPY_HW_I2C_BAUDRATE_DEFAULT 100000
  34. #define MICROPY_HW_I2C_BAUDRATE_MAX     100000

  35. // SPI busses
  36. #define MICROPY_HW_SPI1_NSS     (pin_A15)
  37. #define MICROPY_HW_SPI1_SCK     (pin_A5)
  38. #define MICROPY_HW_SPI1_MISO    (pin_A6)
  39. #define MICROPY_HW_SPI1_MOSI    (pin_A7)

  40. // USRSW is pulled low. Pressing the button makes the input go high.
  41. #define MICROPY_HW_USRSW_PIN        (pin_C13)
  42. #define MICROPY_HW_USRSW_PULL       (GPIO_NOPULL)
  43. #define MICROPY_HW_USRSW_EXTI_MODE  (GPIO_MODE_IT_FALLING)
  44. #define MICROPY_HW_USRSW_PRESSED    (0)

  45. // LEDs
  46. #define MICROPY_HW_LED1             (pin_A5) // red
  47. #define MICROPY_HW_LED_OTYPE        (GPIO_MODE_OUTPUT_PP)         
  48. #define MICROPY_HW_LED_ON(pin)      (pin->gpio->BSRR = pin->pin_mask
  49. #define MICROPY_HW_LED_OFF(pin)     (pin->gpio->BSRR = pin->pin_mask<<16)

  50. // USB config
  51. // #define MICROPY_HW_USB_OTG_ID_PIN (pin_C12) // This is not the official ID Pin which should be PA10>
复制代码


make BOARD=NUCLEO_L476RG

        因为STM32L476的Micropython版本还在修改中,现在还存在一些问题,目前已知问题有:


其他
build-NUCLEO_L476RG.zip (478.92 KB, 下载次数: 2, 售价: 5 IC币)