2. PIN
本章节主要介绍K2000的IO口使用方法。
2.1. 普通IO口配置方法
控制IO口时需要先对IO口 参数配置的 类对象
class str_user_io(object)进行配置,该对象位于sharp_user模块中。
class str_user_io(object)
pin: IO口 pin引脚号
mode: IO口 pin模式(输入输出模式)使用方法:
IT_ON_OFF = Pin_Device.LCD__IO_5 #外部IO口宏 IT_MTP = Pin_Device.LCD__IO_6 #外部IO口宏 class User_Fun(): My_IT_ON_OFF_Pin = Pin_Device(IT_ON_OFF,Pin_Device.IN) #第一个参数是定义好的外部IO口宏,第二个参数是IO口输入输出模式 My_IT_MTP_Pin = Pin_Device(IT_MTP,Pin_Device.IN) #Pin_Device.IN 和 Pin_Device.OUT 就是配置输入或者输出模式 #My_IT_MTP_Pin = Pin_Device(IT_MTP,Pin_Device.OUT)
2.2. IO口外部中断
什么是中断呢?
在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。 在出现需要时,CPU必须暂停现在的事情,处理别的事情,处理完了再回去执行暂停的事情。
当输入引脚发生电平变化时触发硬件中断,触发器会执行中断处理函数。可以定义回调函数来做些中断响应的工作。
Attention
当前IO外部中断只支持上升沿和下降沿的电平变化来触发中断。
2.3. IO口外部中断配置方法
ON_OFF_IRQHandler和MTP_IRQHandler。这些函数会在中断触发时被调用,并打印相关信息。同时,如果当前LCD显示开启且触发的引脚与IT_ON_OFF或IT_MTP相对应,则会进行一些操作,并打印相关信息。
在main函数中,通过调用SHARP_user实例的My_IT_ON_OFF_Pin.IO_irq方法和My_IT_MTP_Pin.IO_irq方法,设置了两个引脚的中断触发条件(上升沿)和相应的中断处理函数(ON_OFF_IRQHandler和MTP_IRQHandler)。
最后,使用一个无限循环来保持程序的运行,期间可能会捕捉到ITException异常并进行处理。
IO口外部中断配置需要先对 中断IO口 参数配置的 类对象
class user_IT_io(object)进行配置,该对象位于sharp_user模块中。Attention
回调函数,必须包含两个参数,否则无法使用。
def ON_OFF_IRQHandler(index,pin): #中断回调 print('ON_OFF index = %x,pin = %x'%(index,pin)) #===============点亮的情况下才执行中断======================================================= if pin == Pin_Device.LCD__IO_5 and SHARP_user.display_on == 1: user_mode.Delay_ms(10) print('IO_55 ONOFF') def MTP_IRQHandler(index,pin): #中断回调 print('MTP index = %x,pin = %x'%(index,pin)) #===============点亮的情况下才执行中断======================================================= if pin ==Pin_Device.LCD__IO_6 and SHARP_user.display_on == 1: user_mode.Delay_ms(10) print('IO_66 MTP') SHARP_user=User_Fun() if __name__ == '__main__': SHARP_user.My_IT_ON_OFF_Pin.IO_irq(Pin_Device.EDGE_UP,ON_OFF_IRQHandler) SHARP_user.My_IT_MTP_Pin.IO_irq(Pin_Device.EDGE_UP,MTP_IRQHandler) while True: try: pass except ITException as e: #IO口中断异常处理 不可修改 print(e)
2.4. 完整示例代码
from sharp_user import Pin_Device,user_mode
IT_ON_OFF = Pin_Device.LCD__IO_5 #外部IO口宏
IT_MTP = Pin_Device.LCD__IO_6 #外部IO口宏
def ON_OFF_IRQHandler(index,pin): #中断回调
print('ON_OFF index = %x,pin = %x'%(index,pin))
#===============点亮的情况下才执行中断=======================================================
if pin == Pin_Device.LCD__IO_5 and SHARP_user.display_on == 1:
user_mode.Delay_ms(10)
print('IO_55 ONOFF')
def MTP_IRQHandler(index,pin): #中断回调
print('MTP index = %x,pin = %x'%(index,pin))
#===============点亮的情况下才执行中断=======================================================
if pin ==Pin_Device.LCD__IO_6 and SHARP_user.display_on == 1:
user_mode.Delay_ms(10)
print('IO_66 MTP')
class User_Fun():
My_IT_ON_OFF_Pin = Pin_Device(IT_ON_OFF,Pin_Device.IN) #第一个参数是定义好的外部IO口宏,第二个参数是IO口输入输出模式
My_IT_MTP_Pin = Pin_Device(IT_MTP,Pin_Device.IN) #Pin_Device.IN 和 Pin_Device.OUT 就是配置输入或者输出模式
#My_IT_MTP_Pin = Pin_Device(IT_MTP,Pin_Device.OUT)
SHARP_user=User_Fun() #User_Fun实例化
if __name__ == '__main__':
SHARP_user.My_IT_ON_OFF_Pin.IO_irq(Pin_Device.EDGE_UP,ON_OFF_IRQHandler)
SHARP_user.My_IT_MTP_Pin.IO_irq(Pin_Device.EDGE_UP,MTP_IRQHandler)
while True:
try:
pass
except ITException as e: #IO口中断异常处理 不可修改
print(e)