TI中文支持网
TI专业的中文技术问题搜集分享网站

sysbios 串口hwi问题

我使用hwi 串口中断, 串口中断产生时,无法进入串口服务程序, 而且中断其他的Task后将无法再启动, 我使用scia ,接收中断,中断号取9.

Jeanne Yi:

您需要创建UART对应的Hwi task。以下请参考:

Hwi_create(9, UART_hwiIntFxn, &hwiParams, &eb);

详细代码,可下载TI RTOS MCU SDK,参考其中的UART ECHO示例代码。

我使用hwi 串口中断, 串口中断产生时,无法进入串口服务程序, 而且中断其他的Task后将无法再启动, 我使用scia ,接收中断,中断号取9.

gang fang:

回复 Jeanne Yi:

我是使用配置文件创建的hwi,随便问一下在哪可以下载TI RTOS MCU SDK,谢谢!

我使用hwi 串口中断, 串口中断产生时,无法进入串口服务程序, 而且中断其他的Task后将无法再启动, 我使用scia ,接收中断,中断号取9.

Jeanne Yi:

回复 gang fang:

用配置文件也是可以的,但不知您用的XDC是哪个版本,你这个没有设置中断优先级的选项。

我用的XDC 3.23.2.47是可以设置优先级的。并且中断优先级参数只能用0x20,0x40,0x80等值来进行设置。

MCU SDK下载地址:http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/tirtos/index.html

谢谢!

我使用hwi 串口中断, 串口中断产生时,无法进入串口服务程序, 而且中断其他的Task后将无法再启动, 我使用scia ,接收中断,中断号取9.

Chengyi Yu:

回复 Jeanne Yi:

sysbios里面使用中断,打开全局中断的时候,程序运行后就一直进入死循环:IntDefaultHandler里的while(1)循环,请教改怎么设置cfg文件或是更改代码,使得系统硬件中断可以正常使用

我使用hwi 串口中断, 串口中断产生时,无法进入串口服务程序, 而且中断其他的Task后将无法再启动, 我使用scia ,接收中断,中断号取9.

FANG HUANG1:

回复 Jeanne Yi:

Can't find a source file at "/tmp/TI_MKLIBl3yPak/SRC/exit.c" Locate the file or edit the source lookup path to include its location.

工程请见附件

dubug的时候出现这个,也找不到源程序,请问这个怎么解决?

另外任务设置如下,但是进入不了接受中断:

/* * UartTask */Void UartTask(UArg a0, UArg a1){#if 1 /* Enable Receive UART and its interrupt. */ // Out_T_RW = 0; GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2,0);//T_RW = 0,Receive Enable; UARTIntRegister(UART1_BASE, uart1Isr); UARTIntClear(UART1_BASE, (UART_INT_TX | UART_INT_TX | UART_INT_RT)); UARTIntDisable(UART1_BASE, (UART_INT_TX | UART_INT_RT)); UARTIntEnable(UART1_BASE, UART_INT_RX); UARTEnable(UART1_BASE); /* Set the FIFO level to 7/8 empty and 7/8 full. */ UARTFIFOLevelSet(UART1_BASE, UART_FIFO_TX1_8, UART_FIFO_RX7_8); UARTFIFOEnable(UART1_BASE);

pt=0; n=0; while(1) { while(1) { SEM_pend(Sem, 50);//等待接收结束的信号量 if(pt==0)continue;//尚未接收到数据继续等待 if(n==pt)break;//接收大数据且稳定不变,则结束等待 n=pt;//记忆当前接收到的字节数目,继续等待。 } n=pt; pt=0; /* Set the FIFO level to 7/8 empty and 7/8 full. */ UARTFIFOLevelSet(UART1_BASE, UART_FIFO_TX1_8, UART_FIFO_RX7_8); UARTFIFOEnable(UART1_BASE);

UARTIntClear(UART1_BASE, (UART_INT_TX | UART_INT_RT)); UARTIntEnable(UART1_BASE, (UART_INT_TX | UART_INT_RT)); UARTEnable(UART1_BASE); if(n>=14)//帧长度达到14字节以上 { for(i=0;i<14;i++) //先发送14字节 { mb_tx_data = a[pt++]; UARTCharPutNonBlocking(UART1_BASE,mb_tx_data); } /* Enable Send UART and its interrupt. */ // Out_T_RW = 1; GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2,~0);//T_RW = 1,Transmit Enable; SEM_pend(Sem, 0);//等待发送结束的信号量 } else for(i=0;i<n;i++) mb_tx_data = a[pt++];//帧长度不到14一次发完,不需要中断和信号量 }#endif}

赞(0)
未经允许不得转载:TI中文支持网 » sysbios 串口hwi问题
分享到: 更多 (0)