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)