共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电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
分享汽车通信和多媒体总线结构被打赏20分 | |
【我踩过的那些坑】结构堵孔导致的喇叭无声问题被打赏50分 | |
NUCLEO-U083RC学习历程38+串口通过队列的方式输出两个字符串被打赏20分 | |
【我踩过的那些坑】分享一下调试一款AD芯片的遇到的“坑”被打赏50分 | |
电流检测模块MAX4080S被打赏10分 | |
【我踩过的那些坑】calloc和malloc错误使用导致跑飞问题排查被打赏50分 | |
分享电控悬架的结构与工作原理(一)被打赏20分 | |
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 |