共2条
1/1 1 跳转至页
早上好,調試鍵盤程序出錯?但不知道為什麼,請大家幫忙.
问
大家早上好,昨天我把ADS裝在了C盤下,終於可以仿真了,我的燈循環程序終於通過方真了,可是我的鍵盤用單步執行都沒有反應啊,我實在找不出在哪裡有錯了,現在我把程序貼出來,請大家幫忙分析一下,會出錯在哪裡?
void Main(void)
{
rPUPG=0x00;// Permit pull_up register
rPCONG=0x00; //GPG IS Input
rPUPC=0xffffffff; // Output,forbit pull_up register
rPCONC=0x55555555; // GPC Are All Output
rPDATC=0xffffffff; // all I/O Are high
while(1)
{
if(rPDATG==0xef) // GPG4 is low
{rPDATC=led0;} // light the LED0
if(rPDATG==0xdf) // GPG5 is low
{rPDATC=led1;} // light the LED1
if(rPDATG==0xbf) // GPG6 is low
{rPDATC=led2;} // light the LED2
}
}
我在線上等. 答 1: 什么型号的? 答 2: 不好意思,忘了說硬件是3sc44b0x的,3個燈接在C口的第2.3.4腳上,鍵盤接在G口的第4.5.6口上.鍵盤低電平有效. 答 3: 請大家幫我看看,分析一下吧,小生實在是想不出為什麼了? 答 4: 大哥們,幫我看看嗎,我實在搞不定啊,我找不出錯誤啊
大家幫幫忙吧,拜託了!!!!! 答 5: RP与速度有关没有, 答 6: 你指的是什麼速度呢?如過是按鍵的速度的話,我是一直按下的,都沒有反應,如果說是mcu的速度的話那是肯定夠的,請問還有什麼原因呢? 答 7: 试试:把某一脚直接一直拉低是什么反应? 答 8: 那我沒有試過
硬件是沒有問題的,我用板子帶的鍵盤測試程序都是沒有問題,說明就不是板子的問題.
我查我的程序都有1個星期了,我都要崩潰了,查不出哪裡有錯誤產生 答 9: 可能是程序有问题不知道你的GPG0~3是怎么接的,但是你都配置的输入,那么你应该屏蔽掉GP0~3,稍加修改:
if((rPDATG|0x0f)==0xef) // GPG4 is low
{rPDATC=led0;} // light the LED0 答 10: 硬件没问题只能是软件的问题楼上说的有道理。软件的问题可能就在于。。。看看编译后的汇编程序是不是对的。 答 11: 有可能0~3的影響,晚上我回去試試,你看一下下面的有可能的,對了,如果我剛開始把它定義為輸出,然後都給高,然後再定義為輸入,這樣可以嗎,看下面程序;
void Main(void)
{
rPCONG=0x55;
rPUPG=0xff;
rPDATG=0xff;
// rPDATG=0xff; //all I/O Are High
rPUPG=0x00;// Permit pull_up register
rPCONG=0x00; //GPG IS Input
rPUPC=0xffffffff; // Output,forbit pull_up register
rPCONC=0x55555555; // GPC Are All Output
rPDATC=0xffffffff; // all I/O Are high
while(1)
{ if(rPDATG!=0xff)
{ delay100ms();
if(rPDATG!=0xff)
{ if(rPDATG==0xef) // GPG4 is low
{rPDATC=led0;} // light the LED0
if(rPDATG==0xdf) // GPG5 is low
{rPDATC=led1;} // light the LED1
if(rPDATG==0xbf) // GPG6 is low
{rPDATC=led2;} // light the LED2
}
}
}
如果這樣,你認為可以嗎? 答 12: 你的方法我没有测试过GPIO是完全的IO,输入则读引脚,输出则写寄存器,所以可能不行哟。 答 13: 但是如果不行的話,那麼,...那麼當你要用的逐行掃描的時候該怎麼辦,一會要當作輸出,一會又要當作輸入,那這個問題要如何解決呢? 答 14: To:zhiwei請問那你用什麼方法的呢? 答 15: 不停地修改设置啊把IO设置成输出,而进行读操作,读取的数据肯定是无效的。
需要输入是设置输入,休要输出的时候设置成输出救可以了。 答 16: 對啊,我也是這麼想的就是要不停的對I/O進行設置,好麻煩啊,不像51一樣,可以直接用.
初次接觸ARM,很多都不懂,可否介紹一本書我學學,謝謝! 答 17: 看文档就可以了44b0资料在网上到处都是,书看看周立功的, 答 18: 周立功的是philips的,44b0是samsung的,有些區別
不過,我買了本"基於S3C44B0X嵌入式uCLinux系統原理及應用"
感覺還好了,只是它裡面寫的例子程序看的很費神,我認為它的程序多了不必要的語句.
對了,學習ARM一定要學會Linux嗎? 答 19: 搞定了,謝謝大家的幫助!
void Main(void)
{
rPUPG=0x00;// Permit pull_up register
rPCONG=0x00; //GPG IS Input
rPUPC=0xffffffff; // Output,forbit pull_up register
rPCONC=0x55555555; // GPC Are All Output
rPDATC=0xffffffff; // all I/O Are high
while(1)
{
if(rPDATG==0xef) // GPG4 is low
{rPDATC=led0;} // light the LED0
if(rPDATG==0xdf) // GPG5 is low
{rPDATC=led1;} // light the LED1
if(rPDATG==0xbf) // GPG6 is low
{rPDATC=led2;} // light the LED2
}
}
我在線上等. 答 1: 什么型号的? 答 2: 不好意思,忘了說硬件是3sc44b0x的,3個燈接在C口的第2.3.4腳上,鍵盤接在G口的第4.5.6口上.鍵盤低電平有效. 答 3: 請大家幫我看看,分析一下吧,小生實在是想不出為什麼了? 答 4: 大哥們,幫我看看嗎,我實在搞不定啊,我找不出錯誤啊
大家幫幫忙吧,拜託了!!!!! 答 5: RP与速度有关没有, 答 6: 你指的是什麼速度呢?如過是按鍵的速度的話,我是一直按下的,都沒有反應,如果說是mcu的速度的話那是肯定夠的,請問還有什麼原因呢? 答 7: 试试:把某一脚直接一直拉低是什么反应? 答 8: 那我沒有試過
硬件是沒有問題的,我用板子帶的鍵盤測試程序都是沒有問題,說明就不是板子的問題.
我查我的程序都有1個星期了,我都要崩潰了,查不出哪裡有錯誤產生 答 9: 可能是程序有问题不知道你的GPG0~3是怎么接的,但是你都配置的输入,那么你应该屏蔽掉GP0~3,稍加修改:
if((rPDATG|0x0f)==0xef) // GPG4 is low
{rPDATC=led0;} // light the LED0 答 10: 硬件没问题只能是软件的问题楼上说的有道理。软件的问题可能就在于。。。看看编译后的汇编程序是不是对的。 答 11: 有可能0~3的影響,晚上我回去試試,你看一下下面的有可能的,對了,如果我剛開始把它定義為輸出,然後都給高,然後再定義為輸入,這樣可以嗎,看下面程序;
void Main(void)
{
rPCONG=0x55;
rPUPG=0xff;
rPDATG=0xff;
// rPDATG=0xff; //all I/O Are High
rPUPG=0x00;// Permit pull_up register
rPCONG=0x00; //GPG IS Input
rPUPC=0xffffffff; // Output,forbit pull_up register
rPCONC=0x55555555; // GPC Are All Output
rPDATC=0xffffffff; // all I/O Are high
while(1)
{ if(rPDATG!=0xff)
{ delay100ms();
if(rPDATG!=0xff)
{ if(rPDATG==0xef) // GPG4 is low
{rPDATC=led0;} // light the LED0
if(rPDATG==0xdf) // GPG5 is low
{rPDATC=led1;} // light the LED1
if(rPDATG==0xbf) // GPG6 is low
{rPDATC=led2;} // light the LED2
}
}
}
如果這樣,你認為可以嗎? 答 12: 你的方法我没有测试过GPIO是完全的IO,输入则读引脚,输出则写寄存器,所以可能不行哟。 答 13: 但是如果不行的話,那麼,...那麼當你要用的逐行掃描的時候該怎麼辦,一會要當作輸出,一會又要當作輸入,那這個問題要如何解決呢? 答 14: To:zhiwei請問那你用什麼方法的呢? 答 15: 不停地修改设置啊把IO设置成输出,而进行读操作,读取的数据肯定是无效的。
需要输入是设置输入,休要输出的时候设置成输出救可以了。 答 16: 對啊,我也是這麼想的就是要不停的對I/O進行設置,好麻煩啊,不像51一樣,可以直接用.
初次接觸ARM,很多都不懂,可否介紹一本書我學學,謝謝! 答 17: 看文档就可以了44b0资料在网上到处都是,书看看周立功的, 答 18: 周立功的是philips的,44b0是samsung的,有些區別
不過,我買了本"基於S3C44B0X嵌入式uCLinux系統原理及應用"
感覺還好了,只是它裡面寫的例子程序看的很費神,我認為它的程序多了不必要的語句.
對了,學習ARM一定要學會Linux嗎? 答 19: 搞定了,謝謝大家的幫助!
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图四被打赏50分 | |
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 |