|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產業(yè) | CAN-bus/DeviceNe |
IO操作不好使,幫看看哪里毛病 |
| 作者:pp99sky 欄目:MCU技術 |
圖片是710的P2.12,P2.13,P2.14,P2.15接245的圖,配置輸出GPIO_Config(GPIO2, 0xF000, GPIO_OUT_PP); 我采用定時中斷程序,使它們同時交替輸出高低電平,程序如下: void T1TIMI_IRQHandler(void) { static vu8 i; if ( TIM_FlagStatus(TIM1, TIM_OCFA) ) { TIM_FlagClear(TIM1, TIM_OCFA); TIM_AddOCMPCounterValue(TIM1, 9375); i++; if(i==30) { //GPIO_BitWrite(GPIO2,14,1); GPIO_BitWrite(GPIO2,15,1); //IO_BitWrite(GPIO2,12,1); GPIO_BitWrite(GPIO2,13,1); } if(i==60) { i=0; //GPIO_BitWrite(GPIO2,14,0); GPIO_BitWrite(GPIO2,15,0); //IO_BitWrite(GPIO2,12,0); GPIO_BitWrite(GPIO2,13,0); } } } 情況是這樣,單獨操作這幾個IO中的任何一個,都工作正常,同時操作兩個及以上,如程序所示,都不好使。 圖上245的6,7,8,9腳輸出,當操作兩個以上腳同時輸出時,只有一個腳正常工作,其余的腳保持高電平或低電平不變。我這個上面我測的規(guī)律是,當同時操作兩個以上時,數(shù)字最大的那個腳正常輸出,我這幾個腳都輸出時,6,7,8腳保持以前的電平不變,也就是這么操作沒有動作,9腳正常。 如果把那些位操作函數(shù)改成字節(jié)操作的也是正常輸出,就是這個位操作函數(shù)用起來不行,是哪里用的不對? 請指點一二,謝謝! * - 本貼最后修改時間:2007-1-11 14:38:33 修改者:pp99sky
|
| 2樓: | >>參與討論 |
| 作者: starm 于 2007/1/11 14:36:00 發(fā)布:
不用庫函數(shù)直接為PORT賦值測試一下 同時設置4個位: u16 wNewValue; u16 wTemp = GPIO2->PD; dwTemp &= 0x0FFF; dwTemp |= (wNewValue << 12); GPIO2->PD = dwTemp ; * - 本貼最后修改時間:2007-1-11 14:37:56 修改者:starm |
|
| 3樓: | >>參與討論 |
| 作者: pp99sky 于 2007/1/11 14:59:00 發(fā)布:
字節(jié)操作是可以的啊,只是用那幾個位函數(shù)操作起來不行 |
|
| 4樓: | >>參與討論 |
| 作者: John_light 于 2007/1/11 16:20:00 發(fā)布:
試著不在ISR中操作 在主程序中試一試,加延時。 |
|
| 5樓: | >>參與討論 |
| 作者: pp99sky 于 2007/1/11 16:50:00 發(fā)布:
現(xiàn)在找到以下原因,但還有點疑問 GPIO_Config(GPIO2, 0xF000, GPIO_OUT_PP); 這個我沒打開,但是這個配置沒打開怎么會出現(xiàn)上面的操作呢?我又反復操作了幾次,是那里問題。 唉,搞了半天,沒搞明白哪里問題,結果還是自己腦子不怎么好使;前幾天也是,有個問題搞了好幾天沒搞定,后來有天晚上剛躺到床上想到了。身邊也無人可問,也只有上網討教討教了,希望能得到點靈感。其實剛剛就是看到樓上的一句話,我才看到我那個沒打開的。 * - 本貼最后修改時間:2007-1-11 16:53:46 修改者:pp99sky |
|
| 6樓: | >>參與討論 |
| 作者: ST_ARM 于 2007/1/12 10:19:00 發(fā)布:
to pp99sky 你打開GPIO_Config(GPIO2, 0xF000, GPIO_OUT_PP);操作是否正常? 如果你沒有打開上面的設置,GPIO2是上電默認狀態(tài):input pull up/pull down,此時GPIO2的輸出呈現(xiàn)weak Push-Pull,GPIO2的輸出是pull up還是pull down是根據(jù)GPIO2的PD口決定的,例如 GPIO_BitWrite(GPIO2,14,1);你設定14腳呈現(xiàn)pull up,此時14腳是高電平,15腳是低電平。 當你運行GPIO_BitWrite(GPIO2,15,1);時,軟件代碼是先讀取PD口的值,然后與0x8000或一下,再寫入PD口。 。!問題的關鍵是第一次讀取PD的數(shù)據(jù)是來自Input口,讀取的數(shù)據(jù)不是OUTPUT口的數(shù)據(jù)。所以出現(xiàn)你所看到的現(xiàn)象。 |
|
| 7樓: | >>參與討論 |
| 作者: pp99sky 于 2007/1/12 12:31:00 發(fā)布:
好的,謝謝了,打開后正常操作了。 |
|
|
|
| 免費注冊為維庫電子開發(fā)網會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |