历史上的今天
返回首页

历史上的今天

今天是:2025年01月16日(星期四)

正在发生

2019年01月16日 | LPC2378上用ST16C2550扩展串口使用GPIO中断

2019-01-16 来源:eefocus

LPC2378外部中断管脚P2.10~P2.13可用为外部中断,也可以用为GPIO中断。


在LPC2378上用ST16C2550芯片扩展串口时,两种中断都可以用,但看LPC2378文档时,外部中断那块讲的比较晦涩,GPIO中断倒是很明白,我就用GPIO中断去操作,非常好,中断收发通信成功。代码如下,供大家参考:


 /*********************中断处理函数************************/


void ST16_Handler (void) __irq                

{

    BYTE status; 

    IENABLE;    /* handles nested interrupt */ 

    status = EUART_ADDR_ISR;

    

    if ( (status&0x06) == 0x04 ) /* 接收数据 */

    {

   while( EUART_ADDR_LSR & 0x01 )/* Receive Data Ready */ 

{

    ST16_Buffer[ST16_Count] = EUART_ADDR_RHR;

    ST16_Count++;

    if ( ST16_Count == BUFSIZE )

    {

ST16_Count = 0;

    }

}

    }

 

    else if ( (status&0x06) == 0x02 ) /* 发送数据 */

    {

if ( EUART_ADDR_LSR & 0x20 )

{

    ST16_TxEmpty = 1;


              /********此处可添加发送数据处理程序********/

}

else

{

    ST16_TxEmpty = 0;

}

    }   

    IDISABLE;

IO2_INT_CLR = 1<<10;/*清除IO中断*/

    VICVectAddr = 0x00000000; /* 清除向量中断 */


}


/*******************GPIO中断初始化***********************/


int main (void) 


   EMCInit();

   ST16_Init(115200);

   /*中断设置*/

   IO2_INT_CLR=0xffffffff;      

   IO2_INT_EN_R=1<<10;   //GPIO上升沿中断,中断管脚连接到P2.10

   VICVectCntl17=0x00000000; //中断优先级

   VICVectAddr17=(unsigned)ST16_Handler; //中断向量地址


}

推荐阅读

史海拾趣

FERYSTER公司的发展小趣事

在全球环保意识日益增强的背景下,FERYSTER公司积极响应环保号召,推动企业的绿色转型。公司采用环保材料替代传统材料,优化生产工艺减少能源消耗和废弃物排放。此外,公司还积极推广绿色电子产品,引导消费者关注环保问题。这些努力不仅提升了公司的社会形象,也为公司带来了更多的商业机会。

Datalinear公司的发展小趣事

在竞争激烈的电子行业中,Datalinear公司意识到单打独斗很难取得长远的发展。因此,公司积极寻求与其他企业的合作。通过与上下游企业的紧密合作,Datalinear公司不仅降低了生产成本,还提高了产品质量和交货速度。此外,公司还与一些科研机构建立了合作关系,共同研发新技术和新产品,实现了共赢的局面。

CIPS公司的发展小趣事

自CIPS系统上线以来,其业务量呈现快速增长的态势。通过CIPS系统处理的跨境人民币业务量逐年攀升,连接到该系统的参与者数量也大幅增加。这些参与者遍布全球各地,涵盖了银行、金融机构等多个领域。CIPS系统的业务范围不断扩大,实际业务覆盖全球多个国家和地区,为全球金融网络的发展做出了重要贡献。

Hirschmann公司的发展小趣事
TC4066作为模拟开关,根据外部输入的数字信号(如A、B、C、D等)来控制其内部开关的通断。这些数字信号可以编程地设置TC4066的开关状态,从而改变电路中的信号路径或电阻/电容值,进而影响定时电路的延时时间或输出波形。
General Electric Solid State公司的发展小趣事
TC4013作为定时器的核心,通过接收外部触发信号(如时钟信号的上升沿)来控制定时器的置位和复位。它内部的JK触发器可以根据输入的信号状态(J、K、时钟信号等)来设置或重置其输出状态。
CLARE公司的发展小趣事

CLARE公司始终坚持品质至上的原则,从原材料采购到生产制造、质量检测等各个环节都严格把控,确保产品的品质和性能达到客户的期望。同时,公司还建立了完善的售后服务体系,为客户提供及时、专业的技术支持和服务。这些举措赢得了客户的信赖和好评,为CLARE公司的长期发展奠定了坚实的基础。

问答坊 | AI 解惑

单端反激式开关电源设计15W設計步驟

单端反激式开关电源设计15W設計步驟…

查看全部问答>

新手提问:我的机器是wince5,arm926ej的内核,用evc时候选择哪个CPU类型?

我看列表里面ARM相关的只有ARM4/ARM4I/ARM4T,请问该如何选择? 多谢…

查看全部问答>

做为大学生怎么学好单片机编程

有哪位高手或者学长能告诉我如何学好单片机编程啊?应该怎么学习最好啊 …

查看全部问答>

如何选择传感器

我想买个传感器,采集脉搏信号,连接电源电路和放大滤波电路,有谁推荐一个便宜的给我?…

查看全部问答>

菜鸟提问:winCE如何与其它操作系统通讯

如题:安装了Wince(5.0)的主机,网线与局域网其它计算机连通,都能想互ping通对方。请问如何好其它计算机(XP与2003)交换文件,试了试靠文件共享好像不行哦。…

查看全部问答>

在PC上接入多个相同的usb设备,第二个设备提示安装驱动,为什么?

我在PC上接入两个相同的usb设备,通常usb端口可以提供500ma的电流,我接的设备耗电都小于这个值,但是在接入第二个设备时,总是提示安装驱动,或者干脆无法识别。 我在同事的新机箱上试验,他的机器可以,但是我的不行,不知道这种现象除了更换机 ...…

查看全部问答>

关于LM3S800UART使用了FIFO后的接收超时中断

各位坛友,我使用UART时,设置了FIFO接收中断深度,同时使能接收超时中断。请问,这个接收超时中断是什么情况下触发的?手册上有这样一句话,“当接收FIFO不为空时接收超时中断有效”。我做了一块modbus主机板,没接从机的时候,也就没有接收,这个 ...…

查看全部问答>

把旅行变成修行之“装备篇(下)”

本帖最后由 dontium 于 2015-1-23 12:45 编辑 灵魂自行车的周边装备——警用监控系统/DLP手机投影/立体声音响/智能手机&平板/高亮手电筒 我的上一篇博文《把旅行变成修行之“装备篇(上)” 》讲述了我这次环岛骑行座驾——灵魂自行车的“ ...…

查看全部问答>

stm32 fsmc总线操作nor flash时候的地址移位问题

#define ADDR_SHIFT(A) (Bank1_NOR2_ADDR + (2 * (A))) #define NOR_WRITE(Address, Data)  (*(vu16 *)(Address) = (Data)) NOR_Status FSMC_NOR_EraseBlock(u32 BlockAddr) {   NOR_WRITE(ADDR_SHIFT(0x05555), 0x00AA); ...…

查看全部问答>

Zigbee bootloader编译报错问题

最近这段时间一直在研究无线固件升级和串口升级固件,在研究中出现了好多问题,有些问题在TI官方文档和在TI官方论坛也没找到答案,发的帖基本就是没人搭理成了死帖。在论坛或QQ群经常看到初学者问是否可以串口下载zigbee程序呢?我刚学zigbee时也问 ...…

查看全部问答>