Micropython STM32F4外部中断实验

news2024/12/30 2:40:59

Micropython STM32F4外部中断实验


  • 📌固件刷可参考前面一篇《STM32刷Micropython固件参考指南》
  • 🌿 相关篇《Micropython STM32F4入门点灯》
  • 📍固件下载:https://micropython.org/download/?mcu=stm32f4
  • 🔖本例程基于STM32F4DISC,主控芯片STM32F407VGT6,使用固件版本:MicroPython v1.20.0 on 2023-04-26
  • 📑mpy外部中断,可以参考Micropython官方开发参考文档:https://docs.micropython.org/en/latest/library/pyb.ExtInt.html#pyb-extint
  • 🛠开发平台基于Thonny

📓查询外部中断模块相关函数和常量

>>> from pyb import ExtInt
>>> help(ExtInt)
object <class 'ExtInt'> is of type type
  line -- <function>
  enable -- <function>
  disable -- <function>
  swint -- <function>
  regs -- <staticmethod>
  IRQ_RISING -- 269549568
  IRQ_FALLING -- 270598144
  IRQ_RISING_FALLING -- 271646720
    EVT_RISING -- 269615104
  EVT_FALLING -- 270663680
  EVT_RISING_FALLING -- 271712256
  • 🌿ExtInt.disable():不使能外部中断。
  • 🌿ExtInt.enable():使能外部中断。
  • 🌿ExtInt.line():发生外部中断时,返回引脚映射到的中断线。
  • 🌿swint():从软件触发回调。
  • 常量:
    • ExtInt.IRQ_FALLING:下降沿触发。
    • ExtInt.IRQ_RISING:上升沿触发。
    • ExtInt.IRQ_RISING_FALLING:边沿触发。(上升沿或下降沿)
    • ExtInt.EVT_FALLING:下降沿事件
    • ExtInt.EVT_RISING:上降沿事件
    • ExtInt.EVT_RISING_FALLING:边沿事件
  • ✨EVT_xxx模式与睡眠模式WFE指令有关。
  • ⚡需要注意的是,在IDE中,调试执行睡眠模式相关代码,对应的调试端口号会消失。因为睡眠模式下,基本的硬件外设基本关闭了,无法进行在线调试。
pyb.ExtInt(pin, mode, pull, callback):创建中断对象
  • pin is the pin on which to enable the interrupt (can be a pin object or any valid pin name).

  • mode can be one of: - - trigger on a rising edge; - - trigger on a falling edge; - - trigger on a rising or falling edge.ExtInt.IRQ_RISINGExtInt.IRQ_FALLINGExtInt.IRQ_RISING_FALLING

  • pull can be one of: - - no pull up or down resistors; - - enable the pull-up resistor; - - enable the pull-down resistor.pyb.Pin.PULL_NONEpyb.Pin.PULL_UPpyb.Pin.PULL_DOWN

  • callback is the function to call when the interrupt triggers. The callback function must accept exactly 1 argument, which is the line that triggered the interrupt.

📝外部中断例程代码

'''
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

  IRQ_RISING -- 269549568
  IRQ_FALLING -- 270598144
  IRQ_RISING_FALLING -- 271646720
'''

from pyb import Pin, ExtInt
from pyb import LED
import time # 调用sleep sleep_ms sleep_us延时函数
INT_EXT = Pin('E3', Pin.IN, Pin.PULL_UP)
LED_Pin = Pin('E13', Pin.OUT_PP)  #PC10设置为推挽输出
LED_Pin2 = Pin('E14', Pin.OUT_PP)  #PC10设置为推挽输出
# callback = lambda e: print('intr PE3 Pin')

def callback(line):    
     LED_Pin.value(0)      #设为低电平
     time.sleep(0.5)
     LED_Pin.value(1)      #设为高电平
     time.sleep(0.5)
     print('intr PE3 Pin')
     print("line =", line)
     

def led_toggle():
     
     LED_Pin2.value(0)      #设为低电平
     time.sleep(0.5)
     LED_Pin2.value(1)      #设为高电平
     time.sleep(0.5)
     
ext = ExtInt(INT_EXT, ExtInt.IRQ_FALLING, Pin.PULL_UP, callback)     

if __name__ == '__main__':   
    while True:
        led_toggle()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1265523.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

「C++」红黑树的插入(手撕红黑树系列)

&#x1f4bb;文章目录 &#x1f4c4;前言红黑树概念红黑树的结构红黑树节点的定义红黑树的定义红黑树的调整 红黑树的迭代器迭代器的声明operator( )opeartor--( ) 完整代码 &#x1f4d3;总结 &#x1f4c4;前言 作为一名程序员相信你一定有所听闻红黑树的大名&#xff0c;像…

【区块链】产品经理的NFT初探

常见的FT如比特币&#xff08;BTC&#xff09;&#xff0c;以太币&#xff08;ETH&#xff09;等&#xff0c;两个代币之间是完全可替换的。而NFT具有唯一性&#xff0c;不可以互相替换。本文作者对NET的发展现状、相关协议、应用场景等方面进行了分析&#xff0c;一起来看一下…

修复debain/ Ubuntu 中的“密钥存储在旧版 trust.gpg 密钥环中”问题

如果您在 Ubuntu 22.04 及更高版本中使用 PPA 或添加外部存储库&#xff0c;您很可能会看到如下消息&#xff1a; W: https://packagecloud.io/slacktechnologies/slack/debian/dists/jessie/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg),…

springcloud nacos配置优先级研究及配置管理最佳实践

目录 背景工具版本SpringCloud配置存放位置及相应优先级代码中nacosjar包外挂 多种配置共同存在时的优先级项目配置管理最佳实践无nacos的情况有nacos的情况 参考文献 背景 公司有很多应用是基于SpringBoot/SpringCloud开发。由于在配置文件中经常会涉及数据库账号密码之类的敏…

Gson的用法详解

一、简介 Gson&#xff08;又称Google Gson&#xff09;是Google公司发布的一个开放源代码的Java库&#xff0c;主要用途为序列化Java对象为JSON字符串&#xff0c;或反序列化JSON字符串成Java对象。 Gson官网&#xff1a;gson Gson源码地址&#xff1a;google/gson 二、依赖…

Long-Context下LLM模型架构全面介绍

深度学习自然语言处理 原创作者&#xff1a;cola 随着ChatGPT的快速发展&#xff0c;基于Transformer的大型语言模型(LLM)为人工通用智能(AGI)铺平了一条革命性的道路&#xff0c;并已应用于知识库、人机界面和动态代理等不同领域。然而&#xff0c;存在一个普遍的限制:当前许多…

Linux处理文件常见命令

目录 1 cp 2 rm 3 zip与unzip 3.1 zip 3.2 unzip 4 cd 5 ls 6 chmod 7 scp 7.1 文件在你操作的机器上&#xff0c;你要传给另一个机器 7.1.1 文件 7.1.2 文件夹 7.2 文件在另一个机器上&#xff0c;你要把文件搞到你操作的机器上 7.2.1 文件 7.2.…

NX二次开发UF_CURVE_create_arc_3point 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_create_arc_3point Defined in: uf_curve.h int UF_CURVE_create_arc_3point(tag_t point1, tag_t point2, tag_t point3, UF_CURVE_limit_p_t limit_p [ 2 ] , tag_t supp…

开发知识点-CSS样式

CSS样式 fontCSS 外边距 —— 围绕在元素边框的空白区域# linear-gradient() ——创建一个线性渐变的 "图像"# transform ——旋转 元素![在这里插入图片描述](https://img-blog.csdnimg.cn/20191204100321698.png)# rotate() [旋转] # 边框 (border) —— 围绕元素内…

无分类编址 CIDR

在域名系统出现之后的第一个十年里&#xff0c;基于分类网络进行地址分配和路由IP数据包的设计就已明显显得可扩充性不足&#xff08;参见RFC 1517&#xff09;。为了解决这个问题&#xff0c;互联网工程工作小组在1993年发布了一新系列的标准——RFC 1518和RFC 1519——以定义…

时尚和美容网站的技术 SEO:提示和最佳实践

如果你对美容和时尚感兴趣&#xff0c;做了一个网站&#xff0c;但不知道如何在上面做技术SEO&#xff1f;此外&#xff0c;时尚和美容网站的技术 SEO 没有任何特别的指南&#xff01; 我们听到了你的声音&#xff01;但首先&#xff0c;请记住&#xff0c;技术性SEO不是在一两…

Docker监控Weave Scope的安装和使用

1.本地安装Weave Scope 1&#xff09;创建文件夹。 mkdir /usr/local/bin/scope 2&#xff09;从本地上传文件。 rz scope.bin以资源形式已上传到文章开篇。 3&#xff09;修改scope.bin文件为可执行文件。 chmod 755 /usr/local/bin/scope/scope.bin 4&#xff09;执行sco…

使用 SwiftUI 创建一个灵活的选择器

文章目录 前言可选择协议自定义化FlexiblePicker 逻辑FlexiblePicker 视图总结 前言 最近&#xff0c;在我正在开发一个在 Dribbble 上找到的设计的 SwiftUI 实现时&#xff0c;我想到了一个点子&#xff0c;可以通过一些酷炫的筛选器扩展该项目以缩小结果列表。 我决定筛选视…

2023.11.28-电商平台建设03 - 大数据调优手段

1.优化手段 1.1分桶表 HIVE的分桶本质上就是MR的分区操作 建表语句: create table 表名(字段 类型,.... ) clustered by(分桶字段) [sorted by (字段 [asc | desc])] into N buckets --- 定义分桶表核心语句 row format...... 分桶的作用 1) 进行数据采样工作 1.1) …

Vim多行编辑

Vim多行编辑 Ctrlq进入多行编辑模式&#xff0c;然后上下选择要编辑的行 按下I或者Shifti&#xff0c;进入编辑模式 编辑的时候多行不会同时变化&#xff0c;不要担心&#xff0c;确实是多行编辑 编辑完成&#xff0c;想要结束多行编辑&#xff0c;按下Esc&#xff0c;此时…

BGP综合实验(IP)

实验要求&#xff1a; 实验思路&#xff1a; 1.划分IP地址&#xff1a; 将172.16.0.0/16的网段划分为172.16.0.0/24的多个网段&#xff0c;因为在实际工程当中&#xff0c;24的网段更符合用户网段&#xff0c;因此先将网段划分为172.16.0.0 /24的多个子网掩码为24的网段&…

使用Pytorch从零开始构建扩散模型-DDPM

知识回顾: [1] 生成式建模概述 [2] Transformer I&#xff0c;Transformer II [3] 变分自编码器 [4] 生成对抗网络&#xff0c;高级生成对抗网络 I&#xff0c;高级生成对抗网络 II [5] 自回归模型 [6] 归一化流模型 [7] 基于能量的模型 [8] 扩散模型 I, 扩散模型 II 引言 去噪…

算法 离散化

整数离散化 适用条件 适用于有序的整数序列该序列的值域很大&#xff0c;该序列的数的个数很少使用的是数的相对大小而非绝对大小 算法思路 原数组 a &#xff1a; 数组下标&#xff1a;0 1 2 3 4 数组元素&#xff1a;1 2 2 5 109 映射数组 &#xff1a; 数组下标&…

gRPC Java、Go、PHP使用例子

文章目录 1、Protocol Buffers定义接口1.1、编写接口服务1.2、Protobuf基础数据类型 2、服务器端实现2.1、生成gRPC服务类2.2、Java服务器端实现 3、java、go、php客户端实现3.1、Java客户端实现3.2、Go客户端实现3.3、PHP客户端实现 4、运行效果 本文例子是在Window平台测试&a…

从 0 到 1 开发一个 node 命令行工具

G2 5.0 推出了服务端渲染的能力&#xff0c;为了让开发者更快捷得使用这部分能力&#xff0c;最写了一个 node 命令行工具 g2-ssr-node&#xff1a;用于把 G2 的 spec 转换成 png、jpeg 或者 pdf 等。基本的使用如下&#xff1a; $ g2-ssr-node g2png -i ./bar.json -o ./bar.…