tag 标签: 小钢炮

相关博文
  • 热度 17
    2016-5-16 10:38
    1295 次阅读|
    1 个评论
    周末抽空将气压计LPS25H的驱动完成了,可以很方便的读取温度、气压值。目前驱动只做了查询部分,没有处理中断部分。这个等后面有空的时候在做了。 首先import LPS25H库,然后定义lps25对象,就可以使用lps25.PRESS()读取气压, lps25.TEMP()读取温度。 MicroPython v1.7 on 2016-04-17; CANNON with STM32F401xE Type "help()" for more information. from LPS25H import LPS25H lps25=LPS25H(1, 1) lps25.PRESS() 1021.375 lps25.PRESS() 1021.313 lps25.PRESS() 1021.25 lps25.PRESS() 1021.25 lps25.TEMP() 21.99375 lps25.TEMP() 21.99792   在小钢炮板上使用LPS25H时,使用 lps25=LPS25H(1, 1) 其中第一个参数是I2C模块的序号,第二个参数是SA0,在小钢炮开发板上,SA0=1 此外还增加了休眠处理,使用lps25.poweron()工作,lps25.poweroff()休眠。
  • 热度 24
    2016-5-16 10:30
    4027 次阅读|
    4 个评论
    小钢炮开发板是个不错的开发板,它板载了磁力传感器、陀螺仪、温度传感器、湿度传感器、气压传感器, 还有性能强劲的STM32F401RE。而这个MCU是MicroPython支持的型号,如果在小钢炮上用python来开发,想起来就很有意思。 下面就介绍在小钢炮开发板上移植MicroPython的方法。       首先要下载并安装GNU Tools for ARM Embedded Processors。  https://launchpad.net/gcc-arm-embedded 下载并安装ST的DfuSe软件,http://www.st.com/web/en/catalog/tools/FM147/CL1794/SC961/SS1533/PF257916 下载MicroPython的源码,micropython-master.zip。 展开MicroPython源码,打开 stmhal\boards\ 目录 新建一个CANNON目录,将NUCLEO_F401RE下的文件复制到CANNON目录下 如果GNU Tools for ARM已经添加到系统路径,就可以跳到步骤8,直接编译 打开 stmhal 下的 makefile 文件,修改  CROSS_COMPILE = arm-none-eabi-  这一行,在 arm-none-eabi- 前添加编译器的实际路径,注意路径需要使用右斜杠 在 stmhal 目录下,输入 make BOARD=CANNON,就可以编译了。不过这时编译出的代码是不能运行的,因为两个板子的参数不同。 打开 stmhal\boards\CANNON目录,先修改文件stm32f4xx_hal_conf.h 找到#define HSI_VALUE    ((uint32_t)8000000) 将数字8000000改为16000000,因为小钢炮使用了16M的外部时钟 打开文件 mpconfigboard.h 找到#define MICROPY_HW_CLK_PLLM (8) 将数字8改为16 修改#define MICROPY_HW_HAS_SWITCH  (1) 将1改为0,因为小钢炮上没有用户按键 修改#define MICROPY_HW_LED1             (pin_A5) // Green LD2 LED on Nucleo 将pin_A5改为pin_B3,因为两个板子的LED使用不同的GPIO 修改#define MICROPY_HW_LED_ON(pin)      (pin-gpio-BSRRL         = pin-pin_mask) 将BSRRL改为BSRRH 修改#define MICROPY_HW_LED_OFF(pin)     (pin-gpio-BSRRH         = pin-pin_mask) 将BSRRH改为BSRRL,这是因为两个板子的LED驱动方式不同 添加下面RTC的定义 // The pyboard has a 32kHz crystal for the RTC #define MICROPY_HW_RTC_USE_LSE      (1) #define MICROPY_HW_RTC_USE_US       (0) #define MICROPY_HW_RTC_USE_CALOUT   (1) 添加sdcard的定义 ,因为小钢炮支持TF(macroSD)卡。如果不想改线,或者不需要使用TF卡,可以忽略这一步和下面一步。 #define MICROPY_HW_HAS_SDCARD       (1) // SD card detect switch #define MICROPY_HW_SDCARD_DETECT_PIN        (pin_A15) #define MICROPY_HW_SDCARD_DETECT_PULL       (GPIO_PULLUP) #define MICROPY_HW_SDCARD_DETECT_PRESENT    (GPIO_PIN_RESET) 小钢炮开发板没有做TF卡的插入检测,所以需要自己飞一根线。开发板上A15(50)和B4(56)是空脚,我选择了A15,因为它更容易焊接一些。如果不想改线,可以修改sdcard.c中的sdcard_is_present函数,让它总是返回true,但是这样就不能检测卡是否插入了。 打开文件pins.cvs,这里预定义了GPIO的名称 修改LED的GPIO为PB3 如果还有时间和精力,可以适当修改其他GPIO 现在可以再次编译源文件了。编译时建议在Linux下编译,因为速度快很多,在windows下编译速度很慢,需要等数分钟。 准备3个短路块,连接P1,将BOOT0连接到VCC,BOOT1连接到GND。 将开发板用macroUSB线连接到计算机,因为设置了BOOT0/BOOT1,所以上电后会进入DFU模式。在Windows下如果是第一次使用,会提示安装驱动,驱动程序就在DfuSe软件的安装目录下。使用DfuSe打开编译后的dfu文件,并下载到开发板。 将BOOT0连接到GND,开发板重新上电。这时会自动安装USB磁盘,出现PYBFLASH驱动器。在windows下还会安装虚拟串口,如果找不到驱动程序,可以到新出现的PYBFLASH驱动器上查找。 打开一个串口终端软件,如kitty、xshell、超级终端等,设置波特率为115200,就可以开始玩micropython了。 先试试直接控制LED import pyb pyb.LED(1).on() pyb.LED(1).off()   复制代码 在试试用GPIO控制LED from pyb import Pin led=Pin.cpu.B3 led.init(Pin.OUT_PP) led.value(1) led.value(0)   复制代码 用PWM控制LED的亮度 from pyb import Pin, Timer              tm2=Timer(2, freq=100) led=tm2.channel(2, Timer.PWM, pin=Pin.cpu.B3, pulse_width=100) led.pulse_width_percent(100) led.pulse_width_percent(1)   复制代码 呼吸灯 from pyb import Timer, Pin   tm2=Timer(2, freq=200) led=tm2.channel(2, Timer.PWM, pin=Pin.cpu.B3)   # LED breathing lamp ia = 1 da = 1 def fa(t):     global ia, da     if (ia==0)or(ia==100):         da=100-da     ia=(ia+da)%100     led.pulse_width_percent(ia)   tm1=Timer(1, freq=100, callback=fa)   复制代码 更多的实验,包括传感器的实验,就等大家一起来完成和交流了。