اطلاعیه

Collapse
No announcement yet.

نحوه عملکرد دستور GPIO_ReadValue()

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    نحوه عملکرد دستور GPIO_ReadValue()

    نحوه کارکرد دستور GPIO_ReadValue
    من یه برد آموزشی LPC1788 رو تهیه کردم.و دارم رو دستورات CMSIS-CM3 کار میکنم.یکی از دستورات مهم در بخشGPIO دستور GPIO_ReadVale() هستش که برای خواندن مقدار یک پورت است.
    من میخواستم برنامه ای بنویسیم که پایه 17 پورت 1 ، LPC1788 رو بخواند :
    در صورتی که مقدار آن برابر 1 بود پایه 16 پورت 1 را در خروجی 1 کند(چراغ روشن)
    و در غیر اینصورت مقدار پایه 16 پورت 1 را 0 کند (چراغ خاموش)
    اما متأسفانه برنامه درست کار نمیکند.
    می خواستم بدونم مشکل برنامه و یا دستور چیه؟

    کد:
    #include "lpc177x_8x_gpio.h"
    #include "lpc177x_8x_clkpwr.h"
    #include "lpc177x_8x_pinsel.h"
    #include "bsp.h"
    #include "stdio.h"
    
    
    int main (void)
    {
    
    GPIO_SetDir(1 , 0x00010000 , 1);
    
    while (1)
    {
    	  
    	  	  
    	 
    	 	if ( (GPIO_ReadValue(1) & 1<< 17 ) == 0x00020000 )
    	 		 GPIO_SetValue  ( 1 , 1 << 16 );
    	
    	 else
    	 GPIO_ClearValue ( 1 , 0x00010000);
    	}
    }

    #2
    پاسخ : نحوه عملکرد دستور GPIO_ReadValue()

    برای انتخاب پین اگر به این صورت مینویسین،

    16>>1

    کنار عدد یک یه UL بذارید.

    16>>1UL

    برای تمامی شیفت های بزرگتر از 15 این کار رو انجام بدید.

    ارادتمند

    دیدگاه

    لطفا صبر کنید...
    X