Micropython STM32F4入门点灯

Micropython STM32F4入门点灯


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

🛠Thonny开发平台配置

  • 🔧在菜单栏-工具-选项,进行设置:
    在这里插入图片描述
    在这里插入图片描述

  • 🌿创建led.py程序文件
    在这里插入图片描述

  • 🌿按F5快捷键或者点击菜单上的运行按钮运行。
    在这里插入图片描述

⛳注意事项

  • 🌿不同的开发板烧录的固件不一样。
  • 🌿不同型号的开发板引脚映射关系不一样。(具体查看源码对应开发板型号:https://github.com/micropython/micropython/blob/master/ports/stm32/boards/
    在这里插入图片描述

📖引入模块说明

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

📑模块内API函数查看方法

  • 🔨在Thonny查看模块内的函数方法
    在这里插入图片描述
    在这里插入图片描述

  • 📜具体函数说明以及使用可以参考官方文档对应的模块说明: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

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值