2. PIN
本章节主要介绍K2000的IO口使用方法。
2.1. 普通IO口配置方法
控制IO口时需要先对IO口 参数配置的 类对象
class str_user_io(object)进行配置,该对象位于sharp_user模块中。
class str_user_io(object)
IO_PIN: IO口 pin引脚号
IO_Mode: IO口 pin模式(输入输出模式)
拉高IO口方法为
SHARP_UserIO_BitSet拉低IO口方法
SHARP_UserIO_BitReset获取IO口电平为
SHARP_UserIO_GetBit
配置IO口为输出模式
from sharp_user import *
REST = LCD_RST__IO_3
def IO_Configuration():
user_io = str_user_io()
user_io.IO_PIN = LCD_TXS_OE|REST
user_io.IO_Mode = OUTPUT_DIR #输出模式 输入模式为INPUT_DIR
SHARP_UserIO_Conf(user_io)
SHARP_UserIO_BitSet(LCD_TXS_OE) #使能转换IC
SHARP_UserIO_BitSet(REST) #拉高复位脚
SHARP_UserIO_BitReset(REST) #拉低复位脚
配置IO口为输入模式
注意
IO口做输入是浮空不稳定状态,需要外部转板加10K的上拉或者下拉电阻。
from sharp_user import *
REST = LCD_RST__IO_3
def IO_Configuration():
user_io = str_user_io()
user_io.IO_PIN = LCD_TXS_OE|REST
user_io.IO_Mode = INPUT_DIR
SHARP_UserIO_Conf(user_io)
SHARP_UserIO_BitSet(LCD_TXS_OE) #使能转换IC
SHARP_UserIO_GetBit(REST) # Returns 0 or 1.
2.2. IO口外部中断
什么是中断呢?
在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。 在出现需要时,CPU必须暂停现在的事情,处理别的事情,处理完了再回去执行暂停的事情。
当输入引脚发生电平变化时触发硬件中断,触发器会执行中断处理函数。可以定义回调函数来做些中断响应的工作。
注意
当前IO外部中断只支持上升沿和下降沿的电平变化来触发中断。
2.3. IO口外部中断配置方法
IO口外部中断配置需要先对 中断IO口 参数配置的 类对象
class user_IT_io(object)进行配置,该对象位于sharp_user模块中。
class user_IT_io(object)具体有以下参数
IO_PIN: IO口 pin引脚号
IO_ITMode: IO中断触发模式(上升沿触发和下降沿触发)
IO_ITCycle: 中断采样周期
IO_Enable: IO口中断使能
pin_isr_handler: IO口中断回调
备注
回调函数,必须包含两个参数,否则无法使用。
from mp_user import *
def isr_test3(index,pin): # index 主机号 pin中断IO
Delay_ms(10)
if pin ==LCD__IO_5:#
SHARP_Delay_ms(50) # 消抖
if SHARP_UserIO_GetBit(LCD__IO_5) == 1:
SHARP_Reset_Run() # 此函数会上抛一个中断异常 可以实现重新运行main 里的while循坏(用户自行决定是否需要调用)
def ISR_Configuration():
IT_io = user_IT_io()
IT_io.IO_PIN=LCD__IO_6|LCD__IO_5
IT_io.IO_Enable=1
IT_io.IO_ITMode=EDGE_UP # 上升沿触发
IT_io.IO_ITCycle = 80 # 中断采样时间,时间越大采样间隔就会越大
IT_io.handler = isr_test3 # 注册中断回调
SHARP_UserIO_ITConf(IT_io)
def main():
ISR_Configuration()
while True:
try:
pass
except ITException as e: # IO口中断异常处理 (没有语法高亮属于正常现象)
print(e)