arm使用dbgu发送中断出现的问题
以下为arm的dbgu初始化程序和中断程序:void AT91F_DBGU_Init(void)
{
AT91F_DBGU_CfgPIO();
( ( AT91PS_USART ) AT91C_BASE_DBGU )->US_CR = ( AT91C_US_RSTTX |AT91C_US_RSTRX );
AT91F_US_Configure (
( AT91PS_USART ) AT91C_BASE_DBGU,
MCK,
AT91C_US_ASYNC_MODE ,
AT91C_DBGU_BAUD ,
0 );
( ( AT91PS_USART )AT91C_BASE_DBGU )->US_CR = ( AT91C_US_RXEN | AT91C_US_TXEN );
AT91F_US_EnableIt((AT91PS_USART) AT91C_BASE_DBGU,AT91C_US_RXRDY | AT91C_US_ENDTX);
AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC, AT91C_ID_SYS,
USART_SYS_LEVEL,
AT91C_AIC_SRCTYPE_INT_LEVEL_SENSITIVE,
DBGU_irq_handler );
AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_SYS);
}
void DBGU_irq_handler(void)
{
unsigned char re_data_ud, re_status_dbgu = 0;
re_status_dbgu = (*AT91C_DBGU_CSR & 0x11);
if (re_status_dbgu) {
re_data_ud = ( *AT91C_DBGU_RHR & 0x1FF ); /*接收中断处理*/
if ('X' == re_data_ud ) { /*起始*/
re_local_index = 0;
re_head_ud = 1;
re_local_index++;
return;
}
if ( 'M' == re_data_ud ) { /*结束*/
if( 15 < re_local_index ) {
re_head_ud = 0;
re_local_index = 0;
return;
}
re_local_is_ok = 1; /*一包数据传递完毕,设置标志位*/
re_head_ud = 0;
re_local_index = 0;
/*
AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, STATUS );
*/
return;
}
if ( 15 < re_local_index ) {
re_head_ud = 0;
re_local_index = 0;
return;
}
else {
if ( 1 != re_head_ud ) {
re_local_index = 0;
re_head_ud = 0;
return;
}
strRxBuff = re_data_ud; /*正文数据*/
re_local_index++;
if ( 16 < re_local_index ) {
re_head_ud = 0;
re_local_index = 0;
}
}
}
if((re_status_dbgu & 0x10) >> 4)
{
if((local_tx_buff == '/0') || (tx_local_index > 15))
{
tx_local_index = 1;
return;
}
*AT91C_DBGU_THR = local_tx_buff;
}
}
在开始运行后不久就进入了中断,但是并未接受到或者需要发送人和数据。一开始re_status_dbgu数据为0,当运行完if((re_status_dbgu & 0x10) >> 4)判断之后,跳入了该if判断成功后的语句if((local_tx_buff == '/0') || (tx_local_index > 15)),并且此时re_status_dbgu值为0x000000CD。并且在其后的时间不断重复该循环,但是我们至今没有找到问题所在。我想请问一下是哪里有出错的地方。 请问你用的什么仿真器? DBGU不建议使用中断,这个中断为系统中断,与其他共用; 请注意这里'/0'
'\0' '/0'是不同的 近来在 研究DBGU 找不到什么 资料,不过看了你这个例子,我 明白你的 问题出在哪里了
看这句AT91F_US_EnableIt((AT91PS_USART) AT91C_BASE_DBGU,AT91C_US_RXRDY | AT91C_US_ENDTX);
问题是 AT91C_US_ENDTX 这个不该加,因为这个表示发送缓冲器空中断,而你没有发送数据。
所以发送缓冲器为空,故一直会进入中断 楼上的发问前搜索一下论坛会有收获
这个问题以前就讨论过了 楼上的发问前搜索一下论坛会有收获
这个问题以前就讨论过了
有结果吗,没搜到啊,给个链接,兄弟,
谢谢了 回复【5楼】ralfak
楼上的发问前搜索一下论坛会有收获
这个问题以前就讨论过了
-----------------------------------------------------------------------
其实老兄应该把自己的回复合成一个集子,就像北大或者什么的学校bbs系统做的那样,的确老兄在dbgu方面发过很多帖子,但都零零碎碎的
,估计世界上只有google才找的到吧~这不google又把我飞这儿来了。但就想不起来前天看的是哪篇了,md 回复【7楼】reloaded电子浪人
回复【5楼】ralfak
楼上的发问前搜索一下论坛会有收获
这个问题以前就讨论过了
-----------------------------------------------------------------------
其实老兄应该把自己的回复合成一个集子,就像北大或者什么的学校bbs系统做的那样,的确老兄在dbgu方面发过很多帖子,但都零零碎碎的
,估计世界上只有google才找的到吧~这不google又把我飞这儿来了。但就想不起来前天看的是哪篇了,md
-----------------------------------------------------------------------
这要求提得就过了
既然自己曾经看见过,那么自己找个地方分门别类存一下才是正解,怎么还要求作者出合集啊?给编辑费么? 回复【8楼】waitingconfirm
回复【7楼】reloaded电子浪人
回复【5楼】ralfak
楼上的发问前搜索一下论坛会有收获
这个问题以前就讨论过了
-----------------------------------------------------------------------
其实老兄应该把自己的回复合成一个集子,就像北大或者什么的学校bbs系统做的那样,的确老兄在dbgu方面发过很多帖子,但都零零碎碎的
,估计世界上只有google才找的到吧~这不google又把我飞这儿来了。但就想不起来前天看的是哪篇了,md
-----------------------------------------------------------------------
这要求提得就过了
既然自己曾经看见过,那么自己找个地方分门别类存一下才是正解,怎么还要求作者出合集啊?给编辑费么?
-----------------------------------------------------------------------
当然您要是觉得过那就过呗,,,
换句话说可以反过头来考量自己做这个小程序除错的心得嘛。。。
我敢说楼上肯定没留意过传统的大学内网bbs,类似于北大未名之类,它的bbs管理员会定期将有意义的讨论贴合成一个贴,然后大家
在它基础上继续发酵。
其实这个功能是可以通过改进论坛内部搜索系统来实现,就是 “关键字 +某人回帖记录”(@google)
其实我想说,论坛真应该把代码阅读器嵌入进来,从notepad里考出来的源代码看着真痛苦。 回复【9楼】reloaded电子浪人
回复【8楼】waitingconfirm
当然您要是觉得过那就过呗,,,
换句话说可以反过头来考量自己做这个小程序除错的心得嘛。。。
我敢说楼上肯定没留意过传统的大学内网bbs,类似于北大未名之类,它的bbs管理员会定期将有意义的讨论贴合成一个贴,然后大家
在它基础上继续发酵。
其实这个功能是可以通过改进论坛内部搜索系统来实现,就是 “关键字 +某人回帖记录”(@google)
其实我想说,论坛真应该把代码阅读器嵌入进来,从notepad里考出来的源代码看着真痛苦。
-----------------------------------------------------------------------
多说不如多做
大学内网BBS的管理员十个里面有九个是闲人,还有一个是懒人,当然有工夫不断改进这改进那
但就以这个论坛而言,访问速度和安全性才是首要考虑的因素,代码阅读器什么的……你不会拷下去自己走 indent 啊?
当然,个人也比较支持在论坛后台程序上加个 code 标签一类的,然后标签内容直接后台走完 indent 再放出来…… 回复【10楼】waitingconfirm
-----------------------------------------------------------------------
是的呢,话说indent原来是 缩进 的意思啊~~
他喵的以后我开个source insight 在旁边侯着,,
正在努力提高快速阅读代码的水平中,,,,
页:
[1]