这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » Microchip » 被PIC的C32外设库坑得灰头土脸

共3条 1/1 1 跳转至

被PIC的C32外设库坑得灰头土脸

高工
2014-03-25 00:10:44     打赏





void __ISR(_UART2_VECTOR, ipl2) IntUart2Handler(void)
{
	// Is this an RX interrupt?
	if(INTGetFlag(INT_SOURCE_UART_RX(UART_MODULE_ID)))
	{
            

            // Echo what we just received.
            putcUART2(ReadUART2());
// Clear the RX interrupt Flag
	    INTClearFlag(INT_SOURCE_UART_RX(UART_MODULE_ID));
            // Toggle LED to indicate UART activity
            mPORTAToggleBits(BIT_0);
	}
} 


void __ISR(_UART2_VECTOR, ipl2) IntUart2Handler(void)
{
	// Is this an RX interrupt?
	if(INTGetFlag(INT_SOURCE_UART_RX(UART_MODULE_ID)))
	{
            
            // Clear the RX interrupt Flag
	    INTClearFlag(INT_SOURCE_UART_RX(UART_MODULE_ID));
            // Echo what we just received.
            putcUART2(ReadUART2());

            // Toggle LED to indicate UART activity
            mPORTAToggleBits(BIT_0);
	}
} 


两段串口RX中断服务程序


使用串口调试助手,键盘信息发送至串口显示

大家看出来什么区别了吗?

没错,仅仅是INTClearFlag和 putcUART2(ReadUART2())两个函数调换了次序

第一段程序是修改后的,能够正常从键盘读取字符。

第二段是PIC官方外设库的程序,代码执行的时候,每次都回显2个字符的数据,其中一个字符是上一次缓存的字符,赶脚是中断出现2次。

不科学啊

这个外设库,还能再坑一点吗?











院士
2014-03-25 00:37:36     打赏
2楼

看来只能同情一下楼主了。

还没有接触过PIC的东西呢~~


高工
2014-06-12 14:15:25     打赏
3楼
看来要先读后清啊,否则后果很严重

共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]