第一范文网 - 专业文章范例文档资料分享平台

ARM中断实现串口通信

来源:用户分享 时间:2020-06-08 本文由幼稚园大佬 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

#include //终端服务函数入口地址

#define _ISR_STARTADDRESS 0x33ffff00

#define pISR_EINT0 (*(unsigned *)(_ISR_STARTADDRESS+0x20))//存放ISR函数的入口地址

#define pISR_EINT2 (*(unsigned *)(_ISR_STARTADDRESS+0x28)) #define pISR_EINT8_23 (*(unsigned *)(_ISR_STARTADDRESS+0x34))

// _PND register must be clr by write 1

#define Clear1Pending(bit) {SRCPND = bit; INTPND = INTPND;} // precent write wrong data

#define FCLK 202800000 #define HCLK (202800000/2) #define PCLK (202800000/4) #define UART0 0x0 #define UART1 0x1 #define UART2 0xBB

///////////////////////////////////////////////////////////////////////////////////////////// void uart_init(int nMainClk, int nBaud, int nChannel) {

if(nMainClk == 0) nMainClk = PCLK;

switch (nChannel) {

case UART0:

UBRDIV0=( (int)(nMainClk/16./nBaud+0.5) -1 );// Baud rate divisior register 0

UCON0 = 0x245;

// Control register

UFCON0 = 0x0; //UART channel 0 FIFO control register, FIFO disable UMCON0 = 0x0; //UART chaneel 0 MODEM control register, AFC disable ULCON0 = 0x3; //Line control register : Normal,No parity,1 stop,8 bits

// UART symbol

}

}

break;

UFCON1 = 0x0; //UART channel 1 FIFO control register, FIFO disable UMCON1 = 0x0; //UART chaneel 1 MODEM control register, AFC disable ULCON1 = 0x3; UCON1 = 0x245;

UBRDIV1=( (int)(nMainClk/16./nBaud) -1 ); break; break;

case UART1:

default:

void uart_sendbyte(int nData) { }

void uart_sendstring(char *pString) {

while(*pString != '\\0')

uart_sendbyte(*pString++); }

void uart_printf(char *fmt) {

uart_sendstring(fmt); }

//////////////////////////////////////////////////////////////////////////////////////

/*进入中断处理函数,中断模式的寄存器先进入输入模式,所有列线输出置为1;

UTXH0 = nData;

while(!(UTRSTAT0 & 0x2));

依次把列线拉低,检测输入端口,EINT的值,如果为低点平,说明该列被拉低; 这样行列坐标就确定了。

处理完成,返回中断模式,IO口重新设定为输出低电平,使能下降沿触发中断;*/

void __irq int0_int(void) {

// clr _pend bit is essential after E_int }

Clear1Pending(0x1);

GPEDAT |= (1<<13); //set pre_bit GPGDAT &= ~(1<<2);

//clr exam_bit

if(((GPFDAT>>0)&1)==0) uart_printf(\//enter eint_mod , ouput_mod 0 GPFCON |= (0x2<<0); //EINT0 mod GPEDAT &= ~((1<<11)|(1<<13));//output 0 GPGDAT &= ~((1<<2)|(1<<6));

//output 0

GPGDAT |= (1<<6); GPEDAT &= ~(1<<13);

//set

pre_bit //clr

exam_bit

GPEDAT |= (1<<11);//set pre_bit GPGDAT &= ~(1<<6);

// clr exam_bit

if(((GPFDAT>>0)&1)==0) uart_printf(\GPGDAT |= ((1<<2)|(1<<6));//output 1

GPFCON &= ~(0x3<<0);//EINT_mod to input_mod

if(((GPFDAT>>0)&1)==0) uart_printf(\// 10 11 12 16

// enter input_mod ,kscan0-kscan3 output 1 GPGDAT &= ~(1<<11);// 0 GPEDAT |= (1<<13); // 1

if(((GPFDAT>>0)&1)==0) uart_printf(\

void __irq int2_int(void) {

GPEDAT |= (1<<13); GPGDAT &= ~(1<<2);

if(((GPFDAT>>2)&1)==0) uart_printf(\

GPFCON |= (0x2<<4); // EINT2 mod GPEDAT &= ~((1<<11)|(1<<13)); GPGDAT &= ~((1<<2)|(1<<6)); GPGDAT |= (1<<6); GPEDAT &= ~(1<<13);

if(((GPFDAT>>2)&1)==0) uart_printf(\GPEDAT |= (1<<11); GPGDAT &= ~(1<<6);

if(((GPFDAT>>2)&1)==0) uart_printf(\ // 7 8 9 15

GPGDAT &= ~(1<<11);// 0 GPEDAT |= (1<<13); // 1

GPGDAT |= ((1<<2)|(1<<6));//output 1 GPFCON &= ~(0x3<<4);// input_mod if(((GPFDAT>>2)&1)==0) uart_printf(\

// uart_printf(\ Clear1Pending(0x1<<2); }

void __irq int11_int(void) {

if(((EINTPEND>>11)&1)==1) {

//4 5 6 14

GPGDAT &= ~(1<<11);// 0 GPEDAT |= (1<<13); // 1

GPGDAT |= ((1<<2)|(1<<6));//output 1 GPGCON &= ~(0x3<<6);// input mod

if(((GPGDAT>>3)&1)==0) uart_printf(\GPEDAT |= (1<<11); GPGDAT &= ~(1<<6);

if(((GPGDAT>>3)&1)==0) uart_printf(\GPGDAT |= (1<<6); GPEDAT &= ~(1<<13);

if(((GPGDAT>>3)&1)==0) uart_printf(\GPEDAT |= (1<<13); GPGDAT &= ~(1<<2);

if(((GPGDAT>>3)&1)==0) uart_printf(\

GPGCON |= (0x2<<6);//EINT 11 mod GPEDAT &= ~((1<<11)|(1<<13)); GPGDAT &= ~((1<<2)|(1<<6));

EINTPEND=(1<<11); } else {

// 1 2 3 13

GPGDAT &= ~(1<<11);// 0

// uart_printf(\

GPEDAT |= (1<<13); // 1

GPGDAT |= ((1<<2)|(1<<6));//output 1 GPGCON &= ~(0x3<<22);// input mod

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新IT计算机ARM中断实现串口通信 全文阅读和word下载服务。

ARM中断实现串口通信 .doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1076503.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top