Micropython STM32F4入门点灯

Micropython STM32F4入门点灯


  • 固件刷可参考前面一篇《STM32刷Micropython固件参考指南》
  • 固件下载:https://micropython.org/download/?mcu=stm32f4
  • 本例程基于STM32F4DISC,主控芯片STM32F407VGT6
  • Micropython官方开发参考文档:https://docs.micropython.org/en/latest/
  • 开发平台基于Thonny

Thonny开发平台配置

  • 在菜单栏-工具-选项,进行设置:
    Micropython STM32F4入门点灯_第1张图片
    Micropython STM32F4入门点灯_第2张图片

  • 创建led.py程序文件
    Micropython STM32F4入门点灯_第3张图片

  • 按F5快捷键或者点击菜单上的运行按钮运行。
    Micropython STM32F4入门点灯_第4张图片

⛳注意事项

  • 不同的开发板烧录的固件不一样。
  • 不同型号的开发板引脚映射关系不一样。(具体查看源码对应开发板型号:https://github.com/micropython/micropython/blob/master/ports/stm32/boards/
    Micropython STM32F4入门点灯_第5张图片

引入模块说明

  • from pyb import LED:引入pyb模块中的子模块LED
  • import time: 为例了调用sleep sleep_ms sleep_us延时函数

模块内API函数查看方法

  • Thonny查看模块内的函数方法
    Micropython STM32F4入门点灯_第6张图片
    Micropython STM32F4入门点灯_第7张图片

  • 具体函数说明以及使用可以参考官方文档对应的模块说明:https://docs.micropython.org/en/latest/library/pyb.LED.html#pyb-led

点灯程序代码

  • 点灯示例1:
'''
STM32F4DISC开发板引脚映射关系
  1=red(PD14), 2=green(PD12), 3=yellow(PD13), 4=blue(PD15)
LED_GREEN   PD12
LED_ORANGE  PD13
LED_RED     PD14
LED_BLUE    PD15

'''

from pyb import LED
import time # 调用sleep sleep_ms sleep_us延时函数

led = LED(1) # 1=, 2=绿, 3=, 4=蓝
led2 = LED(2)
led3 = LED(3)
led4 = LED(4)

while True:
    
    led.toggle()    
    led2.toggle()
    led3.toggle()
    led4.toggle()
    time.sleep(1)
#    led.on()
#    led.off()

  • 点灯示例2:(没有用延时函数,查询方式)
'''
 1=red(PD14), 2=green(PD12), 3=yellow(PD13), 4=blue(PD15)
LED_GREEN   PD12
LED_ORANGE  PD13
LED_RED     PD14
LED_BLUE    PD15

'''
import pyb
from pyb import LED
led = LED(1) # 1=, 2=绿, 3=, 4=蓝
# 设置延时时间为1000毫秒
delay_time = 1000

# 获取当前的毫秒数
start_time = pyb.millis()

if __name__ == '__main__':
    while True:              
        current_time = pyb.millis()
            # 检查是否达到了延时时间
        if current_time - start_time >= delay_time:
            led.toggle()
            start_time = current_time

LED模块例程三

  • 参考文档:https://docs.micropython.org/en/latest/pyboard/quickref.html#internal-leds
  • ⚡该例程有bug,在使用STM32F407时,PD13PD15并不能如预期那样输出PWM。
'''
STM32F4DISC开发板引脚映射关系
 1=red(PD14), 2=green(PD12), 3=yellow(PD13), 4=blue(PD15)
LED_GREEN   PD12
LED_ORANGE  PD13
LED_RED     PD14
LED_BLUE    PD15
# LEDs 3 and 4 support PWM intensity (0-255)
'''

from pyb import LED
import time # 调用sleep sleep_ms sleep_us延时函数
led3_pwm = LED(3)	# PD13
led4_pwm = LED(4)	# PD15
print('Hello World')
if __name__ == '__main__':    
    while True:
        
        for i in range(0,255,5):	# 0 - 254 步长5
            led3_pwm.intensity(i)
            led4_pwm.intensity(255-i)           
            time.sleep_ms(50)            
#            print('value1=%d' % led3_pwm.intensity())
#            print('value2=%d' % led4_pwm.intensity()) 
            print('i= {0} ,led3_value={1},led4_value={2}' .format(i,led3_pwm.intensity(),led4_pwm.intensity()))
        else:
            
            print("Finally finished!")

其他模块,任意引脚输出

  • 引入from pyb import Pin 模块
'''
STM32F4DISC开发板引脚映射关系
 1=red, 2=green, 3=yellow, 4=blue
LED_GREEN   PD12
LED_ORANGE  PD13
LED_RED     PD14
LED_BLUE    PD15

'''
from pyb import Pin
import time # 调用sleep sleep_ms sleep_us延时函数
p_out = Pin('D12', Pin.OUT_PP)

if __name__ == '__main__':    
    while True:
        
        p_out.high()
        time.sleep_ms(500)
        p_out.low()
        time.sleep_ms(500)
  • 引入from machine import Pin模块
'''
STM32F4DISC开发板引脚映射关系
 1=red, 2=green, 3=yellow, 4=blue
LED_GREEN   PD12
LED_ORANGE  PD13
LED_RED     PD14
LED_BLUE    PD15

'''

from machine import Pin
import time # 调用sleep sleep_ms sleep_us延时函数

LED_Pin = Pin('C10', Pin.OUT_PP)  #PC10设置为推挽输出
def led_toggle():
     
     LED_Pin.value(0)      #设为低电平
     time.sleep(0.5)
     LED_Pin.value(1)      #设为高电平
     time.sleep(0.5)


if __name__ == '__main__':
    while True:
           
        led_toggle()
  • toggle翻转实现
from pyb import Pin
import time # 调用sleep sleep_ms sleep_us延时函数
p_out = Pin('D12', Pin.OUT_PP)

if __name__ == '__main__':    
    while True:
        
#        p_out.value(p_out.value()^1 ) # 状态取反
        p_out.value(not p_out.value())	# 状态取反,同上
        time.sleep_ms(500)

  • 利用time.ticks_ms()函数实现
'''
STM32F4DISC开发板引脚映射关系
 1=red, 2=green, 3=yellow, 4=blue
LED_GREEN   PD12
LED_ORANGE  PD13
LED_RED     PD14
LED_BLUE    PD15

'''

import machine
from pyb import Pin
import time # 调用sleep sleep_ms sleep_us延时函数

# 设置LED引脚
# led_pin = machine.Pin('A6', machine.Pin.OUT)
led_pin = Pin('A6', Pin.OUT_PP)

# 定义亮灭时间间隔(以毫秒为单位)
interval = 500

# 获取当前的毫秒数
start_time = time.ticks_ms()

while True:
    # 获取当前的毫秒数
    current_time = time.ticks_ms()

    # 计算经过的时间
    elapsed_time = time.ticks_diff(current_time, start_time)

    # 判断是否达到亮灭时间间隔
    if elapsed_time >= interval:
        # 翻转LED状态
        led_pin.value(not led_pin.value())

        # 更新开始时间
        start_time = current_time

你可能感兴趣的:(#,Micropython,for,STM32,stm32,Micropython)