K210学习笔记(三)定时器与定时中断

就像几乎所有的嵌入式设备一样,K210也有着对应的定时器设备。K210中拥有三个定时器,分别对应着Timer.TIMER0~Timer.TIMER2。可以实现计时的功能,也可以利用定时器中断按照需求以某一周期或者只执行一次中断内容,采用类似stm32的中断回调形式完成。

本次实验我们通过编写代码实现简单的K210定时中断功能,使板载LED按照1s的周期亮灭(点灯工程师)。

首先,我们需要的是对LED进行初始化,对定时器进行初始化,LED的初始化就是GPIO的初始化,前文介绍过(学习笔记一)定时器的初始化要利用machine库的Timer函数进行。下面简单介绍一下Timer函数

在这里遇到了一个问题,当我把Timer.UNIT的参数调小时(period=1000时),板载的蜂鸣器响了,目前还没有合理的一个解释,等我研究明白了在更新出来。

如上图就是Timer函数的构造形式了,如果不修改unit的参数值得话默认是毫秒的,诸如div这个参数目前还没有测试,分频的话可能会用在输入捕获?(参考stm32)

了解到Timer的构造那我们就可以进行代码的编写了

from maix import GPIO
from fpioa_manager import fm
from machine import Timer



#注册IO和构建LED对象
fm.register(35,fm.fpioa.GPIO0)
LED_B=GPIO(GPIO.GPIO0,GPIO.OUT)
#计数变量
Counter=0

#定义定时器回调函数
def fun(tim):
    global Counter
    Counter=Counter+1
    print(Counter)
    LED_B.value(Counter%2)#LED循环亮灭
 
#初始化定时器0,周期1s    
tim=Timer(Timer.TIMER0,Timer.CHANNEL0,mode=Timer.MODE_PERIODIC,period=5,unit=Timer.UNIT_S,callback=fun)    

考虑到平时写代码的习惯,可以先将定时回调函数的定义(def)写出来,然后再初始化定时器。上图的代码的现象是板载LED每隔5s进行一次闪烁。Timer中本例程未写出的部分为默认值。

今天的学习笔记就进行到这里吧,嗯,立个flag,今年电赛前一周更四次。

K210是一款由中国芯片设计公司寒武纪(Kendryte)推出的低功耗、高性能的人工智能处理器。它具有强大的计算能力和丰富的外设接口,适用于物联网、机器人、智能家居等领域的开发。 在K210上使用Python进行串口中断编程,可以通过使用`machine.UART`模块来实现。下面是一个简单的示例代码: ```python import machine def uart_interrupt_handler(uart): # 处理串口中断事件的回调函数 if uart.any(): data = uart.read() # 处理接收到的数据 print("Received data:", data) # 初始化串口对象 uart = machine.UART(1, baudrate=115200, rx=8, tx=9) # 设置串口中断回调函数 uart.irq(handler=uart_interrupt_handler, trigger=machine.UART.RXNE) # 主循环 while True: pass ``` 在上述代码中,我们首先导入了`machine`模块,然后定义了一个名为`uart_interrupt_handler`的回调函数,用于处理串口中断事件。在回调函数中,我们通过`uart.any()`方法检查是否有数据可读,如果有则使用`uart.read()`方法读取数据,并进行相应的处理。 接下来,我们创建了一个`UART`对象,并通过指定参数来初始化串口,包括波特率、接收引脚和发送引脚。然后,我们使用`uart.irq()`方法设置了串口中断的回调函数和触发条件,这我们选择了接收缓冲区非空时触发中断。 最后,我们进入主循环,通过`while True`保持程序的运行,等待串口中断事件的发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cointreau97

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值